每次宅寝室一起点外卖谁下去拿都是个大问题,小编寝室一般选择微信色子谁小谁去拿,但是小编运气不太好 总是输,所以寻思着能不能每次都让色子是6点,皇天不负有心人,果然找到了方法。
准备工作
需要一台已经root并且安装了Hook神奇Xposed框架。在Hook过程中最重要的一点就是要找到Hook点这也是最难的部分。找到Hook点之后编写Xposed模块就比较简单了。
本次实验使用的weixin版本是6513.
猜想假设
我们先猜测微信摇色子是怎么实现的。如果有简单编程经验的朋友肯定会猜测是random函数。其实我也是这么猜的。
逆向分析
反编译apk
进行简单的准备工作:使用apktool反编译apk。使用Jadx打开微信的apk。微信较大,打开会比较慢。
找到色子对应控件的id
这一步可以借助AndroidSDK提供的一个工具:uiautomatorviewer.bat。可以看到下面的界面。
可以看到色子控件对应的id是cph。然后在public.xml中找到cph对应的值为0x7f100d28。
最后用这个值去R类里面找到真正使用的名称为bfq
查找Hook点
最难的部分就是查找hook点。在jadx中全局搜索bqf。显然这个findViewById()才是我们要找的东西,双击点进去看代码。如果有多个需要一个一个看。
上下查看这个类包含的内容。可以知道这是一个baseAdapter类。但是getView方法中没有设置点击事件。