临界区,互斥量,信号量,事件,四种进程或线程同步互斥的控制方法在不同恶意软件中的应用

本文讨论了在恶意软件分析中遇到的进程或线程同步互斥控制方法,包括临界区、互斥量、信号量和事件。互斥量常用于确保进程只有一个实例运行,而信号量则可用于进程间通信。事件在多组件协作的场景下表现出优势,如创建、设置和等待事件状态。文章还介绍了互斥量和信号量的基本概念、操作以及两者之间的区别。

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值