本帖最后由 YunYing 于 2017-7-6 15:02 编辑
2017/07/05:易语言版模块(FindPattern函数)已经上传,可以直接使用,密码已经写到提示文本上了,直接复制即可。
效率目前有点低,待优化,以后有时间的吧。
FindPattern_EL_ec.rar
(7.41 KB, 下载次数: 284)
例子
[C++] 纯文本查看 复制代码 dwModuleBase = (DWORD)GetModuleHandle("League of Legends.exe"); MODULEINFO modinfo;
GetModuleInformation(GetCurrentProcess(), GetModuleHandle("League of Legends.exe"), &modinfo, sizeof(MODULEINFO));
dwModuleSize = modinfo.SizeOfImage;
printf("模块基址: %x , 模块大小: %x \n", dwModuleBase, dwModuleSize);
printf("聊天基址搜索中....\n");
dizhi = FindPattern(dwModuleBase, dwModuleSize, (PBYTE)"\x55\x8B\xEC\x6A\xFF\x68\x00\x00\x00\x00\x64\xA1\x00\x00\x00\x00\x50\x83\xEC\x3C\xA1\x00\x00\x00\x00\x33\xC5\x89\x45\xEC\x56\x57\x50\x8D\x45\xF4\x64\xA3\x00\x00\x00\x00\x8B\x55\x08", "xxxxxx????xx????xxxxx????xxxxxxxxxxxxx????xxx");
////////////////////////////// LOL聊天特征码
if (dizhi != 0)
{
printf("找到聊天基址: %x\n", dizhi);
}
else
{
printf("好像没找到聊天基址!可能游戏更新了...特征码变了 嘎嘎\n");
return;
}
return;
这里是搜索的代码
[C++] 纯文本查看 复制代码 BOOL bCompare(const BYTE* pData, const BYTE* bMask, const char* szMask)
{
for(;*szMask;++szMask,++pData,++bMask)
if(*szMask=='x' && *pData!=*bMask) return 0;
return (*szMask) == NULL;
}
DWORD FindPattern(DWORD dwdwAdd,DWORD dwLen,BYTE *bMask,char * szMask) //此处是
{
for(DWORD i=0; i<dwLen; i++)
if (bCompare((BYTE*)(dwdwAdd+i),bMask,szMask)) return (DWORD)(dwdwAdd+i);
return 0;
}
此代码采取逐字节读取的方式不会dump内存,且指针直接操作速度极快。
这个代码比较简单,只能显示第一个的结果,如果想要和插件里面一样,能枚举所有的结果,请自行修改。
搜索的工具是OD的一个插件SigMaker0.4,帖子已上传附件,此插件为英文,我已经汉化(原创汉化有点像机翻不喜勿喷)
教程
这里我随便选择NTDLL下的一段代码作为特征码。
全选以后,点击Sig样式,会自动复制到剪切板,如下:
ntdll Base 774f0000 Size 164000 \x89\x08\x89\x50\x04\x64\xA3\x00\x00\x00\x00 xxxxxxx????
格式为:模块名+基址+扫描大小+对比面具+模糊面具
使用FindPattern时候参数对着输入就可以了,如果扫描结果不准或者有时候扫不出来,自己微调下。
对比面具是精确的特征码,模糊面具中x代表这个字节是固定的,?代表字节可能是随机的,比如Mov eax,111可能重新加载模块变成了mov eax,123,但是mov eax是不动的,这里插件自动判断可变的字节,所以非常方便。
关于扫描范围的问题:这里为了增加准确度可以用能够确定的随机偏移,比如必定在Ntdll+0x6666以后,那么我可以把base调整为Ntdll+0x6666,然后size调整好,自己打开相对偏移,再扫描一下,看看能不能出正确的结果(这样能够增加扫描速度)。
最上面那个是cmc5410发布的LOL聊天基址特征码。
下载
OD插件:
SigMaker.zip
(48.89 KB, 下载次数: 340)
(教程基于OD插件,这两个插件不是一个作者。)
IDA插件:
SigMaker-ida-en.rar
(32.3 KB, 下载次数: 72)
2017/6/3:关于易语言扫描的建议,基本代码已经搞定,很快也会上传。可能速度略低吧。
|