用OD载入程序后。
确定一个入口警告,然后Od提示程序加壳,选不继续分析。
停在这里
0040C000 n> /EB 06 jmp short note_aPl.0040C008 开始地点。
0040C002 |68 CC100000 push 10CC
0040C007 |C3 retn
0040C008 \9C pushfd 注意PECompactd的壳比UPX,Aspack多了这个指令。
0040C009 60 pushad 出口处看到与之对应的语句就应知道入口点就在附近。
0040C00A E8 02000000 call note_aPl.0040C011 一看就应用F7过,变形的Jmp
0040C00F 33C0 xor eax, eax
0040C011 8BC4 mov eax, esp Call这里,很近。
0040C013 83C0 04 add eax, 4
0040C016 93 xchg eax, ebx
0040C017 8BE3 mov esp, ebx
0040C019 8B5B FC mov ebx, dword ptr ds:[ebx-4]
0040C01C 81EB 3F904000 sub ebx, note_aPl.0040903F
0040C022 87DD xchg ebp, ebx
...........................................为节省篇幅,略去一些不重要的代码,今后不再赘述。
0040C06C 8DB5 AC904000 lea esi, dword ptr ss:[ebp+4090AC>
0040C072 B9 40040000 mov ecx, 440
0040C077 F3:A5 rep movs dword ptr es:[edi], dwor>
0040C079 8BFB mov edi, ebx
0040C07B C3 retn 返回。
0040D17B BD CF400000 mov ebp, 40CF 到这里。
0040D180 8BF7 mov esi, edi
0040D182 83C6 54 add esi, 54
0040D185 81C7 FF100000 add edi, 10FF
...........................................
0040D19E F3:A5 rep movs dword ptr es:[edi], dwor>
0040D1A0 03C8 add ecx, eax
0040D1A2 83E1 03 and ecx, 3
0040D1A5 F3:A4 rep movs byte ptr es:[edi], byte >
0040D1A7 EB 26 jmp short note_aPl.0040D1CF 跳走。
0040D1CF 8BB5 E6904000 mov esi, dword ptr ss:[ebp+4090E6>; note_aPl.00400000 到这里。
0040D1D5 56 push esi
0040D1D6 03B5 EE904000 add esi, dword ptr ss:[ebp+4090EE>
0040D1DC 83C6 14 add esi, 14
0040D1DF 03B5 35974000 add esi, dword ptr ss:[ebp+409735>
0040D1E5 8DBD 39974000 lea edi, dword ptr ss:[ebp+409739>
0040D1EB B9 06000000 mov ecx, 6
0040D1F0 F3:A5 rep movs dword ptr es:[edi], dwor>
...........................................
0040D210 8BB5 DE904000 mov esi, dword ptr ss:[ebp+4090DE>
0040D216 80BD 6B9D4000 C>cmp byte ptr ss:[ebp+409D6B], 0C3
0040D21D 74 2E je short note_aPl.0040D24D 跳走。
0040D24D 57 push edi
0040D24E AD lods dword ptr ds:[esi]
0040D24F 85C0 test eax, eax
0040D251 0F84 9B000000 je note_aPl.0040D2F2 这个跳转很大,但是没跳走,先记住,如果下面的语句有往回跳转无法往后继续走,我们再试试这里。
0040D257 8BD0 mov edx, eax
0040D259 0395 E6904000 add edx, dword ptr ss:[ebp+4090E6>
0040D25F AD lods dword ptr ds:[esi]
0040D260 56 push esi
0040D261 8BC8 mov ecx, eax
0040D263 57 push edi
0040D264 52 push edx
0040D265 8DB5 6BA14000 lea esi, dword ptr ss:[ebp+40A16B>
0040D26B 57 push edi
0040D26C 51 push ecx
0040D26D 52 push edx
0040D26E 6A 40 push 40
0040D270 56 push esi
0040D271 FFB5 3D974000 push dword ptr ss:[ebp+40973D]
0040D277 FFB5 39974000 push dword ptr ss:[ebp+409739]
0040D27D E8 B8090000 call note_aPl.0040DC3A
...........................................
0040D2AA /74 07 je short note_aPl.0040D2B3
0040D2AC |8BC8 mov ecx, eax
0040D2AE |5E pop esi
0040D2AF |5F pop edi
0040D2B0 ^|EB 9B jmp short note_aPl.0040D24D 果然往回跳转。
0040D2B2 B9 E8000000 mov ecx, 0E8 F4无法到达这句,程序运行了。
0040D2B7 005D 81 add byte ptr ss:[ebp-7F], bl
0040D2BA ED in eax, dx
Ctrl+F2重新加载程序,重新来到我们刚才发现的0040D251处,回车。
0040D2F2 5F pop edi 到这里,F2下断点,F9运行跳出循环到这里后再F2取消断点。
0040D2F3 8BB5 E2904000 mov esi, dword ptr ss:[ebp+4090E2>
0040D2F9 AD lods dword ptr ds:[esi]
0040D2FA 83F8 FF cmp eax, -1
0040D2FD 74 74 je short note_aPl.0040D373这个跳转很大,但是没跳走,先记住,如果下面的语句有往回跳转无法往后继续走,我们再试试这里。
0040D2FF 0385 E6904000 add eax, dword ptr ss:[ebp+4090E6>
0040D305 8BD8 mov ebx, eax
0040D307 AD lods dword ptr ds:[esi]
0040D308 0385 E6904000 add eax, dword ptr ss:[ebp+4090E6>
...........................................
0040D361 8BD1 mov edx, ecx
0040D363 C1F9 02 sar ecx, 2
0040D366 F3:AB rep stos dword ptr es:[edi]
0040D368 03CA add ecx, edx
0040D36A 83E1 03 and ecx, 3
0040D36D F3:AA rep stos byte ptr es:[edi]
0040D36F 5F pop edi
0040D370 ^ EB 87 jmp short note_aPl.0040D2F9 果然往回跳转。
0040D372 0F6800 punpckhbw mm0, qword ptr ds:[eax] F4无法到达这句,程序运行了。
0040D375 40 inc eax
0040D376 0000 add byte ptr ds:[eax], al
...........................................
Ctrl+F2重新加载程序,重新来到我们刚才发现的0040D2FD处,回车。
上一页 1 2 3 4 5 下一页|