WEB开发网
开发学院网络安全黑客技术 脱壳基础知识入门 阅读

脱壳基础知识入门

 2007-01-14 20:15:39 来源:WEB开发网   
核心提示: 上图相关代码如下:0040EA0E61popad//注意这里的popad指令,和开始的pushad对应0040EA0F-E9B826FFFFjmp004010CC//这里跳到OEP,将光标移到这,脱壳基础知识入门(10),按F4执行到这行这一句0040EA0Fjmp004010CC就是跳到

上图相关代码如下:

0040EA0E  61       popad      //注意这里的popad指令,和开始的pushad对应      

0040EA0F -E9B826FFFF  jmp  004010CC //这里跳到OEP,将光标移到这,按F4执行到这行

这一句0040EA0F jmp 004010CC就是跳到OEP的指令,执行到这,UPX外壳己将程序解压完毕,并模拟Windows加载器的将原始程序加载到内存,004010CC就是映射到内存目标程序的入口点,此时就可抓取内存映像文件了。

2.根据堆栈平衡原理找OEP

这个堆栈平衡原理其找OEP原理这篇文档描述的比较详细:寻找真正的入口(OEP)--广义ESP定律作者:Lenus

操作方法:多数壳在运行到OEP的时候ESP=0012FFC4,这就是说程序的第一句是对0012FFC0进行写入操作,只要在0012FFC0下硬件写入断点(命令行里键入HW12FFC0),我们就能停在OEP的第二句处。

用OllyDBG重新加载实例程序notepad.upx.exe,在命令行下硬件写断点:

按F9执行程序,就会中断在OEP第二行:

此时如果将光标向上移,会发现第一句代码变乱了:

004010C7  000D0A000055 add  [5500000A],cl
004010CD  8BEC     mov  ebp,esp

这是因为Ollydbg将数据当汇编代码来分析了,你可以按Ctrl+ALT+向上光标键将当前显示的代码向上滚动一个字节就可看到正确的汇编代码了:

004010CC  55       push  ebp
004010CD  8BEC      mov  ebp,esp //中断在这行
004010CF  83EC44    sub  esp,44
004010D2  56       push  esi
004010D3  FF15E4634000 call  [4063E4]            ;kernel32.GetCommandLineA

中断后,别忘点击菜单“调试/硬件断点/”打开硬件断点面板,将刚才的硬件断点删除。

上一页  5 6 7 8 9 10 

Tags:脱壳 基础知识 入门

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接