某mo通过Xposed自动抢红包

     最近鄙人接到一个分析某mo抢红包的单子,于是在网上搜到很多关于抢红包的例子,不过大多都是微信抢红包的例子,因此分析的时候也对微信抢红包进行了参考,要实现自动抢红包得通过两步实现:1.对红包消息的监听,2.对红包自动领取。

    对红包消息的监听方法大同小异,hook 加入数据库的函数,hook JSONObject 的 toString 函数,初步估计某mo软件功能很多,有消息界面,所以一般会有数据库存储消息,当然也可能是文件存储,不过前者的可能大的多,因此在/data/data/某mo包名/ 下搜索db格式的数据库文件,找到后通过权限修改命令chmod -R 777修改某一目录及其子目录的权限,然后全部pull出来,通过SQLite Expert Professional 4 - 64bit这一工具查看数据库文件中的内容,多找找一般会找到聊天消息的,结果还真找到了消息,有红包记录,并且是没加密的,JSON格式,于是鄙人通过 hook JSONObject 的 toString 函数,然后过滤实现了对红包消息的监听。

    对于红包的领取操作,某mo和微信还是有很大区别的,某mo的红包领取界面是一个 WebView ,意味着不能像微信一样点击按钮来实现领取,因此这里涉及到了一个 WebView 中 JavaScript 和 Java 代码交互的问题,作为还是菜鸟的我来说,必须要知道一些简单的 WebView 的实现原理才能继续分析了,其实网上也能搜到很多相关资料。WebView中如果要实现 JavaScript 和 Java 代码交互,会调用 WebView 类的 public void addJavascriptInterface(Object object, String name) 这个方法,其中第一个参数是一个 java 中的类,它里面的方法会被JavaScript调用,所以交互的方法一般会存在这个对象里面。

    那要怎么找到这个 addJavascriptInterface 这一方法呢?我觉得可以直接 hook 这一方法,然后打印调用堆栈,即可找到该方法调用的位置,或者 WebView 的使用一般都会用调用 setWebViewClient 和 setWebChromeClient 两个方法,打印调用堆栈,然后这这个方法附近搜索 addJavascriptInterface 这一方法,我使用的 hook setWebViewClient这一方法。找到 addJavascriptInterface 后便能根据第一个参数找到交互代码类了。

    交互代码类中关键方法:

    hook上面的方法,然后便可以分析他的参数,最后能发现领红包的函数也是走这里,所以可以通过反射调用这个函数来领取红包,测试时可以使用广播来测试是否调用函数是否成功,通过广播测试的好处是可以从PC端的cmd中传入参数,例如processMKBridge的参数中涉及到的 id 和红包的 hid 就能通过广播命令行的参数传入。

    最后实现自动抢红包时,得在监听到红包消息来的时候就开始领,但是在原本广播中能领的函数反射调用在监听到红包消息时直接领取出异常,还不知道为什么,因此只能是在监听到红包消息来时,主动发一次广播,然后在广播中反射调用领取红包的函数。红包总共有三种类型:私人双方之间红包,多人讨论组之间的红包,群的红包,实现了其中一个,另外两个都大同小异。

   鄙人是一个新手,有写的不对和不好的地方,烦请指正,谢谢。

猜你喜欢

转载自blog.csdn.net/Denny_Chen_/article/details/84889144