一、CE打开游戏进程,搜索人物的名字“Abcabc”
二、直接搜索到一个绿色的地址,应该就是基址了,我们切换游戏角色账号,发现该地址内容也随之发生变化
三、代码实现
1、人物是字母组成的情况,直接用printf打印基址内容
printf("人物姓名:%s", (char*)0xC79d18);
2、人物是汉字组成的情况,需要转换
char* UniCodeToAscii(IN WCHAR* szpUnicodeStr, OUT char* szpAsciiStr)
{
int ansiiLen = WideCharToMultiByte(CP_ACP, 0, szpUnicodeStr, -1, nullptr, 0, nullptr, nullptr);
WideCharToMultiByte(CP_ACP, 0, szpUnicodeStr, -1, szpAsciiStr, ansiiLen, nullptr, nullptr);
return szpAsciiStr;
}
WCHAR* utf8ToUnicode(IN char* szpUtf8, OUT WCHAR* szpUniCode)
{
int unicodeLen = MultiByteToWideChar(CP_UTF8, 0, szpUtf8, -1, nullptr, 0);
WCHAR* pUnicode = (wchar_t*)malloc(sizeof(wchar_t) * unicodeLen);
MultiByteToWideChar(CP_UTF8, 0, szpUtf8, -1, pUnicode, unicodeLen);
wcscpy_s(szpUniCode, unicodeLen, pUnicode);
free(pUnicode);
return szpUniCode;
}
char* utf8ToAscii(IN char* szpUtf8, OUT char* szpAscii)
{
int iSizeUtf8 = MultiByteToWideChar(CP_UTF8, 0, szpUtf8, -1, nullptr, 0);
WCHAR* putf8Buf = (WCHAR*)malloc(sizeof(WCHAR) * iSizeUtf8);
utf8ToUnicode(szpUtf8, putf8Buf);
UniCodeToAscii(putf8Buf, szpAscii);
free(putf8Buf);
return szpAscii;
}
void dlltest::OnBnClickedButton6()
{
printf("人物姓名:%s", (char*)0xC79d18);
char rwxm[256];
printf("人物姓名:%s", utf8ToAscii((char*)0xC79d18,rwxm));
}
四、运行效果,第一种方法获取汉字会出现乱码,第二种正常获取,同样,第二种也可以获取字母组成的角色名字
五、项目获取地址
关注公众号编程有你:回复20220511
原文始发于微信公众号(web安全工具库):游戏辅助 -- 分人物的名字及代码实现
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论