Hook劫获protobuf数据
⽹上相关的Hook教程,讲的基本都是相同的功能,⽐如获取当前号,⼆维码登录,加,获取信息,发消息。但是貌似protobuf⽅⾯的没什么⼈讲到,我⾃⼰百度,Google了下是没到,所以只能⾃⾷其⼒了。
因为⽤的协议是mmtls,发送的数据呢是⽤的google的protobuf,知道这点后,咱可以⾃⼰去⽤protobuf练习写个demo,怎么写demo,咱就不赘述了,咱就说怎么来获取发送的protobuf数据吧。
字符串函数怎么获取1.⾸先咱都知道发请求都会调⽤req2buf相关的函数然后再post出去,接受数据呢会调⽤buf2resp相关的函数对protobuf数据进⾏反序列化,然后再进⾏接下来的逻辑处理。所以咱就随便OD⾥⾯个req2buf相关的函数头进⾏断点
2.接下来咱可以推断req2buf函数⾥⾯肯定调⽤了protobuf相关的序列化函数功能的。那咱就借助IDA,来下关键字。⾸先打开IDA,载⼊WeChatWin.dll,按快捷键shift+f12,切到字符串搜索窗⼝。然后输⼊关键词“google"查,结果如下图:
注意看截图⾥⾯画红框的”“,那为什么是它呢?是因为我⾃⼰在写protobuf练习的demo过程中,发现protobuf序列化和protobuf反序列化过程中都会调⽤到这个⽂件⾥⾯的相关函数。
那是不是只要把这个字符相关的函数给下个断点,就可以获取调⽤⼊⼝了呢。ok,接下来看有哪⼏个函数引⽤了这个字符串,
3.双击红框的地⽅,跳过去,然后再按”X“键查看引⽤的地⽅,结果如图:
可以看到有3个函数引⽤到了,那咱就开OD,对3个函数下断点,然后1步步进⾏调试了,就会到调⽤的⼊⼝函数。因为我⾃⼰已经⽤OD调试过了,就不再演⽰怎么⽤OD⼊⼝函数了,直接⽤IDA来了。
-----------------------------------------
IDA快速查protobuf序列化,反序列化⼊⼝函数。
1. 随便查个req2buf相关的函数
因为有了前⾯的推断,及OD的调试经验。所以可以知道这个函数⾥⾯肯定要有调⽤protobuf序列化的函数。咱就1个函数1个函数的点进去看。过程就不说了,⽬标函数就是画红框那个。它的2个参数呢,就是咱要的
第1个参数是放的序列化后的数据缓冲区,第2个参数是缓冲区⼤⼩。在OD调试的时候就可以把数据给拷出来,放到protobuf解析⼯具⾥⾯做解析。
1.序列化函数⼊⼝断点:
2.继续下⼀步,然后复制数据
3.处理空格,然后解析
protobuf反序列化的⼊⼝函数过程是模⼀样的,先个buf2resp的函数头断点。再相关的函数断点,下⾯附⼀图IDA⾥⾯的buf2resp反序列化的函数⼊⼝点吧。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论