Fork me on GitHub

依葫芦画瓢破解QQ for Mac消息撤回功能

a-simple-method-to-crack-QQ-revoke-message-function

前言

之前发布了 多快好省破解Mac版微信消息撤回功能 一文,最后提到据说同理可破解QQ for Mac的消息撤回功能。咱趁热打铁,今儿个就来试试。

例行声明:此方法仅限个人研究学习,请勿用于非法用途。

准备工作

项目备注
有MacOS系统的主机1台配置hold住,虚拟机也可以
QQ for Mac(版本:V6.5.5)并不限定于此版本,目前只要鹅厂工程师不修复,大概率后续版本也能使用此方法修改
Hopper Disassembler v4二进制反汇编器,越用越顺手

废话不多说,接下来进入正题,开始实际操作。

操作步骤

思路一(结果失败)

之前是在逆向工具中搜索字符串“revokemsg”,所以先看看此法是否可行,检索下“revoke”相关的string。

思路一操作步骤

1.把“~/Applications/QQ.app”的WeChat.app复制一份,可以命名为wechat_test.app, 路径为:“~/Applications/QQ_test.app”,这个是用做备份,以防修改失误导致App不可用。(熟手可略)
backup

2.用Hopper加载“/Applications/wechat_test.app/Contents/MacOS/QQ”。 (Hopper使用方法参考 这里 )

3.在逆向工具中检索字符串“revoke”。
这里找到疑似目标:
failed
既然疑似关键代码是je,那就改成jne试试。
(这里涉及汇编语言的“相反指令”知识,即按需要产生与某条分支指令条件相反的分支,实例:jng对应为jg,jne对应为je。)

4.修改完成后保存, Edit - Produce New Excutable …

然而经过验证,发现此路不通,撤销依旧工作的稳稳的orz。那么难道就此结束吗?当然不可能!毕竟,让撤销功能失效这种修改已经操作可以算是Mac App逆向中Hello World级的内容了,要是连这点坚持都没有怎么说得过去。

思路二(成功)

仔细想了想,既然有人确认,同理可以实现显示展示撤回消息的内容,那么大思路方向应上应该没错,可能是切入点没找到。所以,再仔细找找。

思路二操作步骤

1.把“~/Applications/QQ.app”的WeChat.app复制一份,可以命名为wechat_test.app, 路径为:“~/Applications/QQ_test.app”,这个是用做备份,以防修改失误导致App不可用。(熟手可略)

2.用Hopper加载“/Applications/QQ_test.app/Contents/MacOS/QQ”。

3.在逆向工具中检索标签Label中包含“revoke”的内容,发现QQMessageRevokeEngine(QQ消息撤回引擎)这个地方使用率很高。

4.仔细观察下,发现QQMessageRevokeEngine类下有很多很多方法,而[QQMessageRevokeEngine init]立刻进入视野。理论上说:如果[QQMessageRevokeEngine init]这个初始化方法都不可用了,则QQMessageRevokeEngine整个消息撤回流程应该都无法正常运行了。

5.用Hopper将关键代码方法头部ret,即修改函数返回值,选择Modify-Assemble Instruction
success1
success2

6.然后保存测试下,询问是否移除签名时直接移除即可,让修改过的“/Applications/QQ_test.app/Contents/MacOS/QQ”覆盖保存。

Mac OS:
finish_on_mobile

Android:
finish_on_Mac

如图所示,成功达成QQ for Mac消息防撤回的修改。

总结

学逆向破解,除了细心和耐心,也需要认真学习汇编知识,这样在以后的学习中定能起到事半功倍的效果。另外,平时多看他人的逆向文章,也能学到很多有用的逆向知识和破解思路。

其实一开始对逆向破解知识仅有点点兴趣,实际操作后才发现逆向破解其实也很有意思。不过最近计划上还是主攻其它方向的学习,逆向破解方面的内容更新只好“一切随缘”了……(^-^)

-------------  Fin    Thanks for reading!  -------------

本文标题:依葫芦画瓢破解QQ for Mac消息撤回功能

文章作者:TesterCC

发布时间:2019年09月27日 - 00:09

最后更新:2019年09月27日 - 02:09

原始链接:http://blog.fullstackpentest.com/a-simple-method-to-crack-QQ-revoke-message-function.html

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。