首页
社区
课程
招聘
[原创]从QQ进程内存中搜索出QQ号码
发表于: 2011-2-11 14:00 18883

[原创]从QQ进程内存中搜索出QQ号码

2011-2-11 14:00
18883
代码很简单,纯属老菜业余级别,发上来与大家交流交流。

QQ版本:QQ2011Beta1(2021)
内存特征码:"index?uin="



字符串搜索采用的是仿Sunday算法:
int SearchStr(PTSTR pszString, int iStrLen, PTSTR pszSearchStr)
{
    int i = 0;
    int iSearchStrlen = _tcslen(pszSearchStr);

    while ((i + iSearchStrlen) <= iStrLen )
    {
        int n = 0;
        //先匹配两个字串的第一个字符
        if (pszSearchStr[0] == pszString[i])
        {
            //若相等,则开始逐字符匹配
            for (int j = 0; j <iSearchStrlen; j++)
            {
                //相同位置字符匹配
                if (pszSearchStr[j] == pszString[i + j])
                {
                    //若相同位置字符匹配成功,则计数器加1
                    n++;
                }
                else  //相同位置字符匹配失败
                {
                    //源字符串位置跳过匹配相同的n个字符
                    i = i + n;
                    //跳出当前匹配循环,开始新位置的匹配
                    break;
                }
            }
            //若匹配成功,计数和目标字符串长度相等,则找到目标
            if (iSearchStrlen == n)
            {
                //i为找到的目标字符串在源字符串中的起点位置,
                //此处return,即找到的目标字符串首次出现位置
                return i;
                //找到一个目标,后移一位继续找,
                //如要继续找,请注意最后的return,代码需做点小修改
                //i++;
            }
        }
        else  //若两字符串的第一个字符不同
        {
            //开始反向找源字符串相对目标字符串的后一个字符是否在目标字符串内
            for (int j = iSearchStrlen - 1; j >= 0; j--)
            {
                //找到存在紧跟其后的那个字符
                if (pszSearchStr[j] == pszString[i + iSearchStrlen])
                {
                    //该字符出现在目标字符串中的位置
                    n = j;
                    //只需知道排在倒数第一那个位置,跳出循环开始移动位置
                    break;
                }
            }
            //移动到位置为(一个目标串长度减去出现目标串中匹配字符出现的位置),
            //即如果出现该字符,则使相同的两个字符对齐,若未出现,直接移动一个目标串长度
            i = i + iSearchStrlen - n;
        }
    }
    return 0;
}


完整代码见附件,用Code::Blocks整的,unicode版。

[课程]FART 脱壳王!加量不加价!FART作者讲授!

上传的附件:
收藏
免费 7
支持
分享
最新回复 (28)
雪    币: 120
活跃值: (160)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
看源码。。学习学习。。谢谢共享。
2011-2-11 14:04
0
雪    币: 220
活跃值: (701)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
其他版本的测试,没用
2011-2-11 14:45
0
雪    币: 30
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
哪个版本?可能是特征码不一样吧。
2011-2-11 14:54
0
雪    币: 27
活跃值: (90)
能力值: ( LV8,RANK:120 )
在线值:
发帖
回帖
粉丝
5
貌似QQ密码的MD5值也能在内存中找到。
2011-2-11 14:59
0
雪    币: 656
活跃值: (448)
能力值: ( LV12,RANK:360 )
在线值:
发帖
回帖
粉丝
6
其实...QQ内部有个函数就可以直接取出QQ号......保密保密~~~
2011-2-11 15:21
0
雪    币: 2105
活跃值: (424)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
7
我只是来看搜索算法的
2011-2-11 15:33
0
雪    币: 39
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
搜索的是4GB的内存么?
2011-2-11 18:00
0
雪    币: 393
活跃值: (100)
能力值: ( LV6,RANK:80 )
在线值:
发帖
回帖
粉丝
9
我也写过  = =3
#define QQNUMBER L"123456789"

VOID __stdcall Joker()
{
	ULONG fnGetSelfUin;
	ULONG currentQQ;

	fnGetSelfUin = (ULONG)GetProcAddress(GetModuleHandleA("KernelUtil"), "?GetSelfUin@Contact@Util@@YAKXZ");
	if ( fnGetSelfUin)
	{
		currentQQ = ((ULONG (__cdecl*)())fnGetSelfUin)();
		if ( currentQQ)
		{
			char buf[64];
			wsprintfA( buf, "QQ: %d", currentQQ);
			OutputDebugStringA( buf);
		}
	}
}
2011-2-11 21:43
0
雪    币: 30
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
拜读过iiii兄弟的文章,QQ。。。函数。。。什么的。
2011-2-11 23:21
0
雪    币: 81
活跃值: (25)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
11
厉害啊,学习了…挺复杂的,继续努力…
2011-2-12 06:53
0
雪    币: 1683
活跃值: (674)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
枚举右角下窗口得QQ号的路过
2011-2-12 07:55
0
雪    币: 284
活跃值: (16)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
没营养吖
2011-2-12 09:04
0
雪    币: 30
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
有啊!蓝瓶的,更持久更坚挺。。。哈哈
2011-2-12 10:33
0
雪    币: 92
活跃值: (154)
能力值: ( LV8,RANK:135 )
在线值:
发帖
回帖
粉丝
15
学习一下,挺好的...
2011-2-12 15:42
0
雪    币: 33
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
看来这个就是直接利用其内部函数,直接读取的
2011-2-12 21:22
0
雪    币: 33
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17
想法不错, 可惜只能搜索2011
2011-2-12 21:34
0
雪    币: 220
活跃值: (701)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
18
QQ2009,测试无效果
2011-2-12 21:36
0
雪    币: 30
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
19
我电脑里装的大部分软件都是最新版的,
只要360提示有软件可更新,那我就肯定会更新。
一直就有这个喜新厌旧的习惯,呵呵。
别太在意,工作之余玩玩而已。
2011-2-12 22:03
0
雪    币: 38
活跃值: (33)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
20
搜索太慢,不过有创意~
2011-2-13 13:33
0
雪    币: 107
活跃值: (172)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
21
一篇好帖子……
2011-2-13 18:56
0
雪    币: 468
活跃值: (52)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
22
,,,,,,
2011-2-13 19:12
0
雪    币: 28
活跃值: (25)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
23
来个简单的。。干脆直接找文档下面Tencent Files里面的文件夹好了
2011-2-24 00:25
0
雪    币: 224
活跃值: (10)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
24
支持下。。。
2011-2-25 10:16
0
雪    币: 280
活跃值: (30)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
25
我也是来看搜索算法的
2011-2-27 08:46
0
游客
登录 | 注册 方可回帖
返回
//