最近在逆向一款APP,名字我就不贴了,大概情况就是用模拟器无法正常运行,刚开始怀疑是否特殊安装,开了xposed隐藏root状态、隐藏模拟器等插件等,都会导致闪退,令我百思不得其解,按经验可能是模拟器问题,尝试多换了几款模拟器,都无法正常运行,但是自己实际手机确可以。ps:我手机型号是华为P30

        折腾了两个小时后觉得换个思路,因为这个app有检测代理,开了wifi代理抓包,直接app内提示检测到代理,请先关闭的提示,根据经验告诉我这个是app内部自己的检测提示,随即掏出dex2jar,jadx-ui直接反编译看下代码,发现过程很顺利,apk没有加壳。但是,确看到了如下引用了dcloud(数字天堂)等库,我才反应过来这个是套壳的app,还是用uniapp框架写的,打开手机开发者设置,开启显示布局边界选项(我通常都直接通过这个方法判断是否是网页套壳的app),然后判断的确是套壳的,那合着我反编译工作等于白做了,直接解压apk,找到assets/apps/__UNI__XXXX/www如下图所示,app-service.js就是所有的js核心代码,因为app无法直接设置代理抓包,因此后续会讲到修改app前端代码来屏蔽此项检测。

root 抓包 system_抓包

        因为app无法正常在模拟器下运行,只能运行实体机中,平时常用xposed root框架解除证书限制,自己手机又没root,该怎么办,这是后就有VisualXpoed 免root神器就派上用场了。

ps:我也是第一次用,之前确实也没了解过。

一、工具准备

      性能还过的去的手机一架

      fiddler:网上一大把

      VirtualXposed:官网下载地址

      JustTrustMe:github下载地址

二、apk前端js源码修改

        因为app有检测代理,并且是uniapp框架做的,因此直接查看官方文档,在app-service.js中搜索plus.networkinfo.isSetProxy替换为false,将所有调用此api全部替换为false即可屏蔽,将代码用apktools.jar工具重新打包并签名,教程连接:使用apktool、重新打包及签名 二、手机安装VirtualXposed:

root 抓包 system_android_02

添加应用修改过的目标APP与JustTrustMe插件,然后在visualxposed中重启即可。

三、fiddler抓包准备

此时就可以正常fiddler抓包了,设置代理与端口,然后浏览器访问端口安装https证书,在visualxposed中打开目标app,既可以正常抓包。ps:fiddler抓包流程网上很多,按正常操作即可。

总结:

此方案算是一个抓包方案,针对套壳app以及各种只能在实体机运行正常的app,或者前端代码中做了检测代理处理等。这个方案其实挺麻烦的,因为涉及apk的修改,如果还有更好更快的方案欢迎朋友们评论指出,相互学习~