安全中国首页 > 文章中心 > 脱壳技术
 
安全中国网友投稿专用上传FTP空间:
Ftp服务器:download.anqn.com
Ftp端口:21
用户名:anqn
密 码:anqn.com
 

爱的中体验之Armadillo3.x双进程之Mr.Captor(图)

更新时间:2008-4-22 0:21:58
责任编辑:果果龙
热 点:


中断

77E62391 >  55              push ebp
77E62392    8BEC            mov ebp, esp
77E62394    51              push ecx
77E62395    51              push ecx
77E62396    837D 10 00      cmp dword ptr ss:[ebp+10], 0
77E6239A    56              push esi
77E6239B    0F84 C2E30100   je kernel32.77E80763
77E623A1    64:A1 18000000  mov eax, dword ptr fs:[18]
77E623A7    FF75 10         push dword ptr ss:[ebp+10]
77E623AA    8DB0 F80B0000   lea esi, dword ptr ds:[eax+BF8]
77E623B0    8D45 F8         lea eax, dword ptr ss:[ebp-8]
77E623B3    50              push eax
77E623B4    FF15 8C10E477   call dword ptr ds:[<&ntdll.RtlInitAnsiSt>; ntdll.RtlInitAnsiString
.....................................................

堆栈提示

0012F574   0049D7D2  /CALL 到 OpenMutexA 来自 MrCaptor.0049D7CC
0012F578   001F0001  |Access = 1F0001
0012F57C   00000000  |Inheritable = FALSE
0012F580   0012FBB4  \MutexName = "204:AB0194A96"   ★注意0012FBB4,以读者看到的为主。


找一块程序领空空地址,写入一些欺骗Arm的代码。

Ctrl+G 401000

00401000    0000            ADD BYTE PTR DS:[EAX],AL  //都是空地址。
00401002    0000            ADD BYTE PTR DS:[EAX],AL
00401004    0000            ADD BYTE PTR DS:[EAX],AL
00401006    0000            ADD BYTE PTR DS:[EAX],AL
00401008    0000            ADD BYTE PTR DS:[EAX],AL
0040100A    0000            ADD BYTE PTR DS:[EAX],AL
0040100C    0000            ADD BYTE PTR DS:[EAX],AL
0040100E    0000            ADD BYTE PTR DS:[EAX],AL
00401010    0000            ADD BYTE PTR DS:[EAX],AL
00401012    0000            ADD BYTE PTR DS:[EAX],AL

替换为

00401000    60              pushad
00401001    9C              pushfd
00401002    68 B4FB1200     push 12FBB4    //这里是我们填入刚才看到的东西
00401007    33C0            xor eax, eax
00401009    50              push eax
0040100A    50              push eax
0040100B    E8 B5A6A577     call kernel32.CreateMutexA
00401010    9D              popfd
00401011    61              popad
00401012  - E9 7A13A677     jmp kernel32.OpenMutexA

将当前的 Eip 77E62391 切换到 401000 来。

点右键 选在此处新建 Eip ,看到Eip 变为 401000

F9运行。

中断

77E62391 >  55              push ebp  //又断在OpenMutexA,Arm已经不会生成双进程了,清除断点。
77E62392    8BEC            mov ebp, esp
77E62394    51              push ecx
77E62395    51              push ecx
77E62396    837D 10 00      cmp dword ptr ss:[ebp+10], 0
77E6239A    56              push esi
77E6239B    0F84 C2E30100   je kernel32.77E80763
77E623A1    64:A1 18000000  mov eax, dword ptr fs:[18]
77E623A7    FF75 10         push dword ptr ss:[ebp+10]
77E623AA    8DB0 F80B0000   lea esi, dword ptr ds:[eax+BF8]
77E623B0    8D45 F8         lea eax, dword ptr ss:[ebp-8]
77E623B3    50              push eax
77E623B4    FF15 8C10E477   call dword ptr ds:[<&ntdll.RtlInitAnsiSt>; ntdll.RtlInitAnsiString
......................................................................

以前脱Armadillo标准壳一般有两种流程的操作方法:

1、先走到OEP,脱壳。第2次调试,找到并直接修改Magic Jump处为JMP,得到输入表,这时程序无法运行,但IAT可以修复。

2、在Magic Jump 处下硬件断点,每次改变标志位使其跳转,继续内存断点到达OEP,这样也是一次就脱壳、修复输入表,但是很慢。

这个程序判断软件过期代码在壳里面,脱壳后日期限制也不存在,过分依耐壳也是共享软件被破解的原因。

首先找Magic jmp

命令行下断点

BP GetModuleHandleA+5

注意,Win2000系统要下 BP GetModuleHandleA,然后将普通断点转换为硬件执行断点,不然Arm作者搞的飞机经常会对你说你在Dedbg!请报告错误给他,怒!

上一页 1 2 3 4 下一页

 
相关文章
一日一文章
 
一日一软件
一日一动画