吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 41086|回复: 54
收起左侧

[游戏安全] 教你C++通过特征码找到基址

  [复制链接]
YunYing 发表于 2014-8-8 17:54
本帖最后由 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下的一段代码作为特征码。

QQ截图20140830173822.png

全选以后,点击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:关于易语言扫描的建议,基本代码已经搞定,很快也会上传。可能速度略低吧。

点评

不错,懒人必备的!!!很方便  发表于 2017-2-22 19:52
大神好,前几张图是是用什么工具软件的截图,谢谢  发表于 2016-12-4 08:22

免费评分

参与人数 2热心值 +2 收起 理由
ylb521 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
jiaoweitao + 1 谢谢@Thanks!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

wq0072 发表于 2015-2-4 11:36
又涨姿势了我。
z905108379 发表于 2015-2-1 21:33
长知识了,那么是不是可以用到其他程序上面呢
yAYa的表哥 发表于 2014-12-16 15:31
kanxue2018 发表于 2014-12-16 12:25
只是路过,进来学习
旋冰 发表于 2014-9-28 02:10 来自手机
这个还真要学学
阿水小水 发表于 2014-8-8 18:13
帮顶一下
黄枫叶 发表于 2014-8-24 22:48
本帖最后由 黄枫叶 于 2014-8-24 22:52 编辑

用IDA找,它还有个插件sigmaker,可以自动生成SIG。下图中,上面的是FINDPATTER用的,下面的就是大家熟悉的啦
QQ截图20140824225054.png

免费评分

参与人数 1热心值 +1 收起 理由
YunYing + 1 热心回复!

查看全部评分

 楼主| YunYing 发表于 2014-8-24 23:13
黄枫叶 发表于 2014-8-24 22:48
用IDA找,它还有个插件sigmaker,可以自动生成SIG。下图中,上面的是FINDPATTER用的,下面的就是大家熟悉的 ...

找不到这个插件啊 大神可以发一下嘛?
黄枫叶 发表于 2014-8-25 20:14
https://tuts4you.com/download.php?view.3263
 楼主| YunYing 发表于 2014-8-26 16:12
黄枫叶 发表于 2014-8-25 20:14
https://tuts4you.com/download.php?view.3263

那个是OD的 我现在找到SigMaker0.4了谢谢层主
niefeng0429 发表于 2014-8-27 11:55
只是路过,进来学习,,
旋冰 发表于 2014-9-14 21:03
我又涨姿势了。
cyb5201314 发表于 2014-9-17 16:58
我觉得LZ应该加个搜索算法!
旋冰 发表于 2014-9-20 19:17
学习一下吧
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则 警告:本版块禁止灌水或回复与主题无关内容,违者重罚!

快速回复 收藏帖子 返回列表 搜索

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-4-19 23:50

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表