吾爱破解 脱壳练习系列动画 笔记
od command : d xxxxx //跟随
od 右键运行跟踪 F4 运行到指定位置
od F2 下断点
od F9 运行 ; F7 单步步入 ; F8 单步步过
od 代码分析 Ctrl+A
-
吾爱专题脱壳练习----压缩壳练习之一 https://www.52pojie.cn/thread-10496-1-1.html
OD->ESP定律->右键--断点--硬件访问断点->重新加载后直接运行->OEp->删除硬件断点,直接dump程序
参考 小生我怕怕的帖子,如下:
-
吾爱专题脱壳练习----压缩壳练习之二 https://www.52pojie.cn/thread-10607-1-1.html
内存法:断点设置输入表段、数据段、资源段 ;打开内存镜象 ait+m
F4 运行到指定位置;F2下断F9运行清除断点继续
先找oep->运行lordpe脱壳->运行lmportrce修复
手动查找IAT command : d xxxxx 向上找非000000地址
IAT中无效函数可以右键剪切指针。
找输入表,在OD中随便找一个API函数,右键-数据窗口跟随-内存地址 为了容易看,数据窗口设置一下(右键-长型-地址) 看到函数后,上下翻翻,找到起始位置00401FFC 到 004021E4 0040172D FF15 90214000 call dword ptr ds:[402190] //注意此句,我们在命令行输入 D 402190 ━━━━━━━━━━━━━━━━━━━━━━━━━━ 00402190 77C0537C msvcrt.__set_app_type //此时停在此处 00402194 77C05C94 msvcrt._except_handler3 //拉动滚动跳找代码全0以下的 00402198 77C1EE2F msvcrt._controlfp 0040219C 77C04DF8 msvcrt._onexit 004021A0 77C04E51 msvcrt.__dllonexit 在RAV处填 1FFC , SIZE:1E8,获取,Cut无效滴,修复,嘎嘎,大功告成! 00401FF8 00000000 00401FFC 00000000 00402000 7C80B6A1 kernel32.GetModuleHandleA //这里即是我们的RVA 00402004 7C801EEE kernel32.GetStartupInfoA //现在我们在打开我们的importRCE修复 00402008 7FFFFFFF //OEP:1700 RVA:2000 大小:1000 0040200C 73D98D67 MFC42.#4486 //说下大小填1000就可以啦,不用刻意去计算 00402010 73D35EF1 MFC42.#2554 //直接获取输入表,出现有无效指针,直接剪切掉即可,修复可以运行手工
参考 小生我怕怕的帖子,如下:
-
吾爱破解脱壳练习------简单加密壳 https://www.52pojie.cn/thread-10850-1-1.html
-
esp定律
-
两次内存法
找到OEP,右键在此新建EIP,dump程序
参考 小生我怕怕的帖子,如下:
-
-
吾爱破解脱壳练习------简单加密壳 https://www.52pojie.cn/thread-10850-1-1.html
-
内存法
-
断点的方法 在命令栏输入:bp GetProcAddress ;shift+f9运行
rdtsc //程序停在这里,把这里nop掉,否则程序就会跑飞
参考 小生我怕怕的帖子,如下:
-
-
吾爱破解脱壳练习第五期------upx壳 https://www.52pojie.cn/thread-10990-1-1.html
-
两次内存法
━━━━━━━━━━━━━━━━━━━━━━━━━━ 0040170090nop //很明显OEP被抽了一个字节,我们把他改为push ebp这个是VC++的开头 004017018BECmov ebp,esp //然后用OD的脱壳插件来脱壳,因为LORDPE脱壳要设置下,所以OD插件简单些 004017036A FF push -1 0040170568 00254000 push UnPackMe.00402500 0040170A68 86184000 push UnPackMe.00401886 ; jmp to msvcrt._except_handler3 0040170F64:A1 00000000mov eax,dword ptr fs:[0] ━━━━━━━━━━━━━━━━━━━━━━━━━━ 0040170055push ebp //修改后OEP便可进行DUMP 004017018BECmov ebp,esp 004017036A FF push -1 0040170568 00254000 push UnPackMe.00402500 0040170A68 86184000 push UnPackMe.00401886 ; jmp to msvcrt._except_handler3
-
断点 bp VirtualProtect
参考 小生我怕怕的帖子,如下:
-
-
吾爱破解脱壳练习六------TElock V0.99 https://www.52pojie.cn/thread-11112-1-1.html
-
内存法
-
最后一次异常法 od 选项 -> 调试设置-> 异常->忽略除内存访问异常外其他异常,即其他项都勾选。
IAT被加密:修复IAT时,有好多指针都是无效的,但是,把他剪掉后,是无法正常运行的。
-
简单的处理方法,只要用REC的等级3来跟踪,就能找回所有的被加密的指针。即,再次打开我们的原加壳程序,impREC 显示无效函数->在信息窗口,任何一指针处,右键等级三跟踪。
-
完美处理IAT加密
在.data段内存写入断点,断下后,取消断点,然后CTRL+B,0A F6(这就是上面总结出的特征码),把下面的跳改jmp,然后在00401000处F2,SHIFT+F9后就可以到达OEP,这时候,用REC看,IAT都是有效的!
找特征码前:
1.记下被被加密的指针的地址,在impREC中随意找一个无效指针
2.加上基址地址
3.跟踪IAT加密指针的一般方法:在这个指针处下硬件断点,然后看寄存器窗口,寻找可用的信息。
于是,重新载入,然后dd 0045512C,接着,就下硬件访问断点吧,SHIFT+F9运行,4.在处理IAT加密前,必须要处理掉crc错误。跟这个CRC的方法很多,有兴趣的可以试试F12法。一种常规的方法:删除所有的断点,包括硬件断点和内存断点。接着,ALT+M,在.data段下内存写入断点。F8单步。
参考 ximo的帖子,majic jump如下: https://www.52pojie.cn/forum.php?mod=redirect&goto=findpost&ptid=11112&pid=146416
参考小生我怕怕的帖子,如下:
内存法:https://www.52pojie.cn/forum.php?mod=redirect&goto=findpost&ptid=11112&pid=145988
最后一次异常法:https://www.52pojie.cn/forum.php?mod=redirect&goto=findpost&ptid=11112&pid=145996
-
-
吾爱破解脱壳练习七------ORiEN https://www.52pojie.cn/thread-11244-1-1.html
-
ESP定律->dump->iat无效指针删除
-
最佳dump时机
OD载入,在命令行下断点: BP GetProcAddress [ESP]<004A6000&[ESP+0C]<004A6000 下好断点后shift+f9 -> RVA的地址 RVA:00455000-00400000基址=55000
搜索命令序列:ctrl+s,输入如下代码
jmp eax
int 0EB
stiloadPE 修改入口点和输入表
////////////////////////////////////////////////////////////////////////////////////////////////////// /// ORiEN v2.11 - 2.12 -> Fisun Alexander */// /// by 小生我怕怕QQ:4586631 /// /// 2008.10.02 /// /////////////////////////////////////////////////////////////////////////////////////////////////////// var addr//定义一个变量addr sto //单步,也就是F8 sto //单步,也就是F8 mov addr,esp//把此处ESP的地址给变量addr bphws addr,"r"//下硬件读取断点,也就是硬件访问断点 run //运行,也就是F9 BPHWC addr//取消断点 sto //单步,也就是F8 sto //单步,也就是F8 sto //单步,也就是F8 sto //单步,也就是F8 sto //单步,也就是F8 sto //单步,也就是F8 sto //单步,也就是F8 cmt eip,"友情提示:这里就是OEP!" //在EIP处,也就是现在OD停留了位置加注释 MSG "友情提示:修复时把无效指针直接删除,不要用剪切"//加个对话框,给出一些提示信息 ret //结束脚本
参考小生我怕怕的帖子,如下:
https://www.52pojie.cn/forum.php?mod=redirect&goto=findpost&ptid=11244&pid=148306
https://www.52pojie.cn/forum.php?mod=redirect&goto=findpost&ptid=11244&pid=148307
最佳dump时机:https://www.52pojie.cn/forum.php?mod=redirect&goto=findpost&ptid=11244&pid=148320
-
-
吾爱破解脱壳练习-----MoleBox V2.6.5 https://www.52pojie.cn/thread-11306-1-1.html
-
esp定律,硬件断点 修复IAT majic jump
-
寻找OEP ctrl+s 搜索字符串特征
-
断点 bp VirtualProtect
1. shift+f9 查找89 01
2. 堆栈窗口 EXCUTABLE ->8901
参考小生我怕怕的帖子,如下:
https://www.52pojie.cn/forum.php?mod=redirect&goto=findpost&ptid=11306&pid=149411
////////////////////////////////////////////////////////////////////////////////////////////////////// /// MoleBox V2.X -> MoleStudio.com/// /// by 小生我怕怕QQ:4586631/// /// 2008.10.05/// /////////////////////////////////////////////////////////////////////////////////////////////////////// var addr //定义一个变量,用来放ESP的值 sto sto//单步2次 mov addr,esp //把ESP的值,放变量addr中 bphws addr,"r" //下硬件访问断点 gpa "VirtualProtect","kernel32.dll"//查找特征API,并把查找到的地址放RESULT中 bp $RESULT //对找到的地址处,下F2断点,也就是BP run//运行 run//运行 run//运行 run//运行 run//运行 run//运行 run//运行 run//运行 run//运行 run//运行 bc $RESULT //取消断点 rtu//ALT+F9返回 find eip,#8901#//查找特征加密语句 bp $RESULT //对返回的地址处F2下断 run//运行到该处 bc $RESULT //取消断点 repl eip, #8901#, #9090#, 10 //把加密语句NOP掉,即替换为9090 run//由于刚才已经下好了硬件断点,现在只要运行即可 bphwc addr //取消断点 sto sto//单步走2次 sti//F7跟进,就来到了OEP了 cmt eip,"友情提示:这里就是OEP!"//在EIP处,也就是现在OD停留了位置加注释 MSG "感谢使用此脚本,现在可以脱壳了" //加个对话框,给出一些提示信息 ret//结束脚本
脚本见 https://www.52pojie.cn/forum.php?mod=redirect&goto=findpost&ptid=11306&pid=149432
-
-
吾爱破解脱壳练习-----CRYPToCRACk's PE Protector https://www.52pojie.cn/thread-11446-1-1.html
-
内存法 断点 .rsrc段 shift+F9、CODE段 shift+F9 impREC修复 跟踪等级三
-
magic jump 断点.reloc段, 观察寄存器EAX变化
为了方便二进制复制下程序的magic jump如下特征码
5A 59 5B 8B 7C 24 04 89 3C 8A
简化脱壳流程,即ctrl+b搜索5A 59 5B 8B 7C 24 04 89 3C 8A
接着打开内存在rsrc段下段,shift+f9运行,程序停下后在次打开内存进行
在code段下段shift+f9运行,即可用OD插件脱壳
参考小生我怕怕的帖子,如下:
https://www.52pojie.cn/forum.php?mod=redirect&goto=findpost&ptid=11446&pid=151206
-
-
吾爱破解脱壳练习-----PESpin 1.32 https://www.52pojie.cn/thread-11585-1-1.html (出处: 吾爱破解论坛)
-
ESP定律 hr esp,shift+f9运行程序->ait+m打开内存镜像,code段断点->OEP是被抽代码
寻回OEP代码:在到达伪装OEP之前,就是注意力和经验来判断。(多加分析代码,多加观察代码,才会得出被抽取的OEP)
参考小生我怕怕的帖子,如下:
https://www.52pojie.cn/forum.php?mod=redirect&goto=findpost&ptid=11585&pid=153285
-
-
吾爱破解脱壳练习-----VB自效验的处理 https://www.52pojie.cn/thread-11747-1-1.html (出处: 吾爱破解论坛)
- OD命令行 bpx papa ->模块间调用,__vbaNew2,设置每次调用到断点
注意__vbaEnd
(.__vbaNew2此函数经常被利用在调用某些字程序,或者子函数上,所以得出此调用退出的原理)
- BP rtcFilelen
参考小生我怕怕的帖子,如下:
https://www.52pojie.cn/forum.php?mod=redirect&goto=findpost&ptid=11747&pid=155003
-
吾爱破解脱壳练习-----delphi自效验的处理 https://www.52pojie.cn/thread-11883-1-1.html (出处: 吾爱破解论坛)
-
专用脱壳法:OD F8->堆栈窗口,OEP地址0045271C->右键,反汇编窗口跟随 ->右键从模块中删除分析 ->右键断点,设置硬件访问断点 -> ctrl+f2从新加载程序 ->F9直接运行程序
-----> IAT不足 ->OD d xxxx -> impREC 剪切无效指针
-
bp FindFirstFileA 断点
-
bpx papa -> .ExitProcess, 不全,再bp FindFirstFileA。
参考小生我怕怕的帖子,如下:
https://www.52pojie.cn/forum.php?mod=redirect&goto=findpost&ptid=11883&pid=156901
https://www.52pojie.cn/forum.php?mod=redirect&goto=findpost&ptid=11883&pid=156905
https://www.52pojie.cn/forum.php?mod=redirect&goto=findpost&ptid=11883&pid=156918
-
-
吾爱破解脱壳练习----GHF Protector V1.0 https://www.52pojie.cn/thread-12011-1-1.html (出处: 吾爱破解论坛)
- MZP,是一个标志位<---注意寄存器窗口
当碰到某个程序无法用lordPE脱壳时,不防试试PEtools这个工具
最佳dump更多时候是建立在要知道RVA大小的情况下的,这个壳比较特殊资源已经完全释放,而IAT未填充,程序读了MZP这个位置后即是最佳DUMP时机,但本文中的方法只是做个借鉴,要想更好的了解最佳dump时机可以去看fly的文章。
- bp LoadLibraryA
- bp GlobalFree
//////////////////////////////////////////////////////////// /// GHF Protector V1.0 脱壳脚本/// /// by 小生我怕怕 QQ:4586631 /// ////// ///[url]http://www.52pojie.net[/url]/// ////// /// 2008.10.15 /// //////////////////////////////////////////////////////////// gpa "LoadLibraryA","kernel32.dll" bp $RESULT esto esto esto esto esto esto esto esto bc $RESULT rtu find eip,#FFE290C3# bp $RESULT run bc $RESULT sto cmt eip,"友情提示:这里就是光明之颠" MSG "感谢使用此脚本,请使用peTools脱壳" MSG "请取消importRCE选项中使用来自硬盘的PE文件头" ret
//////////////////////////////////////////////////////////// /// GHF Protector V1.0 脱壳脚本/// /// by 小生我怕怕 QQ:4586631 /// ////// ///[url]http://www.52pojie.net[/url]/// ////// /// 2008.10.15 /// //////////////////////////////////////////////////////////// MSG "请在使用脚本前,保证OD目录下UDD文件夹里没有垃圾" gpa "GlobalFree","kernel32.dll" bp $RESULT esto bc $RESULT rtu find eip,#FFE290C3# bp $RESULT run bc $RESULT sto cmt eip,"友情提示:这里就是光明之颠" MSG "感谢使用此脚本,请使用peTools脱壳" MSG "请取消importRCE选项中使用来自硬盘的PE文件头" ret
参考小生我怕怕的帖子,如下:
https://www.52pojie.cn/forum.php?mod=redirect&goto=findpost&ptid=12011&pid=158555
https://www.52pojie.cn/forum.php?mod=redirect&goto=findpost&ptid=12011&pid=158559
https://www.52pojie.cn/forum.php?mod=redirect&goto=findpost&ptid=12011&pid=158884
-
吾爱破解脱壳练习----Armadillo 6.04 https://www.52pojie.cn/thread-12135-1-1.html (出处: 吾爱破解论坛)
-
断点
bp VirtualProtect
bp CreateThread
-
常规断点
-
he GetModuleHandleA+9 硬件执行断点 --->> magic jmp, nop
-
bp GetModuleHandleA+9
bp CreateThread
-
-
bp OpenMutexA -> 搜索特殊字符串 -> 避免壳检测,还原修改的magic jmp
参考小生我怕怕的帖子,如下:
https://www.52pojie.cn/forum.php?mod=redirect&goto=findpost&ptid=12135&pid=160326
-
-
吾爱破解脱壳练习----ACProtector系列保护 https://www.52pojie.cn/thread-12279-1-1.html (出处: 吾爱破解论坛)
-
OD 调试选项 忽略除INT3中断外其他异常(INT3中断不勾选)
->隐藏OD -> F9 ->堆栈窗口SE句柄,数据跟随 ->数据窗口,内存访问断点
->shift+F9 三次,取消内存访问断点 ->code段断点 ->shift+F9
-
magic jmp
参考小生我怕怕的帖子,如下:
https://www.52pojie.cn/forum.php?mod=redirect&goto=findpost&ptid=12279&pid=162019
-
-
吾爱破解脱壳练习----ACProtector系列保护 https://www.52pojie.cn/thread-12362-1-1.html (出处: 吾爱破解论坛)
-
异常法:设置忽略除内存访问异常外全部异常->堆栈 SE句柄处,右键数据窗口中跟随 -> 右键内存访问断点 - > shift +F9 三次 ->OEP被抽取 ->对比未加密的vb程序
-
内存法:.vmp0 内存访问断点 -> .text段 F2 ->shift+F9 -> 分析,从模块删除分析 ->堆栈内有push的地址
push xxxx
call MSVBVM60.ThunRTMain的地址
参考小生我怕怕的帖子,如下:
https://www.52pojie.cn/forum.php?mod=redirect&goto=findpost&ptid=12362&pid=163474
-
-
吾爱破解脱壳练习----PEBundle 2.0b5 - 3.0x https://www.52pojie.cn/thread-12498-1-1.html (出处: 吾爱破解论坛)
详见视频。
参考小生我怕怕的帖子,如下:
https://www.52pojie.cn/forum.php?mod=redirect&goto=findpost&ptid=12498&pid=165961
https://www.52pojie.cn/forum.php?mod=redirect&goto=findpost&ptid=12498&pid=165962
https://www.52pojie.cn/forum.php?mod=redirect&goto=findpost&ptid=12498&pid=165963
-
吾爱破解脱壳练习----Armadillo 4.40 https://www.52pojie.cn/thread-12620-1-1.html(出处: 吾爱破解论坛)
-
bp GetModuleHandleA+5
-
BP VirtualProtect
参考小生我怕怕的帖子,如下:
https://www.52pojie.cn/forum.php?mod=redirect&goto=findpost&ptid=12620&pid=167921
https://www.52pojie.cn/forum.php?mod=redirect&goto=findpost&ptid=12620&pid=168291
-
-
吾爱破解脱壳练习----PUNiSHER 1.5 https://www.52pojie.cn/thread-12822-1-1.html (出处: 吾爱破解论坛)
bp LoadLibraryA+5 --->>>对比vc++,得到被偷取的代码。
操作详见视频
参考小生我怕怕的帖子,如下:
https://www.52pojie.cn/forum.php?mod=redirect&goto=findpost&ptid=12822&pid=171228
-
吾爱破解脱壳练习----未知壳(哭笑不得) https://www.52pojie.cn/thread-12936-1-1.html (出处: 吾爱破解论坛)
- PETools 设置-选项-取消 完整转存-从磁盘粘贴PE头
- BP WriteProcessMemory 或 BP ResumeThread --->>> lordPE 区域转存
参考小生我怕怕的帖子,如下:
https://www.52pojie.cn/forum.php?mod=redirect&goto=findpost&ptid=12936&pid=173941
-
21期和22期暂无帖子
总结:需要多多练习~~~