手脱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
然后就可以脱壳了!!呵呵,对这个壳最快速的方法了
感谢楼主 但是不是很多 需要多学习 辛苦了{:7_236:} 这么厉害!必须给个红包鼓励下~ 先点评加好评再送币的说 [快捷回复]-学破解防逆向,知进攻懂防守!
感谢楼主 感谢大佬分享 谢谢分享 感谢分享,看看
页:
[1]
2