其实这件事情技术含量不大,而且网上之前就有过其他教程,稍微看得懂一点汇编的都可以改。但是先前的文章对于一些细节都没有讲得很清楚,因此我这篇其实是补完。
由于文内有较多链接,微信内看的话请点击右上角 在浏览器打开
。
-
工具准备
不得不说 Hopper Disassembler 是个好东西,就是下载起来麻烦了些,昨晚搞了半天,在猫猫的帮助下搞到了这工具,还是把它放在自己的服务器上比较好 >_<
-
反编译程序
整个反编译的过程很简单,找到微信的二进制程序,拖进 Hopper Disassembler 就可以了,一般情况下,微信的程序路径在
/Applications/WeChat.app/Contents/MacOS/WeChat
。反编译的过程是比较慢的,必须等待右下角的 Working 字样消失才可以进行操作,否则程序可能会卡住或是闪退。当看到下方日志栏出现
Background analysis ended
字样时,表示反编译已完成。
-
查找关键函数
关键函数就一个,参考前人的经验,直接找
onRevokeMsg
。
-
修改
将光标放在第一行
push rbp
后面的rbp
上,按Option + A
,输入ret
并点击Assembler and Go Next
,此时窗口会跳到下一行,按ESC
退出即可。
-
重建可执行文件
按
Shift + Command + E
键来重建可执行文件,在此之前,程序会提示你要移除签名,选择Yes
就可以,默认会把重建的程序保存在 Documents 目录内。 -
替换文件
将生成的可执行文件替换到微信里就可以了,当然你需要先关闭微信,在反编译和修改的过程中,你还是可以正常使用微信的,并不需要关闭了才能改。
$ cd /Applications/WeChat.app/Contents/MacOS/ $ sudo mv WeChat WeChat.bak $ sudo cp ~/Documents/WeChat ./ $ sudo chmod 755 WeChat
搞定后直接运行微信客户端即可看到效果。
-
下载
方便起见,我直接提供我改好的可执行文件,懒人可以直接做最后的替换步骤
-
其他要说的
Hopper Disassembler 包含了很强大的生成伪代码的功能,可以帮助开发者整理逻辑,但是这个功能似乎很多人说找不到,其实很简单的,把光标移动函数名称上然后按
Option + Enter
即可。
这样生成伪代码,一次只能一个函数,略显不便,这里也安利一个看雪大牛的程序,他实现了批量导出伪代码的功能,相当的赞。
$ git clone https://github.com/poboke/Class-Decompile