各位老师,谁有C++支持通配符(**)用特征码读取内存地址的代码?
各位老师,谁有C++支持通配符(**)用特征码读取内存地址的代码?找了几天都没有找到一个能用的。 特征码读取内存地址?薛定谔消失的弦 发表于 2022-4-18 17:23
特征码读取内存地址?
老师,对的
** 的没有 ??的有
//x64支持
//参数:扫描头,扫描尾,搜索字符串 ,例 4C 8D 45 ?? 48 8B DA ?? 89 ?? B7
DWORD64 signature(DWORD64 scanbase , DWORD64 scanend, const char* szSignature)
{
DWORD64 startAddress = scanbase;
DWORD64 endAddress = scanend;
const char* pat = szSignature;
DWORD64 firstMatch = 0;
for (DWORD64 pCur = startAddress; pCur < endAddress; pCur++) {
if (!*pat) return firstMatch;
if (*(PBYTE)pat == '\?' || *(BYTE*)pCur == getByte(pat)) {
if (!firstMatch) firstMatch = pCur;
if (!pat) return firstMatch;
if (*(PWORD)pat == '\?\?' || *(PBYTE)pat != '\?') pat += 3;
else pat += 2;
}
else {
pat = szSignature;
firstMatch = 0;
}
}
return NULL;
} asd9988 发表于 2022-4-18 18:09
** 的没有 ??的有
//x64支持
谢谢老师,需要通配符(**) 本帖最后由 asd9988 于 2022-4-18 19:12 编辑
jtwc 发表于 2022-4-18 19:00
谢谢老师,需要通配符(**)
不如你改改里面的 ? 改成 *试试看?或者给 szSignature
写个文本替换 * -> ? 不就可以了? asd9988 发表于 2022-4-18 19:11
不如你改改里面的 ? 改成 *试试看?或者给 szSignature
写个文本替换 * -> ? 不就可以了?
谢谢老师,试了不可以 asd9988 发表于 2022-4-18 18:09
** 的没有 ??的有
//x64支持
表哥方便时请发一个getByte(pat)的函数,thanks email123 发表于 2022-6-12 15:18
表哥方便时请发一个getByte(pat)的函数,thanks
#define INRANGE(x,a,b)(x >= a && x <= b)
#define getBits( x ) (INRANGE((x&(~0x20)),'A','F') ? ((x&(~0x20)) - 'A' + 0xa) : (INRANGE(x,'0','9') ? x - '0' : 0))
#define getByte( x ) (getBits(x) << 4 | getBits(x)) asd9988 发表于 2022-6-13 18:25
#define INRANGE(x,a,b)(x >= a && x
thanks{:1_893:}
页:
[1]
2