首页
社区
课程
招聘
[求助]处理穿山甲的双进程保护时为什么要对OpenMutex函数下断呀?
2013-5-10 23:13 7855

[求助]处理穿山甲的双进程保护时为什么要对OpenMutex函数下断呀?

2013-5-10 23:13
7855
最近在看穿山甲的脱壳进程,对这些操作不理解,也没有人脱此壳时仔细讲解原理
                步骤:1 分离父子进程

下断点BP OpenMutexA

F9运行中断后,看堆栈:

0012F798   00434DB8  /CALL 到 OpenMutexA 来自 NOTEPAD_.00434DB2
0012F79C   001F0001  |Access = 1F0001
0012F7A0   00000000  |Inheritable = FALSE
0012F7A4   0012FDD8  \MutexName = "AF0::DA262953ED"                    ★注意这个地址:0012FDD8

在CPU窗口中 Ctrl+G:401000  键入以下代码:

00401000    60                  pushad
00401001    9C                  pushfd
00401002    68 F8FB1200         push 0012FDD8                          ★ 堆栈里看到的值
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

为什么用处理这个函数之前先调用kernel32.CreateMutexA就能实现父子进程分离了呢????、求助呀,想了解为什么。。。。

[CTF入门培训]顶尖高校博士及硕士团队亲授《30小时教你玩转CTF》,视频+靶场+题目!助力进入CTF世界

收藏
点赞0
打赏
分享
最新回复 (5)
雪    币: 225
活跃值: (88)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
rock 2013-5-11 08:45
2
0
禁止启动第二个进程,这个就可以对这一个进程调试了
雪    币: 225
活跃值: (88)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
rock 2013-5-11 08:46
3
0
CreateMutexA 是互斥操作
雪    币: 2165
活跃值: (4020)
能力值: ( LV6,RANK:85 )
在线值:
发帖
回帖
粉丝
户大 1 2013-5-11 08:47
4
0
嗯哪,就是怎么通过这两个函数实现的呢?
雪    币: 225
活跃值: (88)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
rock 2013-5-11 09:36
5
0
0012F798   00434DB8  /CALL 到 OpenMutexA 来自 NOTEPAD_.00434DB2
0012F79C   001F0001  |Access = 1F0001
0012F7A0   00000000  |Inheritable = FALSE
0012F7A4   0012FDD8  \MutexName = "AF0::DA262953ED"                    ★注意这个地址:0012FDD8

在CPU窗口中 Ctrl+G:401000  键入以下代码:

00401000    60                  pushad
00401001    9C                  pushfd
00401002    68 F8FB1200         push 0012FDD8                          ★ 堆栈里看到的值
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
雪    币: 107
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
binghui 2013-6-19 21:36
6
0
这个壳是创建子进程前通过OpenMutex来判断是否已创建互斥体,如没有则创建子进程并创建互斥体;如果判断已创建互斥体则不再进行子进程创建。在调用OpenMutex前先调用CreateMutex创建同名互斥体,让程序以为已创建过子进程了。
游客
登录 | 注册 方可回帖
返回