| 关键词: nbsp 0040 NOTEPAD short edi 80040 eax ptr dword mov |
首先,查壳,使用PEID或者是FI,为UPX 0.89接下来用OD载入,提示为“压缩代码是否继续分析”,我们选择否我在这里介绍几种方法,请看我的操作。方法1:单步跟踪(最常见的方法)0040E8C0 N> 60 pushad //停在这里了,我们F8单步0040E8C1 BE 15B04000 mov esi,NOTEPAD.0040B0150040E8C6 8DBE EB5FFFFF lea edi,dword ptr ds:[esi+FFFF>0040E8CC 57 push edi0040E8CD 83CD FF or ebp,FFFFFFFF0040E8D0 EB 10 jmp short NOTEPAD.0040E8E2 //跳。。。。。。。。。。0040E8E2 8B1E mov ebx,dword ptr ds:[esi] //跳到这里,继续单步0040E8E4 83EE FC sub esi,-40040E8E7 11DB adc ebx,ebx0040E8E9 ^ 72 ED jb short NOTEPAD.0040E8D8 //这里要往回跳了0040E8EB B8 01000000 mov eax,1 //F4,然后继续F80040E8F0 01DB add ebx,ebx0040E8F2 75 07 jnz short NOTEPAD.0040E8FB //跳。。。。。。。。。。。0040E8FB 11C0 adc eax,eax //来到这里,F8继续0040E8FD 01DB add ebx,ebx0040E8FD 01DB add ebx,ebx0040E8FF ^ 73 EF jnb short NOTEPAD.0040E8F00040E901 75 09 jnz short NOTEPAD.0040E90C //跳。。。。。。。。。。。0040E90C 31C9 xor ecx,ecx //跳到这里,继续F80040E90E 83E8 03 sub eax,30040E90E 83E8 03 sub eax,30040E911 72 0D jb short NOTEPAD.0040E920 //跳。。。。。。。。。。。0040E920 01DB add ebx,ebx //跳到这里,继续F80040E922 75 07 jnz short NOTEPAD.0040E92B //跳。。。。。。。。。。。0040E92B 11C9 adc ecx,ecx //跳到了这里,继续F80040E92D 01DB add ebx,ebx0040E92F 75 07 jnz short NOTEPAD.0040E938 //跳。。。。。。。。。。。0040E938 11C9 adc ecx,ecx //跳到这里,继续F80040E93A 75 20 jnz short NOTEPAD.0040E95C //跳。。。。。。。。。。。0040E95C 81FD 00F3FFFF cmp ebp,-0D00 //来到这,继续F80040E962 83D1 01 adc ecx,10040E965 8D142F lea edx,dword ptr ds:[edi+ebp]0040E968 83FD FC cmp ebp,-40040E96B 76 0F jbe short NOTEPAD.0040E97C0040E96D 8A02 mov al,byte ptr ds:[edx]0040E96F 42 inc edx0040E970 8807 mov byte ptr ds:[edi],al0040E972 47 inc edi0040E973 49 dec ecx0040E974 ^ 75 F7 jnz short NOTEPAD.0040E96D //要往回跳了0040E976 ^ E9 63FFFFFF jmp NOTEPAD.0040E8DE0040E97B 90 nop0040E97C 8B02 mov eax,dword ptr ds:[edx] //在这里F4,继续F80040E97E 83C2 04 add edx,40040E981 8907 mov dword ptr ds:[edi],eax0040E983 83C7 04 add edi,40040E986 83E9 04 sub ecx,40040E989 ^ 77 F1 ja short NOTEPAD.0040E97C0040E98B 01CF add edi,ecx0040E98D ^ E9 4CFFFFFF jmp NOTEPAD.0040E8DE //要往回跳了。0040E992 5E pop esi //这里F4,继续F80040E993 89F7 mov edi,esi 0040E995 B9 DD000000 mov ecx,0DD0040E99A 8A07 mov al,byte ptr ds:[edi]0040E99C 47 inc edi0040E99D 2C E8 sub al,0E80040E99F 3C 01 cmp al,10040E9A1 ^ 77 F7 ja short NOTEPAD.0040E99A //要往回跳了0040E9A3 803F 00 cmp byte ptr ds:[edi],0 //这里F4,继续F80040E9A6 ^ 75 F2 jnz short NOTEPAD.0040E99A //要往回跳了0040E9A8 8B07 mov eax,dword ptr ds:[edi] //这里F4,继续F80040E9AA 8A5F 04 mov bl,byte ptr ds:[edi+4]0040E9AD 66:C1E8 08 shr ax,80040E9B1 C1C0 10 rol eax,100040E9B4 86C4 xchg ah,al0040E9B6 29F8 sub eax,edi0040E9B8 80EB E8 sub bl,0E80040E9BB 01F0 add eax,esi0040E9BD 8907 mov dword ptr ds:[edi],eax0040E9BF 83C7 05 add edi,50040E9C2 89D8 mov eax,ebx0040E9C4 ^ E2 D9 loopd short NOTEPAD.0040E99F //要往回跳了0040E9C6 8DBE 00C00000 lea edi,dword ptr ds:[esi+C000> //这里F4,继续F80040E9CC 8B07 mov eax,dword ptr ds:[edi]0040E9CE 09C0 or eax,eax0040E9D0 74 3C je short NOTEPAD.0040EA0E0040E9D2 8B5F 04 mov ebx,dword ptr ds:[edi+4]0040E9D5 8D8430 14EC00>lea eax,dword ptr ds:[eax+esi+>0040E9DC 01F3 add ebx,esi0040E9DE 50 push eax0040E9DF 83C7 08 add edi,80040E9E2 FF96 A0EC0000 call dword ptr ds:[esi+ECA0]0040E9E8 95 xchg eax,ebp0040E9E9 8A07 mov al,byte ptr ds:[edi]0040E9EB 47 inc edi0040E9EC 08C0 or al,al0040E9EE ^ 74 DC je short NOTEPAD.0040E9CC0040E9F0 89F9 mov ecx,edi0040E9F2 57 push edi0040E9F3 48 dec eax0040E9F4 F2:AE repne scas byte ptr es:[edi]0040E9F6 55 push ebp0040E9F7 FF96 A4EC0000 call dword ptr ds:[esi+ECA4]0040E9FD 09C0 or eax,eax0040E9FF 74 07 je short NOTEPAD.0040EA080040EA01 8903 mov dword ptr ds:[ebx],eax0040EA03 83C3 04 add ebx,40040EA06 ^ EB E1 jmp short NOTEPAD.0040E9E9 //要往回跳了0040EA08 FF96 A8EC0000 call dword ptr ds:[esi+ECA8]0040EA0E 61 popad //这里F4,继续F80040EA0F - E9 B826FFFF jmp NOTEPAD.004010CC //在这里直接跳到了OEP。。。。。。。。。。。。。。。。。。。004010CC 55 push ebp //来到这里,在此dump004010CD 8BEC mov ebp,esp004010CF 83EC 44 sub esp,44方法2:ESP定律手动脱壳0040E8C0 N> 60 pushad //停在这里了,我们F8单步0040E8C1 BE 15B04000 mov esi,NOTEPAD.0040B015 //ESP突现,0012FFA4命令:dd 0012FFA4回车, 断点--硬件访问--WORD,F9运行,直接来到这里0040EA0F - E9 B826FFFF jmp NOTEPAD.004010CC //来到这,F8单步就到了OEP不详述,和方法一一样了方法3:捷径(也是前辈们总结出来的方法)直接CTRL+F,输入popad0040EA0E 61 popad //F2下断,F9运行,F2取消断点,单步F80040EA0F - E9 B826FFFF jmp NOTEPAD.004010CC |
|
声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系
[邮箱地址] 删除
|