首页
社区
课程
招聘
[旧帖] [原创][原创]在朋友的帮助下第一次写文章『申请邀请码』 0.00雪花
发表于: 2009-7-27 07:08 1322

[旧帖] [原创][原创]在朋友的帮助下第一次写文章『申请邀请码』 0.00雪花

2009-7-27 07:08
1322
我是个新手,是来学习的,此篇文章由朋友捉笔代刀,发此篇文章只为了申请邀请码,有了邀请码才能进入论坛学习。文章有雷同之处,还请见谅,谢谢!!
手脱UPX的四种方法

首先,查壳,使用PEID是UPX 0.89.6 - 1.02 / 1.05 - 1.24 -> Markus & Laszlo,使用FI为UPX v1.08
接下来用OD载入,提示为"压缩代码是否继续分析",我们选择否
我在这里介绍几种方法,请看我的操作。

方法1:单步跟踪(最常见的方法)
0040E8C0 N>  60            pushad       //停在这里了,我们F8单步
0040E8C1     BE 15B04000   mov esi,NOTEPAD.0040B015
0040E8C6     8DBE EB5FFFFF lea edi,dword ptr ds:[esi+FFFF>
0040E8CC     57            push edi
0040E8CD     83CD FF       or ebp,FFFFFFFF
0040E8D0     EB 10         jmp short NOTEPAD.0040E8E2      //跳
》》》》
0040E8E2     8B1E          mov ebx,dword ptr ds:[esi]  //跳到这里
0040E8E4     83EE FC       sub esi,-4
0040E8E7     11DB          adc ebx,ebx
0040E8E9   ^ 72 ED         jb short NOTEPAD.0040E8D8  //这里要往回跳了
0040E8EB     B8 01000000   mov eax,1                 //F4,然后继续F8
0040E8F0     01DB          add ebx,ebx
0040E8F2     75 07         jnz short NOTEPAD.0040E8FB          //跳
》》》》
0040E8FB     11C0          adc eax,eax        //来到这里,F8继续
0040E8FD     01DB          add ebx,ebx
0040E8FD     01DB          add ebx,ebx
0040E8FF   ^ 73 EF         jnb short NOTEPAD.0040E8F0
0040E901     75 09         jnz short NOTEPAD.0040E90C         //跳
》》》》
0040E90C     31C9          xor ecx,ecx         //跳到这里,继续F8
0040E90E     83E8 03       sub eax,3
0040E90E     83E8 03       sub eax,3
0040E911     72 0D         jb short NOTEPAD.0040E920        //跳
》》》》
0040E920     01DB          add ebx,ebx            //跳到这里,继续F8
0040E922     75 07         jnz short NOTEPAD.0040E92B         //跳
》》》
0040E92B     11C9          adc ecx,ecx      //跳到了这里,继续F8
0040E92D     01DB          add ebx,ebx
0040E92F     75 07         jnz short NOTEPAD.0040E938        //跳
》》》
0040E938     11C9          adc ecx,ecx       //跳到这里,继续F8
0040E93A     75 20         jnz short NOTEPAD.0040E95C   //跳
》》》》
0040E95C     81FD 00F3FFFF cmp ebp,-0D00         //来到这,继续F8
0040E962     83D1 01       adc ecx,1
0040E965     8D142F        lea edx,dword ptr ds:[edi+ebp]
0040E968     83FD FC       cmp ebp,-4
0040E96B     76 0F         jbe short NOTEPAD.0040E97C
0040E96D     8A02          mov al,byte ptr ds:[edx]
0040E96F     42            inc edx
0040E970     8807          mov byte ptr ds:[edi],al
0040E972     47            inc edi
0040E973     49            dec ecx
0040E974   ^ 75 F7         jnz short NOTEPAD.0040E96D     //要往回跳了
0040E976   ^ E9 63FFFFFF   jmp NOTEPAD.0040E8DE
0040E97B     90            nop
0040E97C     8B02          mov eax,dword ptr ds:[edx]// F4,继续F8
0040E97E     83C2 04       add edx,4
0040E981     8907          mov dword ptr ds:[edi],eax
0040E983     83C7 04       add edi,4
0040E986     83E9 04       sub ecx,4
0040E989   ^ 77 F1         ja short NOTEPAD.0040E97C
0040E98B     01CF          add edi,ecx
0040E98D   ^ E9 4CFFFFFF   jmp NOTEPAD.0040E8DE    //要往回跳了。
0040E992     5E            pop esi      //这里F4,继续F8
0040E993     89F7          mov edi,esi 
0040E995     B9 DD000000   mov ecx,0DD
0040E99A     8A07          mov al,byte ptr ds:[edi]
0040E99C     47            inc edi
0040E99D     2C E8         sub al,0E8
0040E99F     3C 01         cmp al,1
0040E9A1   ^ 77 F7         ja short NOTEPAD.0040E99A   //要往回跳了
0040E9A3     803F 00       cmp byte ptr ds:[edi],0   //这里F4,继续F8
0040E9A6   ^ 75 F2         jnz short NOTEPAD.0040E99A   //要往回跳了
0040E9A8     8B07          mov eax,dword ptr ds:[edi]  // F4,继续F8
0040E9AA     8A5F 04       mov bl,byte ptr ds:[edi+4]
0040E9AD     66:C1E8 08    shr ax,8
0040E9B1     C1C0 10       rol eax,10
0040E9B4     86C4          xchg ah,al
0040E9B6     29F8          sub eax,edi
0040E9B8     80EB E8       sub bl,0E8
0040E9BB     01F0          add eax,esi
0040E9BD     8907          mov dword ptr ds:[edi],eax
0040E9BF     83C7 05       add edi,5
0040E9C2     89D8          mov eax,ebx
0040E9C4   ^ E2 D9         loopd short NOTEPAD.0040E99F  //要往回跳了
0040E9C6     8DBE 00C00000 lea edi,dword ptr ds:[esi+C000> //F4继续F8
0040E9CC     8B07          mov eax,dword ptr ds:[edi]
0040E9CE     09C0          or eax,eax
0040E9D0     74 3C         je short NOTEPAD.0040EA0E
0040E9D2     8B5F 04       mov ebx,dword ptr ds:[edi+4]
0040E9D5     8D8430 14EC00>lea eax,dword ptr ds:[eax+esi+>
0040E9DC     01F3          add ebx,esi
0040E9DE     50            push eax
0040E9DF     83C7 08       add edi,8
0040E9E2     FF96 A0EC0000 call dword ptr ds:[esi+ECA0]
0040E9E8     95            xchg eax,ebp
0040E9E9     8A07          mov al,byte ptr ds:[edi]
0040E9EB     47            inc edi
0040E9EC     08C0          or al,al
0040E9EE   ^ 74 DC         je short NOTEPAD.0040E9CC
0040E9F0     89F9          mov ecx,edi
0040E9F2     57            push edi
0040E9F3     48            dec eax
0040E9F4     F2:AE         repne scas byte ptr es:[edi]
0040E9F6     55            push ebp
0040E9F7     FF96 A4EC0000 call dword ptr ds:[esi+ECA4]
0040E9FD     09C0          or eax,eax
0040E9FF     74 07         je short NOTEPAD.0040EA08
0040EA01     8903          mov dword ptr ds:[ebx],eax
0040EA03     83C3 04       add ebx,4
0040EA06   ^ EB E1         jmp short NOTEPAD.0040E9E9    //要往回跳了
0040EA08     FF96 A8EC0000 call dword ptr ds:[esi+ECA8]
0040EA0E     61            popad                  //这里F4,继续F8
0040EA0F   - E9 B826FFFF   jmp NOTEPAD.004010CC  //在这里直接跳到了OEP
》》》》
004010CC     55            push ebp       //来到这里,在此dump
004010CD     8BEC          mov ebp,esp
004010CF     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 //来到这单步就到了OEP

不详述,和方法一一样了

方法3:内存镜像法
(由于经过了方法2和方法3大家都熟悉了代码,我在这里就不写了)

ALT+M打开内存
找到.rsrc,F2下断,F9运行
。。。。。。

ALT+M打开内存
找到UPX0,F2下断,F9运行

0040EA01     8903          mov dword ptr ds:[ebx],eax//来到这,F8继续
0040EA03     83C3 04       add ebx,4
0040EA06   ^ EB E1         jmp short NOTEPAD.0040E9E9
0040EA08     FF96 A8EC0000 call dword ptr ds:[esi+ECA8]
0040EA0E     61            popad
0040EA0F   - E9 B826FFFF   jmp NOTEPAD.004010CC

其他的就不说了~请看动画。

方法4:捷径
直接CTRL+F,输入popad
0040EA0E     61            popad//F2下断,F9运行,F2取消断点,单步F8
0040EA0F   - E9 B826FFFF   jmp NOTEPAD.004010CC

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (8)
雪    币: 111
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
这个,看起来好像……,估计有些难!

不知道版主大人如何看待了!
2009-7-27 08:04
0
雪    币: 2067
活跃值: (82)
能力值: ( LV9,RANK:180 )
在线值:
发帖
回帖
粉丝
3
复制/贴上

其他的就不说了~请看动画。
2009-7-27 09:33
0
雪    币: 234
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
文章虽不够通俗易懂,不过应该也能合格(前提原创)
2009-7-27 10:09
0
雪    币: 9
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
差不多应该!!!
2009-7-27 10:19
0
雪    币: 29
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
不错不错
2009-7-27 10:22
0
雪    币: 1334
活跃值: (15)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
楼主, 审核是人工审核,不是程序机器人审核,呵呵
2009-7-27 10:24
0
雪    币: 89
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
我估计过不了吧?
黑鹰的教程里面有- -还是动画的
2009-7-27 23:27
0
雪    币: 2362
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
其他的就不说了~请看动画。
2009-7-28 23:13
0
游客
登录 | 注册 方可回帖
返回
//