背景
相信很多小伙伴在日常APP安全测试的过程中都会遇到数据包被加密的情况,如

对于像我这种不会拖壳、逆向的菜鸡来说,是很痛苦的,frida的hook老是不成功,写的代码总是运行不起来,别说有多痛苦了,最后找啊找,终于找到了一款xposed的插件Xserver(此处膜拜作者一万年)可以图形化及自动化的协助我们hook想要hook的方法,从而可以协助我们遇到数据加密的场景下对内容进行解密,从而帮助我们继续测试下去,(其实此工具能实现的绝对不止数据加解密,只是平常遇到较多的是这种而已)
(备注:我不是工具作者,我只是工具的搬运工,本文只是一篇工具使用科普而已。。。大佬勿喷)
测试环境
WIN10
逍遥模拟器
Xposed
使用步骤
由于Xserver 是一款基于Xposed的HOOK框架,所有Xposed的安装是必须的,针对逍遥模拟器,可直接在其应用商店安装即可,
Xserver的安装地址https://github.com/monkeylord/XServer
安装完成后,进入Xserver,会提示模块未激活,

此时可以进入xposed里面看下是否进行了勾选


然后重启模拟器在进入就不会再有提示了,如果还不行,请重装xposed
一切就绪后先通过ADB连接模拟器

紧接着,需要将Xervser的web端口转发到本地,默认是8000端口

需要注意的是,如果转发了8000端口本地还访问不到,那可能因为某些原因它初始化的时候没有在8000上,所以这个时候需要通过找PID的值进行转发。

这样子就已经转发成功了,这时候进入Xserver选中待测试的APP

然后回到桌面,打开被选中的待测试APP后,在本地访问127.0.0.1:8000,即可成功hook的web界面了

接下来主要介绍两个功能,一个是trace,访问地址是http://localhost:8000/tracer
一个是hook,访问地址是http://localhost:8000/invoke
模拟器设置好burp代理,打开待测试的APP,抓包发现返回是加密的

此处的思路是返回包被加密,那么程序里一定有一个函数或方法会对其进行解密,且一般的解密的函数命名都有decry之类的字符(只是一般情况下),因此只需对对应的解密函数进行hook就好了,所以我们要做的就是首先加载APP的所有的方法

点击此按钮,加载APP所有的方法

可以看到成功加载了9W+方法,然后盲猜对应的解密方法中有decry之类的字符,进行匹配

可以看到总共有33个方法,那我们就直接**多所有的方法进行hook,这时回到APP,随意发起网络请求

从burp的返回中我们可以看到返回的内容是加密的

不过没关系,我们再去到hook的web界面中可以看到数据包已经被解密出来了,对应的加解密方法、解密密钥也在其中

图中的字符为unicode编码,此时只需要再转码一次即可

说完tracer,就该说说invoke了,我对他的理解就是,可以直接脱离测试APP本身,直接通过Xserver进行调用前面hook的方法进行使用,如回到刚刚tracer那里,我们可以看到已经输出了APP中对应的解密方法,因此点击可直接进入此方法的view

此时我们只需要将对应的参数填进栏目里即可,此时的参数就是从trace中输出的相关参数,注意不要把#号也copy进去
配置好参数后,点击invoke,即可看到burp中拦截到的请求

此时将数据包放过去即可

然后就能看到解密出来的数据包了~~不得不说,Xserver对我这种hook菜鸟来说真的是一大神器啊!
最后再次膜拜作者一万年
参考文章:
1.https://xz.aliyun.com/t/7669

安徽省安庆市 1F
换域名拉,更新一下友链吧
宁夏银川市 B1
@ 同盟源 好的。更新了
宁夏银川市 2F
没事 摸一下我们。。你懂的
浙江省杭州市 3F
这是那个的
中国 4F
这工具真救我狗命了,frida老是搞不定
日本 5F
那个PID转发的问题我也遇到过,得用netstat查端口
印度 6F
decry命名这个思路可以,但有些用AESDecrypt咋办?
山东省淄博市 7F
前几天试了下,加载9W方法直接卡死,有没有优化建议?
广东省佛山市 8F
逍遥模拟器+Xposed这套现在还稳吗,听说新版有点问题
重庆市 B1
@ 御前行走 逍遥模拟器最近是有点抽风,不过降级到旧版能稳住
浙江省 9F
invoke功能有点意思,是不是能绕过部分风控调用?
上海市 10F
我新手一个,adb连上了但8000打不开网页咋整
河北省石家庄市 B1
@ TsukiShadow adb连上后试试 netstat -ano 看8000端口有没有真开,有时候没监听
浙江省 11F
web界面看着挺简洁,就是unicode转码还得自己来,累
江苏省 B1
@ 幽夜猎手 unicode转码确实烦,不过浏览器装个自动转插件就省事了
澳大利亚 12F
膜拜作者+1,这种神器就该多宣传
湖南省长沙市 B1
@ 云朵小糖 必须得给作者磕一个,简直是逆向废物救星
台湾省 13F
这玩意要是能在雷电上跑就更香了
北京市 B1
@ 数据蜉蝣 雷电现在root难搞,Xposed模块兼容性也不太行,建议还是用逍遥稳点
北京市 14F
frida搞不定的时候真靠它续命,比手写hook快多了
四川省乐山市 15F
新手问下,必须用逍遥模拟器吗?mumu能跑不?
江苏省徐州市 16F
加载9w方法卡死正常,建议先筛包名再加载,别全扫
广东省 17F
invoke那块是不是能直接调加密函数重放请求?有点心动
重庆市 18F
这工具对逆向小白太友好了,界面点点就能解密,绝了
江苏省苏州市 19F
我之前也踩过PID转发的坑,后来发现得等Xserver完全启动再adb forward
台湾省 20F
有些APP把decry改成aEsDeCrYpT这种大小写混搭,匹配关键词得灵活点
日本 21F
这工具真香,不用写代码就能hook,太适合我这种手残了
广东省东莞市 22F
逍遥模拟器有点卡,换夜神会不会好点?
台湾省 B1
@ 暗影织梦 夜神流畅不少,我用过。
印度 23F
mumu试过了不行,环境依赖太强,还是乖乖用逍遥吧
上海市 24F
invoke调加密函数重放请求应该没问题,我打算今晚试试
海南省海口市 25F
对我这种逆向小白来说太友好了!
辽宁省朝阳市 26F
web界面简洁但交互有点反人类,比如那个转码要手动太烦了
日本 27F
不是说decry关键字嘛,结果遇到个叫d3cryptData的直接傻眼了
内蒙古锡林郭勒盟 28F
frida总是崩,xposed也动不动挂,就Xserver还能撑住
浙江省杭州市 29F
那个PID转发坑死我了,adb forward前得先杀进程再启动
澳大利亚 30F
加载方法太多卡爆?试试先过滤包名,别一上来就全扫,血泪教训