看完ximo教程的我又回来了,分享下笔记,接着第二课
刚开始学脱壳破解,先看了一集H大的教程,各种OEP入口点一脸懞逼然后开始看ximo的脱壳教程
工具是吾爱的虚机,需要的都能找到(lordpe,IR,在工具包的PE工具中,后面等级3修复需要下载ir1.6版本)
学完分享下笔记,主要是ximo大佬的笔记给做一些补充(毕竟环境不一样,复现存在一些问题)
吾爱版的OD还是不会用= =
一些教程中的程序加载后直接到系统领空,返回到用户代码直接跑飞,或者最后一次异常法的时候,一次就跑飞,,不明白什么情况
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
1.手脱UPX壳
调试工具:PEID和ollyice(OD入口点不对)
脱壳机-脱upx壳
跳转:
1. f4
2. 打断点
OEP (入口点): 大跨度跳转
3种脱壳方式
1.OD插件,LordPE(需要用importCRE修复)
2.OD dump方式一
3.OD dump方式二
UPX壳脱壳方法:
方法1:单步跟踪
入口点不一样,OD版本不同,吾爱破解的OD入口点设置有问题,切换Main也不行
程序领空 基址00400000,偏移xxx
系统领空 7xxxxxxx
方法2:ESP定律法
关键句的下一句,ESP突变,ESP数据窗口跟踪
打硬件断点,word/dword(硬件断点及时删)
命令:
1.dd XXXXX
2.hr XXXXX
方法3:2次内存镜像法
Delphi程序的地址段特征
M:内存(alt+m),区别系统领空
.rsrc 资源文件
下断点f2 运行
UPX0 下断点 运行
方法4:一步直达法
适用范围:大部分UPX壳和ASPACK壳
搜索命令,pop,push
2. 手脱ASPACK壳
ASPack 2.12 -> Alexey Solodovnikov
调试工具:PEID和ollyice(OD和教程不对)
6种方法脱
方法1:单步跟踪
跑飞了
f7进入call
popad离oep近了
方法2:ESP定律
方法3:一步直达
方法4:2次内存镜像
程序段的.rsrc 下断点
.text 下断点
方法5:模拟跟踪
内存找SFX,imports,relocations
命令:
tc eip<地址
没有直接找到OEP,跟踪到了系统领空,通过“执行到返回(alt+f9)”/“执行到用户代码(ctrl+f9)”到用户代码
断续单步跟踪
方法6:SFX模拟跟踪
菜单栏-选项-调试-SFX
块方式跟踪
3. 基础脱壳教程3:手脱NSPACK(北斗)
壳:
nSPack 1.3 -> North Star/Liu Xing Ping
NsPacK V3.7 -> LiuXingPing *
方法1:单步跟踪
离程序形如比较近的call,F7进入
使用lordPE脱壳
使用importREC修复
方法2:ESP定律
方法3:SFX模拟跟踪
找SFX,数据,输入表,资源处跟踪
方法4:2次内存镜像
PE是从上到下解压的,先解压资源文件,然后解压代码段,
没有资源文件,直接code段下断点
Q:如果有资源文件,为什么不直接在代码段下断点?
北斗,直接搜:
at GetVersion
在retn下断点单步(吾爱版OD直接到系统领空然后运行到用户代码直接跑飞,,Ollyice单步后直接到OEP)
适用于北斗3.0以前的壳
北斗2.4加壳
EP区段是nsp0,是nspack,北斗的壳
单步进入jump,ESP定律法搞定
北斗3.7壳
ESP定律法搞定
4.基础脱壳教程4:手脱FSG壳
脱FSG 2.0 -> bart/xt
单步跟踪找OEP
OEP地址一般存在寄存器里面,不直接给出
手动、查找IAT:工具importREC
找任意一个call,在importantREC中定位call的地址
0042500077DA6C17advapi32.RegCloseKey
004252807C838E18kernel32.LCMapStringA
RVA=25000
SIZE=280
SIZE=1000(懒省事,有垃圾指针)
方法1:单步跟踪
方法2:ESP定律
方法3:特殊ESP定律
只适用于FSG 2.0 -> bart/xt
00400154 >8725 04A24700 xchg dword ptr ds:,esp ; qqspirit.0047A208
0040015A 61 popad
0040015B 94 xchg eax,esp ; qqspirit.0047A208
跳到这在堆栈窗口第四行为OEP地址,在反汇编窗口跟随,下硬件断点,直接跳到OEP
5.基础脱壳教程5:手脱PECompact2.X的壳
1。单步
进入系统领空后继续跟踪
OD载入脱壳后的程序直接到OEP
VC6:OEP
0040A86D >55 push ebp
2。ESP定律
第一个ESP突变不对,跟踪后进入系统领空
第二个成功
3。BP VirtualFree
F9运行后
F2取消断点
ALT+F9回到用户代码
查找 push 8000(特征码)
F4运行到这
然后单步跟到OEP
4。BP VirtualFree
两次F9运行
中断后取消断点,Alt+F9返回
单步走到OEP
5.0040A86D >B8 74DE4500 mov eax,qqspirit.0045DE74
上来就是MOV命令,参数后面跟0045de74这种
运行命令:
bp 0045de74
045DE74 B8 F9CB45F0 mov eax,F045CBF9
0045DE79 8D88 9E120010 lea ecx,dword ptr ds:
0045DE7F 8941 01 mov dword ptr ds:,eax
0045DE82 8B5424 04 mov edx,dword ptr ss:
0045DE86 8B52 0C mov edx,dword ptr ds:
0045DE89 C602 E9 mov byte ptr ds:,0E9
0045DE8C 83C2 05 add edx,5
0045DE8F 2BCA sub ecx,edx
0045DE91 894A FC mov dword ptr ds:,ecx
0045DE94 33C0 xor eax,eax
0045DE96 C3 retn
0045DE97 B8 78563412 mov eax,12345678//下断
Q:F4!=断点F2+F9?
F4跑飞,F2+F9不会
6。bp VirtualAllocSHIFT+F9运行
取消断点
ALT+F9
向下拉,看到JMP。运行到这
7.最后一次异常法;
取消所有异常。
2次跑飞。
在堆栈窗口找SE句柄
crtl+g转到:SE xxxx处
8。两次内存
9。at GetVersion
C++程序的程序的方法,OEP最终在上面
6.基础脱壳教程6:手脱EZIP 壳
开始遇到jmp直接F8
1。单步
脱壳后无法运行,可能入口点找错了。以用重建PE的方法。
2。ESP定律
7.基础脱壳教程7:手脱tElock 0.98b1壳
1。最后一次异常法
Ctrl+F9 运行至ret
Alt+F9 运行至上层调用的下句
Shift+F9 忽略异常运行
f4!=f2+f9
取消所有异常。
n次跑飞。
运行n-1次在堆栈窗口找SE句柄
crtl+g转到:SE xxxx处
1.7汉化不能修复
https://www.52pojie.cn/thread-618899-1-1.html
解决方法:需要用ImportREC_fix.exe 1.6版本
先打开原程序,然后再打开ire等级3跟踪修复,后打开原程序不能跟踪
剩余5个剪切掉OK,修复完毕!
2.模拟跟踪
使用前提,程序没有SEH安装
跳过16次异常后,没有SEH安装,可以使用模拟跟踪
16次之后,在堆栈窗口找SE句柄
crtl+g转到:SE 0042D7FD处
下断点,运行到这,然后直接模板跟踪到OEP
3。两次内存镜像
调试设置-》异常勾选
shift+f9运行
第一次断点在程序段的.rsrc
第二次在.text代码段
8.基础脱壳教程8:手脱exe32pack壳
1。ESP定律
入栈是重要语句
重要语句可以用ESP定律法
Q:为什么OD会自动跑?我都到OEP了,还没脱壳就跑到下面代码了
用ODdump插件脱壳有问题,需要使用lordPE+importCre脱壳
lord+impCRE脱壳OK,lordPE脱壳后,壳没有脱干净,peid查壳后,发现仍然有壳,不能运行
ollyICE原版脱壳失败
OD吾爱版脱壳成功
2。下断:BP IsDebuggerPresent
运行,取消断点
ALT+F9,
计算ss+edi
转到OEP!
9.基础脱壳教程9:脱WinUpack加的壳
加条件断点的方法。
加壳后,什么也没发现,可以看.ep区段:.Upack
汇编:test eax,eax
循环,加载输入表后,跳转OEP
也可以长久单步跟踪
----------------------------------------------------------------------------------------------------------------------------
后面太多代码,就不复制了,避免流水贴嫌疑:lol 感谢分享笔记内容! 受教了! 很受启发,继续学习{:1_937:} 感谢分享,{:1_921:} 有可能是和ximo OD版本不同。每次跳转都和他不一样。就这跳转郁闷了我一个小时。本来就不好学还一直被误导这走。。。 感谢分享 厉害了 也去学习一下
页:
[1]