首页 网络安全 安全学院 查看内容

手脱UPX的三种方法

2009-8-3 13:13 881 0

摘要: 首先,查壳,使用PEID或者是FI,为UPX 0.89接下来用OD载入,提示为“压缩代码是否继续分析”,我们选择否我在这里介绍几种方法,请看我的操作。方法1:单步跟踪(最常见的方法)0040E8C0 ...
关键词: 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
声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系 [邮箱地址] 删除

路过

雷人

握手

鲜花

鸡蛋

最新评论

返回顶部