分析PC微信二维码图片

2019-10-12  本文已影响0人  DF_Sky

本人也只是兴趣爱好,初学者,一个菜鸟而已,主要分享下自己的学习思路和方法,也方便日后复习
这里非常感谢看雪鬼手的教程

进入正题
这是我当前使用的PC微信版本


image.png

我们先分析怎么获取二维码图片
我按照鬼手的教程 用CE通过未知初始值过滤,然后通过来回切换刷新二维码 感觉一直搜不出来 过滤到最后 剩余结果还是很多
所以我们这里换一种方法


image.png

我们从他的二维码图片格式入手,这里先说一下,微信二维码图片是png格式的,这个在鬼手教程里也有说到这点,
所以我们通过png文件格式来作为突破口,也就是分析png格式的特征
我们百度一下,做个简单的了解,我简单截取了一篇文章的部分
使用UltraEdit32打开该文件,如下:

00000000~00000007:

image

可以看到,选中的头8个字节即为PNG文件的标识。这是固定的

接下来的地方就是IHDR数据块了:

00000008~00000020:

image

我们就提取一些固定的特征 来作为突破口
比如说
他的前8个字节:89 50 4E 47 0D 0A 1A 0A
IHDR标识: 49 48 44 52 都可以
我们这里就通过字符串IHDR标识来做一个搜索 或者直接搜字节也可以 大家怎么舒服怎么来
CE搜索IHDR


image.png

有5个正确的结果 其他的好像又变了 我们可以忽略掉 大家搜的时候 可以把快速扫描去掉 不然有时候可能会出现搜不到的情况
我们先看第一个结果059D94FC
我们搜一下谁保存的这张图片的地址 我们搜的时候要把059D94FC-C 这里要-C,我们看上面结构,因为IHDR是第13个字节 我们要回到首地址 -C完就是 059D94F0 因为其他地方如果保存的话 存放的肯定是首地址, 如果大家对内存有些许了解 应该很好懂


image.png

好像搜不到东西,我们就暂时先pass掉这个 来看第二个
第二个 05BA8714 同理 我们-c 得到5BA8708


image.png
我们把这个结果放到下面 保存起来

第三个 10a49984 -c 得到10A49978


image.png

保存起来
第四个 10a4b70c -c得到 10a4b700


image.png
好像没结果 不管 pass
image.png

只剩两个结果了
我们就来验证一下 哪个是 我们用手机扫描下二维码 实现二维码的切换 他的地址就会变

image.png

我们不登录 再点击返回二维码界面 这样就实现了二维码的切换


image.png

再回来


image.png

发现第二个变了 第一个没变 可能是其他的什么图片 我们不管
反正第二个就是二维码图片 就对了
我们可以再次验证 把他从内存中 dump下来

image.png
我们来看看这个二维码的内存存放
image.png
我们在来了解一下Png格式的结尾标记 IEND数据块
00 00 00 00 49 45 4E 44 AE 42 60 82 这可以理解为结束标记 也就是说 我们拷到这里即可 多复制点也无所谓 解析的时候 会自动忽略在这之后的内容
然后我们复制16进制数据 我们把它还原成字节集 也就是 字节数组 转换图片
image.png
然后我们扫码 发现扫了之后 微信客户端 出现了确认登陆 表示我们成功啦

现在如果我们要用代码 读内存 来读取二维码图片 我们怎么知道他的大小呢? 有些同学可能会想到刚刚提到的结尾标识
但是我们再回到保存这个二维码地址的那个 地址 058C6268 这个地址存着二维码图片的地址
其实这里应该是个结构


image.png

也就是说058C6268 +4 偏移4存放图片大小
因此 058C626C 存放图片大小

上一篇 下一篇

猜你喜欢

热点阅读