【砍线程-上】理论+个人理解
先了解一下线程,它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。
在这一系列的运行中,每一个模块都会去相对创建一定数量的线程来执行他们的功能:
游戏启动()
{
启动线程(&CRC检测) //创建了一条新的线程去执行我们要开启的某个功能
.....
}
CRC检测()
{
......
......
对指定内存进行循环检测扫描,检测到非法保存本地等待上传/直接上传非法
}
那如果我们不让这个CRC检测的这个子程序运行起来,那就等于检测的相关校验都没执行,那就算有非法操作也无法将非法的内容上传服务器
处理方式:
①枚举进程所有模块和线程,强制结束指定模块的所有线程(例如:TerSafe.dll)
②Hook线程创建API函数来实现线程的不创建
③线程入口直接ret或jmp到sleep(Jmp的方式可以用在你找到一些检测地址直接跳到sleep进行线程休眠)
也欢迎大家补充新的方式,以上为理论,下期实战代码看效果,这个方式只是最简单粗暴的,要被检测很简单。获取线程的相关信息就可以。一般用于刚更新或检测强度为低的时候使用。
未完待续,下一期——砍线程实战