千羽huilai 发表于 2018-9-29 02:54

手脱MoleBox打包壳

前言:看到本论坛没有这类的脱文   我就发一个吧    (留个纪念) 为以后忘了或者学习手脱的朋友
我这里已windows 64位操作系统手脱(大家可以在32位或xp下脱吧)懒得点可以直接用脚本或脱壳机脱
查客:MoleBox V2.3X -> MoleStudio.com *
拖进od:点否
004E3BD3 >E8 00000000   call 多记忆桌.004E3BD8      //入口点
004E3BD8    60            pushad
004E3BD9    E8 4F000000   call 多记忆桌.004E3C2D         //这里用ESP定律
004E3BDE^ 74 A9         je short 多记忆桌.004E3B89
004E3BE0    44            inc esp
004E3BE1    27            daa
004E3BE2    815A A1 70BAB37>sbb dword ptr ds:,0x7EB3BA70
004E3BE9    1E            push ds
004E3BEA    50            push eax
004E3BEB    4C            dec esp
004E3BEC    FFEE            jmp far esi                              ; 非法使用寄存器
004E3BEE    6F            outs dx,dword ptr es:
004E3BEF^ 72 CF         jb short 多记忆桌.004E3BC0
=======================万恶的分割线=============================================

跟随到数据窗口 下断点:硬件访问---word    在下一个bp VirtualProtect
运行几次来到图1所示
图1:

最佳返回时机取消断点注意(不要取消硬件断点取消的是bp VirtualProtect这个断点) 64位好像不支持 ATL+F9
不过还是习惯了ATL+F9返回64位下在是SHIFT+F9返回到用户代码在F8单步一下
004EB645    51            push ecx
004EB646    8B0D 5CC14F00   mov ecx,dword ptr ds:
004EB64C    E8 13650000   call 多记忆桌.004F1B64
004EB651    8945 F8         mov dword ptr ss:,eax
004EB654    837D F8 00      cmp dword ptr ss:,0x0
004EB658    74 45         je short 多记忆桌.004EB69F                      ///这里就是前辈所说的魔术跳JUMP   该JMP
004EB65A    8D55 F0         lea edx,dword ptr ss:
004EB65D    52            push edx
004EB65E    6A 04         push 0x4
004EB660    6A 04         push 0x4
004EB662    8B45 08         mov eax,dword ptr ss:
004EB665    50            push eax
004EB666    FF15 40784F00   call dword ptr ds:             ; kernel32.VirtualProtect    这个断点怎么来的等下就告诉你
004EB66C    85C0            test eax,eax
004EB66E    75 0A         jnz short 多记忆桌.004EB67A
004EB670    B9 0B0000EF   mov ecx,0xEF00000B
004EB675    E8 9D2F0000   call 多记忆桌.004EE617
004EB67A    8B4D 08         mov ecx,dword ptr ss:
004EB67D    8B55 F8         mov edx,dword ptr ss:
004EB680    8B02            mov eax,dword ptr ds:
004EB682    8901            mov dword ptr ds:,eax                           //这里改NOP
004EB684    8D4D F4         lea ecx,dword ptr ss:
004EB687    51            push ecx
004EB688    8B55 F0         mov edx,dword ptr ss:
004EB68B    52            push edx

这两者二选一
=======================万恶的分割线=============================================

004EB67D    8B55 F8         mov edx,dword ptr ss:
004EB680    8B02            mov eax,dword ptr ds:
004EB682    90            nop                                                         //这里NOP掉F9运行
004EB683    90            nop
004EB684    8D4D F4         lea ecx,dword ptr ss:
004EB687    51            push ecx
=======================万恶的分割线=============================================

004E37B1    58            pop eax                                  ; 多记忆桌.004E3BD8
004E37B2    58            pop eax
004E37B3    FFD0            call eax                        //F7进CALL到达OEP
004E37B5    E8 F5CB0000   call 多记忆桌.004F03AF
004E37BA    CC            int3
004E37BB    CC            int3
004E37BC    CC            int3
004E37BD    CC            int3
004E37BE    CC            int3
004E37BF    CC            int3
图2:


此时用LordPE修正大小--完整转存,再用ImpREC FINAL 1.7汉化版 修复一下
图3:

无效函数剪切转存   程序成功运行
=======================万恶的分割线=============================================
VirtualProtect 这个断点怎么来的进行深入追踪
重载程序:

004E3BD3 >E8 00000000   call 多记忆桌.004E3BD8
004E3BD8    60            pushad
004E3BD9    E8 4F000000   call 多记忆桌.004E3C2D       //ESP定律
004E3BDE^ 74 A9         je short 多记忆桌.004E3B89
004E3BE0    44            inc esp
004E3BE1    27            daa
004E3BE2    815A A1 70BAB37>sbb dword ptr ds:,0x7EB3BA70
F9运行

