菜鸟起步四 手脱Armadillo 3.78 - 4.xx笔记
泪牛满面那。。。终于给我脱下来了。。。穿山甲真变态呀。。Armadillo 3.78 - 4.xx -> Silicon Realms Toolworks
程序:FlyWoool.exe(吉祥天传世外挂 1.0.0.1)
原教程地址:无
脱壳前的准备:
1、OD设置忽略所有的异常,用隐藏插件隐藏OD
2、思想准备:Armadillo对断点的检测非常严格,所以我们在设置断点的时候要尽量去使用“硬件执行”
3、概念准备:使用PEID的Armadillo的版本检测一般没那么准确,我倒是发现fi的版本检测还是要强一些
4、Magic Jump:跳转的跨越段一般比较大!(返回时机一定要对!)
5:返回的时机:1、返回的地址是系统领空 2、Shift+F9过程当中,时间缓冲比较大才停下
总分四步
一、双变单(使程序把自己当成子进程运行)bp OpenMutexA
二、避开Anti (手动避免OD BUG ) he OutputDebugStringA
三、Magic Jump,避开IAT加密 he GetModuleHandleA+5
四、LoadPE脱壳 IR修复
具体步骤
一、双变单(使程序把自己当成子进程运行)
bp OpenMutexA
F9(左下角 提示异常)
选项调试 异常 添加最近的异常
Shift+F9(断下后不要取消断点)
Ctrl+G 00401000
依次输入***注意第三句的地址出处
00401000 60 pushad
00401001 9C pushfd
00401002 68 A0FD1200 push 12FDA0******** ; ASCII "44C::DA47D45903"
00401007 33C0 xor eax,eax
00401009 50 push eax
0040100A 50 push eax
0040100B E8 E694A677 call KERNEL32.CreateMutexA
00401010 9D popfd
00401011 61 popad
00401012 - E9 8F9FA777 jmp KERNEL32.OpenMutexA
选上变红的这一段 右键 此处新建EIP
F9
F2取消断点
ctrl+G 00401000
选上红的一段 撤销
二、避开Anti
he OutputDebugStringA回车F9
选中%s%之类的字符,点右键 数据窗口跟随 第一行右键 二进制 使用00填充
F9
选中%s%之类的字符,点右键 数据窗口跟随 第一行右键 二进制 使用00填充
删除硬件断点
三、Magic Jump,避开IAT加密
he GetModuleHandleA+5 回车
Shift+F9
堆栈窗口
SHIF+F9
出现
001292A8 |01066AC2 返回到 01066AC2 来自 KERNEL32.GetModuleHandleA
001292AC |0107BD6C ASCII "kernel32.dll"
001292B0 |0107DDAC ASCII "VirtualAlloc"***
001292A4 /0012EBB0
001292A8 |01066ADF 返回到 01066ADF 来自 KERNEL32.GetModuleHandleA
001292AC |0107BD6C ASCII "kernel32.dll"
001292B0 |0107DDA0 ASCII "VirtualFree"****
下个SHIft+F9 便可删除硬件断点
Alt+F9
寻找Magic Jump一般在call dword ptr ds: ; KERNEL32.LoadLibraryA***** 下面的je
01055A99 8B0D 6C500801 mov ecx,dword ptr ds://返回到这里!
01055A9F 89040E mov dword ptr ds:,eax
01055AA2 A1 6C500801 mov eax,dword ptr ds:
01055AA7 391C06 cmp dword ptr ds:,ebx
01055AAA 75 16 jnz short 01055AC2
01055AAC 8D85 B4FEFFFF lea eax,dword ptr ss:
01055AB2 50 push eax
01055AB3 FF15 B8620701 call dword ptr ds: ; KERNEL32.LoadLibraryA*****
01055AB9 8B0D 6C500801 mov ecx,dword ptr ds:
01055ABF 89040E mov dword ptr ds:,eax
01055AC2 A1 6C500801 mov eax,dword ptr ds:
01055AC7 391C06 cmp dword ptr ds:,ebx
01055ACA 0F84 2F010000 je 01055BFF //Magic Jump,改jmp
01055AD0 33C9 xor ecx,ecx
01055AD2 8B07 mov eax,dword ptr ds:
01055AD4 3918 cmp dword ptr ds:,ebx
01055AD6 74 06 je short 01055ADE
01055AD8 41 inc ecx
01055AD9 83C0 0C add eax,0C
往下拉,找如此类似的序列(一个jnz,一个jmp,两个salc//Magic Jump)
01055C0E ^\0F85 49FEFFFF jnz 01055A5D
01055C14 EB 03 jmp short 01055C19//F2下断,Shift+F9,断下!取消断点!
01055C16 D6 salc(其上下断)
01055C17 D6 salc
往上拉 撤消Magic Jump处的修改!
Alt+M打开内存镜像,在00401000段下断,Shift+F9
7C94AB4F 55 push ebp//跳转后的出口
7C94AB50 8BEC mov ebp,esp
7C94AB52 51 push ecx
7C94AB53 FF75 08 push dword ptr ss:
7C94AB56 E8 DE57FEFF call ntdll.RtlImageNtHead>
7C94AB5B F640 5F 04 test byte ptr ds:>
7C94AB5F 0F85 EE610200 jnz ntdll.7C970D53
7C94AB65 8D45 FC lea eax,dword ptr ss:[ebp>
7C94AB68 50 push eax
7C94AB69 6A 0A push 0A
7C94AB6B 6A 01 push 1
单步F8
010D038C 3350 40 xor edx,dword ptr ds:
010D038F 6A 00 push 0
010D0391 FF76 0C push dword ptr ds:
010D0394 2BCA sub ecx,edx
010D0396 FFD1 call ecx //OEP F7跟进 ; FlyWoool.004B79A6
010D0398 8945 FC mov dword ptr ss:,eax
010D039B 8B45 FC mov eax,dword ptr ss:
010D039E 5F pop edi
010D039F 5E pop esi
到达OEP
脱壳 直接剪切无效指针
斑竹 转下到脱壳破解版本吧在那编辑帖子不让编 本来不想说的你真无耻剽窃“天草”的作品 连破文都一摸一样加上几张图片 就变你的作品!!!!
哎 你这个人啊。。。
版主你有没有搞错这种剽窃别人的作品也放出来我靠
我用我的ID担保 这绝对是“剽窃”天草的赶紧封杀 免得毁了论坛荣誉!!!!!!!!!!!!!!!!!!
回复 cbh352933721 的帖子
纯粹的笔记。 很详细的教教程 支持一下!学习了! 很详细啊 支持学习一下。 好难。。。现在没有人能做得出来自动脱的吗! 哦,我遇到了个程序是双进程Armadillo 3.78 - 4.xx的,到了找magic jump我就找不到了。按照楼主的说法“寻找Magic Jump一般在call dword ptr ds: ; KERNEL32.LoadLibraryA***** 下面的je
可我的KERNEL32.LoadLibraryA下面不是je啊,望高手指点下magic jump的找法。
页:
[1]
2