首页
社区
课程
招聘
[求助]VC6中模糊查找的问题
发表于: 2008-9-3 13:19 5060

[求助]VC6中模糊查找的问题

2008-9-3 13:19
5060
1
2
char *a="EB E9 C0 90 00 FE FF";
char *f="EB ?? ?? 90";


怎么样才能通过 f 找到 a中的 EB E9 C0 90

谢谢 ~~

[注意]看雪招聘,专注安全领域的专业人才平台!

收藏
免费
支持
分享
最新回复 (4)
雪    币: 11705
活跃值: (975)
能力值: ( LV12,RANK:779 )
在线值:
发帖
回帖
粉丝
2
你这个情况,直接比较快一些。不必转为可打印的hex比较。

只要一个int 型的mask即可。更长一点的定义mask字符串。
int mask = 0xFF0000FF;
int val = 0x900000EB;

找到 data & mask == val 即可。

一个类似的。 下面这个是找是否存在的pat的。不能直接套用。
int search_pattern_mask(unsigned char *pxx, unsigned char *pat, unsigned char *smask, int slen)
{
    int j;
   
    for(j = 0; j < slen; j++) {
        if(smask[j] == 0)
            continue;
        if((pxx[j] & smask[j]) != (pat[j] & smask[j]))
            break;
    }
    return ((j == slen) ? 1 : 0);
}
2008-9-3 13:29
0
雪    币: 208
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
readyu   大侠,不是我要找那串哦,只是打了一下简单的比方。因为想知道OllyDbg里面 的 Ctrl+B的功能是怎么实现的。

    所以特上来一问~~~ 好像还是不明白。。。

readyu  大大很热心的帮助我,很感谢哦~ 祝您有个好心情·不要介意偶很笨哈。。。
2008-9-3 14:19
0
雪    币: 11705
活跃值: (975)
能力值: ( LV12,RANK:779 )
在线值:
发帖
回帖
粉丝
4
我用的是比较简单的想法, 掩码比较。
没了解过OllyDbg的实现。

pattern是特征的串,
data是目的,
你根据pattern构造一个它的特征mask。

然后这样比较:
(mask串“与上”pattern)比较 (mask串“与上”当前data)
比如base256,就是我们所说的hex模式:
任意的byte,用0x00去掩码,比较的时候跳过。
确定的byte,用0xFF去掩码

如果是半个字节呢?
比如
?? C0 0F 8? ?? ?? ?? 0?
这样的,就用掩码
00 FF FF F0 00 00 00 F0

3? ?? ?8 4?
F0 00 0F F0

实际上,这样的mask可以对付bit流的模糊匹配。
2008-9-3 14:50
0
雪    币: 208
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5


偶还是先去撞会儿墙再来谢谢readyu大大
2008-9-3 15:07
0
游客
登录 | 注册 方可回帖
返回

账号登录
验证码登录

忘记密码?
没有账号?立即免费注册