004E37B1    58            pop eax                                 
004E37B2    58            pop eax
004E37B3    FFD0            call eax                                       //F7进call   到达OEP
004E37B5    E8 F5CB0000   call 多记忆桌.004F03AF
004E37BA    CC            int3
004E37BB    CC            int3
004E37BC    CC            int3
004E37BD    CC            int3
=======================万恶的分割线=============================================
到达OEP此时用LordPE修正大小--完整转存,再用ImpREC FINAL 1.7汉化版 修复一下   发现有19个无效指针


图4:


此时发现有很多无效指针   点中第一个 反汇编-十进制查看
000711E4+基址00400000=004711E4
重载程序 内存转到crtl+G   004F1A70下断硬件执行shift+F9运行
图5:

运行9次来到这里此时的IAP还未加密F8单步走下去
=======================万恶的分割线=============================================
004EB645    51            push ecx                                 ; kernel32.UnlockFile    //来到这里    多么熟悉的界面
004EB646    8B0D 5CC14F00   mov ecx,dword ptr ds:
004EB64C    E8 13650000   call 多记忆桌.004F1B64
004EB651    8945 F8         mov dword ptr ss:,eax
004EB654    837D F8 00      cmp dword ptr ss:,0x0
004EB658    74 45         je short 多记忆桌.004EB69F                     //这里修改JMP   前辈们大牛们俗称的魔术跳
004EB65A    8D55 F0         lea edx,dword ptr ss:
004EB65D    52            push edx
004EB65E    6A 04         push 0x4
004EB660    6A 04         push 0x4
004EB662    8B45 08         mov eax,dword ptr ss:
004EB665    50            push eax
004EB666    FF15 40784F00   call dword ptr ds:             ; kernel32.VirtualProtect就是这个断点   由来的
004EB66C    85C0            test eax,eax
004EB66E    75 0A         jnz short 多记忆桌.004EB67A
004EB670    B9 0B0000EF   mov ecx,0xEF00000B
004EB675    E8 9D2F0000   call 多记忆桌.004EE617
004EB67A    8B4D 08         mov ecx,dword ptr ss:
004EB67D    8B55 F8         mov edx,dword ptr ss:
004EB680    8B02            mov eax,dword ptr ds:
004EB682    8901            mov dword ptr ds:,eax                        //这里NOP
004EB684    8D4D F4         lea ecx,dword ptr ss:
004EB687    51            push ecx
004EB688    8B55 F0         mov edx,dword ptr ss:
004EB68B    52            push edx
004EB68C    6A 04         push 0x4
004EB68E    8B45 08         mov eax,dword ptr ss:
004EB691    50            push eax
004EB692    FF15 40784F00   call dword ptr ds:             ; kernel32.VirtualProtect
004EB698    C745 FC 0100000>mov dword ptr ss:,0x1
004EB69F    8B45 FC         mov eax,dword ptr ss:
004EB6A2    8BE5            mov esp,ebp
004EB6A4    5D            pop ebp
004EB6A5    C3            retn
二选一

=======================万恶的分割线=============================================
取消硬件断点
ctrl+S命令序列
pop eax
pop eax
call eax


004E37B1    58            pop eax    //F2下断   SHIft+F9运行
004E37B2    58            pop eax
004E37B3    FFD0            call eax   //F7进CALL到达OEP
004E37B5    E8 F5CB0000   call 多记忆桌.004F03AF
004E37BA    CC            int3
=======================万恶的分割线=============================================

第一:ESP定律
第二:下bp VirtualProtect断点
第三:查找命令序列:
          mov ecx,dword ptr ss:
          mov edx,dword ptr ss:
          mov eax,dword ptr ds:
          mov dword ptr ds:,eax
或    二进制查找:8B 4D 08 8B 55 F8 8B 02 89 01
处理magic jump

然后就可以脱壳了!!呵呵,对这个壳最快速的方法了




海伦泽 发表于 2018-10-11 17:51

感谢楼主 但是不是很多 需要多学习 辛苦了{:7_236:}

ghostxu 发表于 2022-1-21 08:01

这么厉害!必须给个红包鼓励下~

ghostxu 发表于 2022-1-23 21:01

先点评加好评再送币的说

消逝的过去 发表于 2022-2-1 13:33

[快捷回复]-学破解防逆向,知进攻懂防守!

PDWORD 发表于 2022-2-6 23:05


感谢楼主

拿着雪糕 发表于 2022-2-11 20:49

感谢大佬分享

帅呆鹏 发表于 2022-2-11 22:04

谢谢分享

军工强国 发表于 2022-2-13 23:09

感谢分享,看看

别管我了行 发表于 2022-5-4 02:39

页: [1] 2
查看完整版本: 手脱MoleBox打包壳