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

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

2013-5-10 23:13
8448
最近在看穿山甲的脱壳进程,对这些操作不理解,也没有人脱此壳时仔细讲解原理
                步骤: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就能实现父子进程分离了呢????、求助呀,想了解为什么。。。。

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 0
支持
分享
最新回复 (5)
雪    币: 225
活跃值: (188)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
禁止启动第二个进程,这个就可以对这一个进程调试了
2013-5-11 08:45
0
雪    币: 225
活跃值: (188)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
CreateMutexA 是互斥操作
2013-5-11 08:46
0
雪    币: 2165
活跃值: (4155)
能力值: ( LV6,RANK:85 )
在线值:
发帖
回帖
粉丝
4
嗯哪,就是怎么通过这两个函数实现的呢?
2013-5-11 08:47
0
雪    币: 225
活跃值: (188)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
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
2013-5-11 09:36
0
雪    币: 107
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
这个壳是创建子进程前通过OpenMutex来判断是否已创建互斥体,如没有则创建子进程并创建互斥体;如果判断已创建互斥体则不再进行子进程创建。在调用OpenMutex前先调用CreateMutex创建同名互斥体,让程序以为已创建过子进程了。
2013-6-19 21:36
0
游客
登录 | 注册 方可回帖
返回
//