美文网首页
一次逆向工程的记录-Xposed使用

一次逆向工程的记录-Xposed使用

作者: limbo_lyn | 来源:发表于2018-07-10 11:26 被阅读0次

    场景:


    最近接到一个需求,在支付宝上自动批量生成二维码,上传到服务器上。由于使用到的技术挺有趣,因此做一下记录。

    主要使用到的技术是Xposed,但是Xposed只能运行在root后的手机上。辛亏有位大神提供了VirtualXposed,可以完美的在非root的手机上模拟Xposed环境。


    开发思路:

    使用Xposed hook到二维码生成界面和设置金额、备注界面的activity和相关的控件,根据任务不断的模拟用户操作,获取二维码。

    遇到的问题和解决方案:

    Q: 在某些手机上无法正常的使用Xposed log功能

    A:换个手机就好

    Q:支付宝检测到Xposed模块运行,自动关闭

    A:将Xposed模块单独放在一个类内,并对程序进行apk包混淆

    Q:如何正确的hook到需要的控件

    A:首先通过adb 获取到相关的Activity,然后通过反编译获取到支付宝相关代码。

    这些代码都是混淆过的,但是使用混淆过的成员变量名字,依然能够正确的hook这些变量。

    需要注意的是,hook的函数,如果是基类声明的,则必须要在子类被重写才能hook到,否则无法正常hook。

    Q:正确与XPosed模块通信

    A:相关的账号和服务器配置是在我们自己的APP上进行配置的,获取到的支付宝收款二维码是在支付宝APP内,由于安卓相关的安全策略,两个APP是无法直接共享数据的,同时我们无法直接在支付宝调用我们接口。因此需要引入Service。使用Service的Message功能进行任务获取,传递给支付宝。同理,支付宝获取到二维码后,告诉Service,让Service上传相关的二维码。

    更新:

    由于现在大多数手机厂商都会清理Service,因此使用上述的方法在某些手机中无法保证数据传输的安全性,所以在新的版本中使用广播的方式进行数据传输,但是当发送多次后,广播也有可能无法被接收到,所以每次生成二维码后,并不直接传输,而是等到任务完成后,一次性发送。

    程序安装:

    最好保证手机环境干净,没有安装安全卫士和太多的其他APP,防止系统资源不足时,引发的异常。

    首先将APP和支付宝安装到手机内,然后将两者一同安装到VirtualXposed中,将APP的模块勾选上。重启VirtualXposed,在VirtualXposed中运行APP,点击收钱,当后台有任务后,就会自动运行。

    相关文章

      网友评论

          本文标题:一次逆向工程的记录-Xposed使用

          本文链接:https://www.haomeiwen.com/subject/wqlfpftx.html