吾爱破解 脱壳练习系列动画 笔记

吾爱破解 脱壳练习系列动画 笔记

od command : d xxxxx //跟随

od 右键运行跟踪 F4 运行到指定位置

od F2 下断点

od F9 运行 ; F7 单步步入 ; F8 单步步过

od 代码分析 Ctrl+A

  1. 吾爱专题脱壳练习----压缩壳练习之一 https://www.52pojie.cn/thread-10496-1-1.html

    OD->ESP定律->右键--断点--硬件访问断点->重新加载后直接运行->OEp->删除硬件断点,直接dump程序

    参考 小生我怕怕的帖子,如下:

  2. 吾爱专题脱壳练习----压缩壳练习之二 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 //直接获取输入表,出现有无效指针,直接剪切掉即可,修复可以运行手工
    

    参考 小生我怕怕的帖子,如下:

  3. 吾爱破解脱壳练习------简单加密壳 https://www.52pojie.cn/thread-10850-1-1.html

    • esp定律

    • 两次内存法

    找到OEP,右键在此新建EIP,dump程序

    参考 小生我怕怕的帖子,如下:

  4. 吾爱破解脱壳练习------简单加密壳 https://www.52pojie.cn/thread-10850-1-1.html

    • 内存法

    • 断点的方法 在命令栏输入:bp GetProcAddress ;shift+f9运行

      ​ rdtsc //程序停在这里,把这里nop掉,否则程序就会跑飞

    参考 小生我怕怕的帖子,如下:

  5. 吾爱破解脱壳练习第五期------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

    参考 小生我怕怕的帖子,如下:

  6. 吾爱破解脱壳练习六------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

  7. 吾爱破解脱壳练习七------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
      sti

      loadPE 修改入口点和输入表

    //////////////////////////////////////////////////////////////////////////////////////////////////////
    /// 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

  8. 吾爱破解脱壳练习-----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

  9. 吾爱破解脱壳练习-----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

  10. 吾爱破解脱壳练习-----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

  11. 吾爱破解脱壳练习-----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

  12. 吾爱破解脱壳练习-----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

  13. 吾爱破解脱壳练习----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

  14. 吾爱破解脱壳练习----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

  15. 吾爱破解脱壳练习----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

  16. 吾爱破解脱壳练习----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

  17. 吾爱破解脱壳练习----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

  18. 吾爱破解脱壳练习----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

  19. 吾爱破解脱壳练习----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

  20. 吾爱破解脱壳练习----未知壳(哭笑不得) 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. 21期和22期暂无帖子

总结:需要多多练习~~~

posted @ 2022-01-03 23:33  Theseus‘Ship  阅读(537)  评论(0)    收藏  举报
Live2D