这里先上一篇文章
http://bbs.52miji.com/thread-10337-1-1.html
转自我爱秘籍论坛,这算是一篇比较好的文章了,网上关于aobscan的实现十分少(我倒是见过一个VB实现的,找不到了)
上面这个aobscan经过测试,10次搜索至少3次失败,且效率低下,这篇文章实现一个十分高效的aobscan算法,准确率高达100%,效率是上面这个的十倍以上。
aobscan原理,即遍历目标进程的内存空间,找出一段特征码,这段特征码通常是一段指令,aobscan得到的地址多用于hook,对于外挂编写意义重大。
/*
内存搜索
a:被搜索内存起始地址。
alen:被搜索内存大小。
b:待搜索内存起始地址。
blen:待搜索内存大小。
返回值:b相对于a的位置。
*/
int memmem(char * a, int alen, char * b, int blen)
{
int i,j;
for(i=0; i<alen-blen; ++i)
{
for(j=0; j<blen; ++j)
{
if(a[i+j]!=b[j])
{
break;
}
}
if(j>=blen)
{
return i;
}
}
return -1;
}
/*
根据十六进制字符获得对应的十六进制数
hex:十六进制字符
返回值:对应的十六进制数
*/
int ctoh(char hex)
{
if