下你所需,载你所想!
汇集开发技术源码资料

CE的AOB_scan功能源码内存搜索特征码

:8.142KB :1 :2019-12-16 09:38:48

部分简介

想找搜索特征码快点的源码,并不能找到。。
然后马上写了个搜索特征码的功能,搜索的思想就是读出区域内存后匹配字节集找地址
发现??这样的字符不好用字节集匹配,干脆把内存的字节集改成文本来匹配
后来发现文本直接暴力匹配的效果感人→_→,我搜索个特征码放了一下午都还没匹配完
于是就打算改进算法→_→,最先想到的就是kmp,结果因为??通配符的缘故,没法找
然后又用sunday算法来匹配,测试后,时间大概用了半小时匹配完了。。
然后我就想,既然CE搜索那么快,那干脆看一下CE源码里搜索的这段怎么写的吧。
这里贴出CE的源码(CE是pascal写的)下载地址:http://cheatengine.org/download/CheatEngine64src.rar
CE源码作者写得有点乱,没找到搜素特征码那部分,不过找到了一个新思路--限制搜索范围
正常搜索范围是00000000到7fffffff,但其实游戏一般真正有用的地址都是本身进程名那个模块下范围的地址
所以用Process32First和Process32Next来完成限制搜索范围的工作,然后再测试了一下,缩短到1分钟了(搜索范围大概从00400000到0fffffff)
后来实在提不了速了,干脆想新思路→_→
于是想出这样一个思路:
我们先无视??通配符,取一段没通配符的进行搜索,搜索到的地址放到一个记录数组里
然后跳过通配符,把下一段在地址数组里面筛,每次筛掉一点,最后就剩几个了
这个思路看似效率很慢,但易语言自带的 寻找字节集() 这个效率真的特别快,所以效率反而提高了
于是经过测试,没限制搜索范围的用了10秒,限制了搜索范围后秒出!

CE的AOB_scan功能源码内存搜索特征码

热门推荐

相关文章