首页
社区
课程
招聘
[旧帖] [求助]请教2个IDA使用的问题。 0.00雪花
发表于: 2011-5-2 00:59 1167

[旧帖] [求助]请教2个IDA使用的问题。 0.00雪花

2011-5-2 00:59
1167
看了http://www.pediy.com/practise/IDA.htm,学了不少,也有几个问题。

1. 关于bitfield在代码中的使用。
我自己的是这样
.text:00411D30                    ; int __cdecl check_software(software_info_t software_info)
.text:00411D30                    _check_software proc near               ; CODE XREF: j__check_softwarej
.text:00411D6E 0DC C1 E8 02                       shr     eax, 2
.text:00411D71 0DC 83 E0 07                       and     eax, 7
.text:00411D74 0DC 83 E0 04                       and     eax, 4
教程里的是这样,是怎么定义出来的?
shr edx, 2
and edx, (WINDOWS or DOS or OS_X) >> 2
test dl, OS_X >> 2
print_software()函数里有同样的问题。
2. main()函数里的代码
.text:00412321 0F4 8B 45 E0                       mov     eax, [ebp+products]
.text:00412324 0F4 C7 80 88 00 00+                mov     dword ptr [eax+88h], 2
.text:0041232E 0F4 8B 45 E0                       mov     eax, [ebp+products]
.text:00412331 0F4 C7 80 8C 00 00+                mov     dword ptr [eax+8Ch], SOFTWARE
.text:0041233B 0F4 8B 7D E0                       mov     edi, [ebp+products]
.text:0041233E 0F4 81 C7 90 00 00+                add     edi, 90h
.text:00412344 0F4 B9 09 00 00 00                 mov     ecx, 9
.text:00412349 0F4 BE 24 91 41 00                 mov     esi, offset _softwares.softs
.text:0041234E 0F4 F3 A5                          rep movsd
教程中配置成如下,不知道是怎么把offset 88配置成数组的?
mov   dword ptr [ebx+product_t[1].id], 2
mov   dword ptr [ebx+product_t[1].category], SOFTWARE
mov   esi, offset softwares.softs
lea   edi, [ebx+product_t[1].p.software]
mov   ecx, 9
rep movsd

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (3)
雪    币: 349
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
第二个问题可以在栈帧中自定义结构体。第一个问题没弄过。
2011-5-2 08:26
0
雪    币: 113
活跃值: (100)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
3
我已经定义了product_t这个结构体,

00000000 product_t struc ; (sizeof=0x88)
00000000 id dd ?
00000004 product_category dd ? ; enum product_category_t
00000008 p product_u ?
00000088 product_t ends

第1个元素的显示是没有问题的,

.text:004122FC 0F4 8B 45 E0                 mov eax, [ebp+products]
.text:004122FF 0F4 C7 00 01 00 00+         mov [eax+product_t.id], 1
.text:00412305 0F4 8B 45 E0                 mov eax, [ebp+products]
.text:00412308 0F4 C7 40 04 00 00+         mov [eax+product_t.product_category], BOOK
.text:0041230F 0F4 8B 7D E0                 mov edi, [ebp+products]
.text:00412312 0F4 83 C7 08                 add edi, product_t.p.book.title
.text:00412315 0F4 B9 20 00 00 00         mov ecx, 20h
.text:0041231A 0F4 BE A0 90 41 00         mov esi, offset _ida_book
.text:0041231F 0F4 F3 A5                 rep movsd

后面的就不知道怎么把ida view里显示的地址转变成数组的形式了。即products[i]的形式。
下面的效果应该是
.text:00412324 0F4 C7 80 88 00 00+ mov dword ptr [eax+88h], 2
这样
.text:00412324 0F4 C7 80 88 00 00+ mov dword ptr [eax+products[1].id], 2
2011-5-2 10:56
0
雪    币: 113
活跃值: (100)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
4
有没有人指点一下?不会只有我碰到这个问题了吧。
又碰到一个没搞明白,如果看的是C++的code,能够定义class嘛?
2011-5-4 09:48
0
游客
登录 | 注册 方可回帖
返回
//