EasyAnticheat的内存特征算法
2021-06-19 18:59:00 Author: mp.weixin.qq.com(查看原文) 阅读量:116 收藏

本文为看雪论坛优秀文章

看雪论坛作者IDxiaofu
anticheat一般都会有内存扫描的操作,来与数据库中的非法程序进行对比。在进行扫描前,ac会先判断地址是否正确。

判断是否是用户态的可读地址。
如果没问题,则进行内存特征的操作。
根据这个这个表,很容易知道这是hde的反汇编引擎,和crc的哈希。

具体步骤:
1. eac先根据获取当前附加进程的架构x86,还是x64。
2. 接着开始循环遍历内存块,直到找到特定机器码起始的地址
可以看到,x64是寻找sub rsp,xxxx /push rbp或者mov rbp,rsp。x86则是寻找push ebp /mov ebp,esp。
3. 如果找不到,则+0x10个字节继续寻找。如果找到了,先计算当前指令的crc(x64 4个字节,x86 3个字节,这里crc的初始值是0),接着开始遍历下面的内存。
从上面找到地址来看,判断架构,x先用hde尝试获取指令长度,如果反汇编成功,64则判断是否是否0x48或0x0f开头,则crc 2个字节,否则只crc一个字节。x86同理,直到碰到inst_filter中的opcode为止,输出看一下:
碰到这些opcode则结束循环,并把计算的crc保存到全局数组中。
下面来仿写这个算法试试,对ntdll的.text段进行提取特征。
- End -

看雪ID:xiaofu

https://bbs.pediy.com/user-home-99882.htm

  *本文由看雪论坛 xiaofu 原创,转载请注明来自看雪社区。

《安卓高级研修班》2021年秋季班火热招生中!

# 往期推荐

公众号ID:ikanxue
官方微博:看雪安全
商务合作:[email protected]

球分享

球点赞

球在看

点击“阅读原文”,了解更多!


文章来源: http://mp.weixin.qq.com/s?__biz=MjM5NTc2MDYxMw==&mid=2458386966&idx=2&sn=c5ae5e2a551aa49f27529a7b6796c9c9&chksm=b18f329c86f8bb8ab65de03f9bd53a25019fbf256dda439e5b9ebfa740a5a0b65f7a06183d9c#rd
如有侵权请联系:admin#unsafe.sh