jtwc 发表于 2022-4-18 16:41

各位老师,谁有C++支持通配符(**)用特征码读取内存地址的代码?

各位老师,谁有C++支持通配符(**)用特征码读取内存地址的代码?找了几天都没有找到一个能用的。

薛定谔消失的弦 发表于 2022-4-18 17:23

特征码读取内存地址?

jtwc 发表于 2022-4-18 17:32

薛定谔消失的弦 发表于 2022-4-18 17:23
特征码读取内存地址?

老师,对的

asd9988 发表于 2022-4-18 18:09

** 的没有 ??的有
   
//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;
    }

jtwc 发表于 2022-4-18 19:00

asd9988 发表于 2022-4-18 18:09
** 的没有 ??的有
   
//x64支持



谢谢老师,需要通配符(**)

asd9988 发表于 2022-4-18 19:11

本帖最后由 asd9988 于 2022-4-18 19:12 编辑

jtwc 发表于 2022-4-18 19:00
谢谢老师,需要通配符(**)
不如你改改里面的 ? 改成 *试试看?或者给 szSignature
写个文本替换 * -> ? 不就可以了?

jtwc 发表于 2022-4-18 19:16

asd9988 发表于 2022-4-18 19:11
不如你改改里面的 ? 改成 *试试看?或者给 szSignature
写个文本替换 * -> ? 不就可以了?

谢谢老师,试了不可以

email123 发表于 2022-6-12 15:18

asd9988 发表于 2022-4-18 18:09
** 的没有 ??的有
   
//x64支持


表哥方便时请发一个getByte(pat)的函数,thanks

asd9988 发表于 2022-6-13 18:25

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))

email123 发表于 2022-6-13 21:37

asd9988 发表于 2022-6-13 18:25
#define INRANGE(x,a,b)(x >= a && x

thanks{:1_893:}
页: [1] 2
查看完整版本: 各位老师,谁有C++支持通配符(**)用特征码读取内存地址的代码?