|
发表于 2022-11-26 17:24:27
|
显示全部楼层
- 00401100 /$ 8BFF mov edi, edi <--- malloc()
- 00401102 |. 55 push ebp
- 00401103 |. 8BEC mov ebp, esp
- 00401105 |. 56 push esi
- 00401106 |. 8B75 08 mov esi, dword ptr [ebp+8]
- 00401109 |. 83FE E0 cmp esi, -20
- 0040110C |. 0F87 A1000000 ja 004011B3
- 00401112 |. 53 push ebx
- 00401113 |. 57 push edi
- 00401114 |. 8B3D 08804000 mov edi, dword ptr [<&KERNEL32.HeapAlloc>] <--- edi = ntdll.RtlAllocateHeap
- 0040111A |> 833D 6CAC4000 00 /cmp dword ptr [40AC6C], 0
- 00401121 |. 75 18 |jnz short 0040113B
- 00401123 |. E8 F7150000 |call 0040271F
- 00401128 |. 6A 1E |push 1E
- 0040112A |. E8 45140000 |call 00402574
- 0040112F |. 68 FF000000 |push 0FF
- 00401134 |. E8 87110000 |call 004022C0
- 00401139 |. 59 |pop ecx
- 0040113A |. 59 |pop ecx
- 0040113B |> A1 F4B74000 |mov eax, dword ptr [40B7F4]
- 00401140 |. 83F8 01 |cmp eax, 1
- 00401143 |. 75 0E |jnz short 00401153
- 00401145 |. 85F6 |test esi, esi
- 00401147 |. 74 04 |je short 0040114D
- 00401149 |. 8BC6 |mov eax, esi
- 0040114B |. EB 03 |jmp short 00401150
- 0040114D |> 33C0 |xor eax, eax
- 0040114F |. 40 |inc eax
- 00401150 |> 50 |push eax
- 00401151 |. EB 1C |jmp short 0040116F
- 00401153 |> 83F8 03 |cmp eax, 3
- 00401156 |. 75 0B |jnz short 00401163
- 00401158 |. 56 |push esi
- 00401159 |. E8 53FFFFFF |call 004010B1
- 0040115E |. 59 |pop ecx
- 0040115F |. 85C0 |test eax, eax
- 00401161 |. 75 16 |jnz short 00401179
- 00401163 |> 85F6 |test esi, esi
- 00401165 |. 75 01 |jnz short 00401168
- 00401167 |. 46 |inc esi
- 00401168 |> 83C6 0F |add esi, 0F
- 0040116B |. 83E6 F0 |and esi, FFFFFFF0
- 0040116E |. 56 |push esi
- 0040116F |> 6A 00 |push 0
- 00401171 |. FF35 6CAC4000 |push dword ptr [40AC6C]
- 00401177 |. FFD7 |call edi <--- 调用 ntdll.RtlAllocateHeap()
- 00401179 |> 8BD8 |mov ebx, eax
- 0040117B |. 85DB |test ebx, ebx
- 0040117D |. 75 2E |jnz short 004011AD
- 0040117F |. 6A 0C |push 0C
- 00401181 |. 5E |pop esi
- 00401182 |. 3905 10B14000 |cmp dword ptr [40B110], eax
- 00401188 |. 74 15 |je short 0040119F
- 0040118A |. FF75 08 |push dword ptr [ebp+8] ; /Arg1
- 0040118D |. E8 D5150000 |call 00402767 ; \x.00402767
- 00401192 |. 59 |pop ecx
- 00401193 |. 85C0 |test eax, eax
- 00401195 |. 74 0F |je short 004011A6
- 00401197 |. 8B75 08 |mov esi, dword ptr [ebp+8]
- 0040119A |.^ E9 7BFFFFFF \jmp 0040111A
- 0040119F |> E8 ED010000 call 00401391
- 004011A4 |. 8930 mov dword ptr [eax], esi
- 004011A6 |> E8 E6010000 call 00401391
- 004011AB |. 8930 mov dword ptr [eax], esi
- 004011AD |> 5F pop edi
- 004011AE |. 8BC3 mov eax, ebx
- 004011B0 |. 5B pop ebx
- 004011B1 |. EB 14 jmp short 004011C7
- 004011B3 |> 56 push esi ; /Arg1
- 004011B4 |. E8 AE150000 call 00402767 ; \x.00402767
- 004011B9 |. 59 pop ecx
- 004011BA |. E8 D2010000 call 00401391
- 004011BF |. C700 0C000000 mov dword ptr [eax], 0C
- 004011C5 |. 33C0 xor eax, eax
- 004011C7 |> 5E pop esi
- 004011C8 |. 5D pop ebp
- 004011C9 \. C3 retn
复制代码
这是 VC9 的 malloc() 函数的反汇编,可以看出,它依托的是 ntdll.RtlAllocateHeap() |
|