|
运行环境:
Win2003 x32;
涉及工具:
OD1.10;Rec Imp1.7;Scylla 0.98;Lord PE;
教程类型:
脱壳;
视频是否带有论坛水印:
是;
是否讲解思路和原理:
否;演示详细过程;
是否为悬赏杀手:
否;
以下为图文内容:
Armadillo4.40x86非标准双进程(CopyMem2)脱壳
boot / 52hb.com
2022.10.26
非标准双进程程序,顾名思义,即按照常规标准双进程转单进程后无法处理的样本。
它仍然具有双进程,但是汇编手动转单进程后,程序无法直接运行。
提示错误代码C或者其他,高版本会报错误代码C。报错后程序直接终止
这里的C指的是CopyMem2,令人头疼,难度较大,常规脱壳机或者脚本无法处理。
鉴于可供参考的实操教程很少,大多数时间久远附件失效,或语焉不详,因此补录一份以备份。
错误代码:我来复现这种情况;
标准双进程转单进程后能直接运行,不存在报错;而非标准双进程则报错,程序终止。
这份教程就是针对这种非标准双进程情况而录。
============
注意:
1、调试CopyMem2类程序时候,尽量移除OD的反调试插件,只保留StrongOD 0.48插件;
2、OD务必按照我这样设置;
3、调试过程中,不要修改OD插件配置;
4、调试过程中,及时撤销硬件/软件断点,撤销被修改的内存;
5、调试过程中,非常卡顿,留意;
============
这个主程序是5.13版本的,加的是穿山甲4.40版本的壳。
样本信息:
Protection Options:
>Debug-Blocker + CopyMem2
>Enable Memory-Patching Protections
Version Number:
>4.40
============
一、找OEP
1、OpenMutexA F2中断一次
2、WaitForDebugEvent 硬断一次,堆栈第二行(即hProcess行)数据窗口跟随。
3、WriteProcessMemory 硬断一次,数据窗口显示OEP
OEP==006AD4A0
二、Patch代码DUMP程序
Patch的目的是使得程序运行后,避开校验,强制解压;如果没避开校验,则运行后会报错C。
1、重载OD,OpenMutexA F2中断一次
2、WaitForDebugEvent 硬断一次,执行到用户代码
3、搜索所有常量FFFFFFF8,六行密集处。点击第一行
or eax, 0xFFFFFFF8 //点击第一行
or eax, 0xFFFFFFF8
or eax, 0xFFFFFFF8
or eax, 0xFFFFFFF8
or eax, 0xFFFFFFF8
or eax, 0xFFFFFFF8
//往上翻找到这四句
0073C30A 83BD CCF5FFFF 0>cmp dword ptr [ebp-0xA34], 0x0 //这一行F2中断一次//关键地址CCC:0073C30A
0073C311 0F8C A8020000 jl 0073C5BF
0073C317 8B8D CCF5FFFF mov ecx, dword ptr [ebp-0xA34]
0073C31D 3B0D 88647700 cmp ecx, dword ptr [0x776488]//关键地址BBB:0x776488
//这一行F2中断一次,留意信息窗口,取得关键地址AAA:0012ED68
信息窗口显示: //关键地址AAA:0012ED68 //务必改成0
(配置好OD插件,并且确保0012XXXX置0,并且没有遗漏加4,才能脱壳成功。)
关键地址AAA:0012ED68
关键地址BBB:0x776488
关键地址CCC:0073C30A
三、找Patch点:Patch代码的位置,第三个FFFFFFF8后的and eax,0ff语句处
add esp, 0xC
and eax, 0xFF //这里是Patch点
test eax, eax
也可以Ctrl+S搜索代码段,留意是在cmp地址之下,最靠近的代码段即是:
add esp, 0xC
and eax, 0xFF
test eax, eax
Patch范式:
inc dword ptr [AAA] ; 这里是Patch点 ;关键地址AAA
mov dword ptr [BBB+4], 0x1 ;关键地址BBB,(配置好OD插件,并且确保0012XXXX置0,并且没有遗漏加4,才能脱壳成功。)
jmp CCC ;关键地址CCC
nop
nop
nop
nop
ENTER跟随 0073C3ED 来到0073C30A ;再次ENTER跟随0073C311,来到新地址0073C5BF
新地址0073C5BF F2软件断点中断1次:
此时Lord PE可以DUMP程序了。
DUMP的是第二个进程,即非正在调试的进程(子进程)。子进程ID十六进制:ee8 十进制:3816
把刚DUMP下的程序入口点改为记录下的程序的OEP
006AD4A0 VA
00400000 BASE
RVA= 006AD4A0 -00400000 =002AD4A0
----------------------------------------------------
!!!!!此时可以关闭原OD了!!!!!
----------------------------------------------------
打开DUMP下的程序,查找IAT的起始位置
Borland语言进入第一个CALL之后的首个CALL找IAT;或者搜索FF 25右键,数据窗口跟随立即数。
C语言第一个CALL右键,数据窗口跟随立即数
IAT信息,
IAT_START:
$ ==> 006EB280 7C96AE65 ntdll.RtlDeleteCriticalSection
IAT_END:
$+770 006EB9F0 7C8024B2 kernel32.Sleep
IAT_SIZE:
778
----------------------------------------------------
重新打开加壳程序,修复DUMP的程序。
记录下带壳程序起始两个字节 55 8B ,等会修被补附加的子进程入口点需要用到。
四、附加子进程并脱壳
1、DebugActiveProcess 硬断一次,堆栈查找子进程ID 0x148。
2、额外打开OD附加子进程,此时可能会卡顿,稍等。
(注意:务必设置好OD,中途禁止更改OD配置,尽量移除反调试插件)
3、中断在系统领空,ALT+F9执行到用户代码。
修改首字节为记录下的加壳程序首字节
4、下面进行被附加的子进程转单进程处理:
OpenMutexA ,F2中断一次;
双进程转单进程汇编范式:
<$fotobatc.1000>
PUSHAD
PUSHFD
PUSH 12FDD8
XOR EAX,EAX
PUSH EAX
PUSH EAX
CALL CreateMutexA
popfd
popad
jmp OpenMutexA
GetModuleHandleA+5硬断,当寄存器出现kernel32.dll的时候,即是返回时机。
Alt+F9返回。
5、下面找到MAGIC_JMP,跳过IAT加密:
MAGIC_JMP:01075FFA
两个salc上设置断点,如果能被中断,说明已经跳过IAT加密;
中断之后,撤销MAGIC_JMP的修改,防止内存检测。
6、找OEP
CreateThread中断一次,执行到用户代码,单步。
单步到这里的时候,使用标志位,进入到第一个CALL即是OEP。
五、脱壳
注意,REC IMP与Scylla选中的是子进程。
子进程IP的16进制形式:148 10进制形式:328
REC IMP填的是相对地址RVA,Scylla填的是绝对地址。
REC IMP修复失败;用Scylla修复,Scylla填的是绝对地址VA。
IAT大小填1000,完全包含我们计算得到的 778大小,出现无效指针直接剪切。
REC IMP修复失败;Scylla修复成功。
修复成功。
脱壳后有兴趣自行尝试破解主程序。
完
链接:
|
评分
-
参与人数 18 | 威望 +1 |
HB +68 |
THX +11 |
收起
理由
|
lies
| |
+ 1 |
|
|
消逝的过去
| |
+ 2 |
|
|
24567
| |
|
+ 1 |
|
attackmyth
| |
|
+ 1 |
[吾爱汇编论坛52HB.COM]-吃水不忘打井人,给个评分懂感恩! |
创客者V2.0
| |
|
+ 1 |
|
虚心学习
| |
+ 1 |
|
|
WolfKing
| |
|
+ 1 |
[吾爱汇编论坛52HB.COM]-吃水不忘打井人,给个评分懂感恩! |
Cerolluo
| |
|
+ 1 |
[吾爱汇编论坛52HB.COM]-学破解防破解,知进攻懂防守! |
十三林
| |
+ 1 |
|
|
weiran324
| |
+ 2 |
+ 1 |
[吾爱汇编论坛52HB.COM]-感谢楼主热心分享,小小评分不成敬意! |
银河星光
| |
+ 1 |
|
|
李帅辰
| |
+ 1 |
|
|
zxjzzh
| |
|
+ 1 |
[吾爱汇编论坛52HB.COM]-学破解防破解,知进攻懂防守! |
后学真
| |
+ 1 |
|
|
temp
| |
+ 1 |
+ 1 |
|
JuStkK
| |
+ 5 |
+ 1 |
[吾爱汇编论坛52HB.COM]-学破解防破解,知进攻懂防守! |
三斤回锅肉
| |
+ 2 |
+ 1 |
[吾爱汇编论坛52HB.COM]-感谢楼主热心分享,小小评分不成敬意! |
Shark恒
| + 1 |
+ 50 |
+ 1 |
[吾爱汇编论坛52HB.COM]-软件反汇编逆向分析,软件安全必不可少! |
查看全部评分
|