吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1220|回复: 11
收起左侧

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

[复制链接]
jtwc 发表于 2022-4-18 16:41
各位老师,谁有C++支持通配符(**)用特征码读取内存地址的代码?找了几天都没有找到一个能用的。

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

薛定谔消失的弦 发表于 2022-4-18 17:23
特征码读取内存地址?
 楼主| jtwc 发表于 2022-4-18 17:32
asd9988 发表于 2022-4-18 18:09
** 的没有 ??的有
[Asm] 纯文本查看 复制代码
    
//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[2]) return firstMatch;
                if (*(PWORD)pat == '\?\?' || *(PBYTE)pat != '\?') pat += 3;
                else pat += 2;
            }
            else {
                pat = szSignature;
                firstMatch = 0;
            }
        }
        return NULL;
    }

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
slzslz + 1 + 1 用心讨论,共获提升!

查看全部评分

 楼主| jtwc 发表于 2022-4-18 19:00
asd9988 发表于 2022-4-18 18:09
** 的没有 ??的有
[mw_shl_code=asm,true]   
//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
** 的没有 ??的有
[mw_shl_code=asm,true]   
//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[0]) << 4 | getBits(x[1]))
email123 发表于 2022-6-13 21:37
asd9988 发表于 2022-6-13 18:25
#define INRANGE(x,a,b)  (x >= a && x

thanks
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

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

GMT+8, 2024-11-25 10:35

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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