[QUOTE=kanxue;316868]Neolite 是一款压缩壳,掌握一些手工脱壳方法很容易脱的:
[置顶] 【2.25更新】脱壳基础知识入门及FAQ[/QUOTE]
謝謝!!
1.根据跨段指令寻找OEP
推荐用Ollydbg来调试脱壳,比SoftICE和TRW2000方便多了。运行Ollydbg,点击菜单“选项/调试设置”,将第一次暂停设在WinMain函数上。再用Ollydbg打开实例notepad.upx.exe就可中断在外壳的入口点处了:
上图相关代码如下:
0040E8C0 > 60 pushad //一开始Ollydbg就会中断这行,这个就是外壳的入口点,注意这个pushad指令
绝大多数加壳程序在被加密的程序中加上一个或多个段,所以依据跨段的转移指令(JMP)就可找到真正的入口点,此时就会有POPAD/POPFD 指令出现。UPX 用了一次跨段的转移指令(JMP),在跳到OEP处会看到虚拟地址的值有一个突变,此时就能确定OEP了。
UPX壳比较简单,大家不必要跟踪去找这个跨段的转移指令,中断WinMain后,只需要在Ollydbg里往下翻屏,就会发现这个跨段转移指令:
上图相关代码如下:
0040EA0E 61 popad //注意这里的popad指令,和开始的pushad对应
0040EA0F - E9 B826FFFF jmp 004010CC //这里跳到OEP,将光标移到这,按F4执行到这行
这一句0040EA0F jmp 004010CC 就是跳到OEP的指令,执行到这,UPX外壳己将程序解压完毕,并模拟Windows加载器的将原始程序加载到内存,004010CC 就是映射到内存目标程序的入口点,此时就可抓取内存映像文件了。
> 这一句0040EA0F jmp 004010CC 就是跳到OEP的指令,执行到这,UPX外壳己将程序解压完毕,并模拟Windows加载器的将原始程序加载到内存,004010CC 就是映射到内存目标程序的入口点,此时就可抓取内存映像文件了
如何抓取内存映像文件
即我在這裡
0040EA0E 61 popad //注意这里的popad指令,和开始的pushad对应
0040EA0F - E9 B826FFFF jmp 004010CC //这里跳到OEP,将光标移到这,按F4执行到这行
0040EA0E 61 下了一個f2(斷點)
再按f9執行到這裡 是否這樣呢?執行到這裡後又如何抓內存資料 重建一個.exe出來
新手請大家幫幫忙!
以下是我的猜測:
下斷點在
0040EA0E 61 popad
之後按F8jmp入去 這時的內容是否就是原本的.exe 是否把這一些內容複製再存成另一個.exe就可以呀??
請回答啦 謝謝!