查看: 86|回复: 0

[转载图文] PC微信逆向:分析发送xml名片call

[复制链接]
发表于 2020-6-9 01:00:25 | 显示全部楼层 |阅读模式
                                                                                        文章目录

    • 微信版本
    • 定位发送xml名片call
      • 发送xml名片call的切入点
      • 定位选择联系人的call
      • 定位发送xml名片的call
        • 定位接收者的微信ID
        • 定位发送xml名片的call
        • 验证发送xml名片的call
      • 方法扩展
微信版本

PC微信逆向:分析发送xml名片call

PC微信逆向:分析发送xml名片call
定位发送xml名片call发送xml名片call的切入点

PC微信逆向:分析发送xml名片call

PC微信逆向:分析发送xml名片call
  在发送xml名片时,需要先选择一个对象,我们首先要找的是选择的call。找到了选择的call,就能确定要发送的对象的微信ID的地址了。有了要发送对象的微信ID的地址之后就能下一个内存访问断点,通过栈回溯找到发送xml名片的call
定位选择联系人的call  那么如何定位到选择联系人的call呢?

PC微信逆向:分析发送xml名片call

PC微信逆向:分析发送xml名片call

PC微信逆向:分析发送xml名片call

PC微信逆向:分析发送xml名片call
  可以通过上面的字符串的区别从而定位到字符串的位置,然后下内存写入断点,再定位到选择的call

PC微信逆向:分析发送xml名片call

PC微信逆向:分析发送xml名片call
  在CE中搜索已选择了1个联系人,找到存放字符串的地址

PC微信逆向:分析发送xml名片call

PC微信逆向:分析发送xml名片call

  变化选择的联系人,最终确定字符串的地址,接着在OD中对这个地址下内存写入断点

PC微信逆向:分析发送xml名片call

PC微信逆向:分析发送xml名片call
  然后在微信选择一个联系人,程序断下。此时删除断点。既然要找选择联系人的call,那么这个call里面必定有一个参数是当前选中的微信ID,根据这个线索,我们在堆栈中找一个带有微信ID的返回地址

PC微信逆向:分析发送xml名片call

PC微信逆向:分析发送xml名片call
  反汇编窗口跟随,这个call就是选择联系人的call

PC微信逆向:分析发送xml名片call

PC微信逆向:分析发送xml名片call
定位发送xml名片的call定位接收者的微信ID  接着我们在选择联系人的call下断,在微信中选择文件助手,让程序断下

PC微信逆向:分析发送xml名片call

PC微信逆向:分析发送xml名片call
  此时堆栈的参数中有选中的微信ID,我们只要通过对这个微信ID下内存访问断点,栈回溯分析,就能找到发送xml名片的call。
  但是,这个ID我们是不能用的,因为它被当作一个参数传入函数中,这个微信ID是个局部变量,只要函数一结束,微信ID会自动销毁。所以我们需要找到函数调用后被赋值为微信ID的变量地址,然后对这个微信ID的地址下内存访问断点

PC微信逆向:分析发送xml名片call

PC微信逆向:分析发送xml名片call
  我们首先在CE中添加这个地址

PC微信逆向:分析发送xml名片call

PC微信逆向:分析发送xml名片call
  接着将这个微信ID修改为一个比较独特的值,然后F8步过这个函数

PC微信逆向:分析发送xml名片call

PC微信逆向:分析发送xml名片call
  搜索修改之后的微信ID,此时多了1个地址。这个多出来的1个地址就是我们所需要的。如果多出来两个地址,可以直接按F9让程序运行,此时地址只剩下一个。
定位发送xml名片的call

PC微信逆向:分析发送xml名片call

PC微信逆向:分析发送xml名片call
  对找到的微信ID的地址下内存访问断点,F9运行程序

PC微信逆向:分析发送xml名片call

PC微信逆向:分析发送xml名片call
  点击发送,此时程序断下,分析附近堆栈

PC微信逆向:分析发送xml名片call

PC微信逆向:分析发送xml名片call
  在堆栈的地址中找到一个参数,里面有微信ID,那么这个很有可能就是我们需要的call。在这个地方下断点

PC微信逆向:分析发送xml名片call

PC微信逆向:分析发送xml名片call
  程序断下,此时eax为微信ID,ecx为空。那么这个不是我们需要的call,继续F8单步往下走

PC微信逆向:分析发送xml名片call

PC微信逆向:分析发送xml名片call
  此时我们看到这个call将ForwardShareCard这个字符串传入了堆栈,这个英文的意思是转发分享名片,那么可以猜测这个函数应该和发送xml名片的call有关系。继续往下单步

PC微信逆向:分析发送xml名片call

PC微信逆向:分析发送xml名片call
  这里有个call eax,此时ecx指向我们分享的名片的微信ID,那么这个函数应该和发送xml名片是有关系的,我们F7进入函数。
  一直单步到这里我们找到了一个call,此时eax指向一个xml的数据

PC微信逆向:分析发送xml名片call

PC微信逆向:分析发送xml名片call
  edx指向接收者的微信ID,那么这个call就非常有可能是我们要找的发送名片的call
验证发送xml名片的call  那么怎么验证呢?我们修改接收者的微信ID,让原本发送给文件助手的xml名片发给好友,如果xml名片发给了微信好友,那么可以证明这个就是我们要的发送xml名片的call
方法扩展  依次类推,这种方法可以定位大多数的微信功能的call,只要是带有这种选择框的call,都可以通过这种方法,先找到选择的函数,然后再通过微信接收者的ID,下内存访问断点,栈回溯分析附近代码找到所需要的call

PC微信逆向:分析发送xml名片call

PC微信逆向:分析发送xml名片call
  目前微信机器人的成品已经发布,需要代码请移步Github。还请亲们帮忙点个star
https://github.com/TonyChen56/WeChatRobot


温馨提示:
1.如果您喜欢这篇帖子,请给作者点赞评分,点赞会增加帖子的热度,评分会给作者加学币。(评分不会扣掉您的积分,系统每天都会重置您的评分额度)。
2.回复帖子不仅是对作者的最好奖励,还可以获得学币奖励,请尊重作者的劳动成果,拒绝做伸手党!
3.发广告、灌水回复等违规行为一经发现直接禁言,如果本帖内容涉嫌违规,请点击论坛底部的举报反馈按钮,也可以在【投诉建议】板块发帖举报。
论坛交流群:672619046
微信公众号
快速回复 返回顶部 返回列表