看了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直播授课