明次 发表于 2011-6-22 22:52

ESP定律脱UPX壳笔记

本帖最后由 明次 于 2011-6-22 22:54 编辑

1.随便找个加了UPX壳的程序,我就用C++写了个Hello world,然后加上UPX壳


2.用OD导入
00486520 > $60            pushad               ;我们停在这里
00486521   .BE 00F04600   mov esi,1.0046F000
00486526   .8DBE 0020F9FF lea edi,dword ptr ds:
0048652C   .57            push edi
0048652D   .83CD FF       or ebp,FFFFFFFF
00486530   .EB 10         jmp short 1.00486542

3.按F8   来到00486521然后看寄存器面板,如图


4.在ESP值中点“数据窗口中跟随”如图


5.看数据面板,下硬件断点   如图


6.运行程序,然后会跳到这里:
0048668B   .8D4424 80   lea eax,dword ptr ss: ;停在这里
0048668F   >6A 00         push 0
00486691   .39C4          cmp esp,eax
00486693   .^ 75 FA         jnz short 1.0048668F       ;往上跳,别实现
00486695   .83EC 80       sub esp,-80                  ;F4
00486698   .- E9 C3E3F9FF   jmp 1.00424A60         ;重点
此时离OEP(程序真正的入口点)也不远了,不过有个地方要注意一下
在00486693这个跳是往上跳的,不要实现。所以我们直接在下一行(也就是00486695)按F4
然后可以一直走了,一直走到00486698,注意这个跳,从00486698跳到00424A60对于这个Hello world程序来说,这是一个很大的跳转,经验告诉我们,这是跳到OEP的所以继续走我们就来到OEP了
OEP:
00424A60    55            push ebp
00424A61    8BEC            mov ebp,esp
00424A63    6A FF         push -1
00424A65    68 A8104700   push 1.004710A8
00424A6A    68 2CF54200   push 1.0042F52C
00424A6F    64:A1 00000000mov eax,dword ptr fs:
00424A75    50            push eax
00424A76    64:8925 0000000>mov dword ptr fs:,esp
00424A7D    83C4 F0         add esp,-10
00424A80    53            push ebx
00424A81    56            push esi
00424A82    57            push edi
00424A83    8965 E8         mov dword ptr ss:,esp
00424A86    FF15 B8014800   call dword ptr ds:               ; kernel32.GetVersion
00424A8C    A3 84E34700   mov dword ptr ds:,eax
00424A91    A1 84E34700   mov eax,dword ptr ds:

最后. 开始脱壳,可以用OD插件“脱壳调试进程”进行脱壳如图




最后别忘了PEID查下是否脱壳成功


CM下载:

Sloth 发表于 2011-6-22 23:48

不错啊,太牛逼了次哥

喜欢做娃娃 发表于 2011-6-22 23:59

还可以~~呵呵~~谢谢分享学习

Smallsea 发表于 2011-6-23 00:02

试试ESP插件

huitian200 发表于 2011-6-23 12:49

两次内存断点,直接定位到OEP!

明次 发表于 2011-6-23 12:59

回复 小妒 的帖子

{:1_920:} 谢谢驴师傅

sonjab 发表于 2011-6-25 10:11

我记得有位大牛说过:ESP简单过程:F8 1次 → 下hr esp 断点 → F9 运行 → F8 2次 → 到达OEP

仅有的温柔 发表于 2011-6-25 10:25

lonie 发表于 2011-6-25 11:35

sonjab 发表于 2011-6-25 10:11 static/image/common/back.gif
我记得有位大牛说过:ESP简单过程:F8 1次 → 下hr esp 断点 → F9 运行 → F8 2次 → 到达OEP

这个ESp都是这样?学习了!!!

明次 发表于 2011-6-25 13:15

回复 lonie 的帖子

ESP多很简单的
页: [1] 2 3 4 5
查看完整版本: ESP定律脱UPX壳笔记