在不同恶意软件中的应用
APT样本分析中遇到的区别
一般木马都是通过互斥锁(CreateMutex),蔓灵花的ArtraDownloader用的是信号锁(CreateSemaphoreA),StrongPity等多组件协作完成攻击链类,用CreateEvent
区别可能在于,创建互斥体可以用于只运行进程的一个实例,而信号量可以进行进程间的通信
而通过事件则可以更好的作用于多组件协作的情况:CreateEvent创建事件、SetEvent设置事件状态,及WaitForSingleObject等待事件状态
前人之轮
作者: JuKevin
互斥量(Mutex)
互斥量表现互斥现象的数据结构,也被当作二元信号灯。一个互斥基本上是一个多任务敏感的二元信号,它能用作同步多任务的行为,它常用作保护从中断来的临界段代码并且在共享同步使用的资源。
Mutex本质上说就是一把锁,提供对资源的独占访问,所以Mutex主要的作用是用于互斥。Mutex对象的值,只有0和1两个值。这两个值也分别代表了Mutex的两种状态。值为0, 表示锁定状态,当前对象被锁定,用户进程/线程如果试图Lock临界资源,则进入排队等待;值为1,表示空闲状态,当前对象为空闲,用户进程/线程可以Lock临界资源,之后Mutex值减1变为0。
Mutex可以被抽象为四个操作:
- 创建 Create
- 加锁 Lock
- 解锁 Unlock
- 销毁 Destroy
Mutex被创建时可以有初始值,表示Mutex被创建后,是锁定状态还是空闲状态。在同一个线程中,为了防止死锁,系统不允许连续两次对Mutex加锁(系统一般会在第二次调用立刻返回)。也就是说,加锁和解锁这两个对应的操作,需要在同一个线程中完成。
不同操作系统中提供的Mutex函数: 动作\系统
Win32
L