吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1383|回复: 6
收起左侧

[求助] c++怎么写OD中的??通配符

[复制链接]
aswcy815174418 发表于 2021-3-16 19:44
如题,百度了一会没找到答案
(byte)("??")无果

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

gchq2005 发表于 2021-3-16 20:00
通配符 当然是自己判断呀,遇到全部通过就是了,,你不会是做 特征码搜索 吧??
小小吴 发表于 2021-3-16 20:03
//----------------------处理特征码----------------------//
    //去除所有空格
    if (!markCode.empty())
    {
        int index = 0;
        while ((index = markCode.find(' ', index)) >= 0)
        {
            markCode.erase(index, 1);
        }
        index = 0;
        while (true)
        {
            //删掉头部通配符
            index = markCode.find("??", index);
            if (index == 0) {
                markCode.erase(index, 2);
            }
            else {
                break;
            }
        }
    }

    //特征码长度不能为单数
    if (markCode.length() % 2 != 0) return 0;

    //特征码长度
    int len = markCode.length() / 2;

    //Sunday算法模板数组的长度
    int nSundayLen = len;

    //将特征码转换成byte型
    BYTE* pMarkCode = new BYTE[len];
    BYTE* pWildcard = new BYTE[len];
    for (int i = 0; i < len; i++) {
        string tempStr = markCode.substr(i * 2, 2);
        if (tempStr == "??") {
            pWildcard[i] = 0xFF;
            if (nSundayLen == len) nSundayLen = i;        //记录第一个通配符的索引,该索引越靠后,效率越高
        }
        else {
            pWildcard[i] = 0x00;
        }
        pMarkCode[i] = strtoul(tempStr.c_str(), 0, 16);
    }
    //--------------------------end-------------------------//
 楼主| aswcy815174418 发表于 2021-3-17 14:07
gchq2005 发表于 2021-3-16 20:00
通配符 当然是自己判断呀,遇到全部通过就是了,,你不会是做 特征码搜索 吧??

就是做特征码搜索,遇到??不知道咋解决,百度了好多
gchq2005 发表于 2021-3-17 19:31
本帖最后由 gchq2005 于 2021-3-17 19:35 编辑

特征码 字符串 转 int 数组 (别转 byte 数组, ),,“??” 判断 转成,0x100,, 不就行了,,

//////////////////////////处理特征码,转为整型数组便搜索//////////////////////////
        for (int i = 0; i < (int)strlen(chFeat); i += 2)
        {
                if (chFeat == '*' || chFeat == '?')
                {
                        Sstr[i / 2] = 0x100;
                }  // 通配符标记 0x100
                else {
                        strncpy_s(dest, chFeat + i, 2);
                        Sstr[i / 2] = (strtoul(dest, NULL, 16));
                }
        }
        Mlen = (FileSize == 0) ? strlen(Mstr) : FileSize;
        Slen = strlen(chFeat) / 2; // Sstr[] 数组长度
        /////////////////////////////////////////////////////////////////
chenzhi0660 发表于 2021-3-20 01:06
学习我是认真的
 楼主| aswcy815174418 发表于 2021-3-22 21:50
gchq2005 发表于 2021-3-17 19:31
特征码 字符串 转 int 数组 (别转 byte 数组, ),,“??” 判断 转成,0x100,, 不就行了,,

///////// ...

有点难修改,要么你发个测试程序来
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

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

GMT+8, 2025-1-17 03:41

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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