某些app的逆向实战
x圈
目标:逆向分析出其登录数据包中的各种字段
抓包分析
发现了有一个加密字段codeSign
跑一下java层自吐算法脚本
|
很轻松地看出了这是对我们输入的一些数据进行了md5加密得到的
某电影
目标:去除更新弹窗
在设置界面,我们点击一下版本检测,便会弹出更新弹窗
使用smali-trace定位到了关键类(虽然我目前不会用)。。。。
var utils = Java.use("com.m1905.mobilefree.adapter.mine.SettingActivity"); |
hook一下这个类下面的函数,看看弹出这个界面时候调用了哪个函数
Java.perform(function () { |
点击版本检测按钮,发现checkUpdate被调用
所以直接hook掉这个函数就可以了
Java.perform(function () { |
某宝玩
目标:去除强制更新、解决提交乱码问题、还原加密算法
去除强制更新
一进入这个app便会弹出更新窗口,且无法点击其他地方,无法关闭。这真是太不爽了,身为逆向人员怎么能够忍受呢。
抓包看看
看到了检查更新的字段,说明这个app是通过服务器来检查更新的,查壳发现这个app也是没有壳的,于是想到,我们直接使用jadx反编译这个app然后搜索这个post字段,hook掉发包即可
轻轻松松就搜到了
查找一下相关用例,便可以定位到这个函数,发现这个函数也没有什么业务代码,直接hook掉它就行了
Java.perform(function () { |
由于这个强制更新界面是我们一启动app就出现的的,所以我们要通过spawn的方式启动
解决提交乱码问题
抓一个登录的包,发现提交数据是乱码
这种乱码,一般都是字节,我们可以hook一下getBytes一探究竟
Java.perform(function () { |
java.lang.Throwable |
定位到了一个类似提交数据的地方,查看一下关键类com.hfzs.zhibaowan.network.GetDataImpl
查看完了以后发现很简答,只是将传入的参数进行了base64加密,然后再进行了一个自定算法加密
传入参数: |
还原算法
算法在这,极其简单
java
import javax.script.Invocable; |
javascript
var k = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', '*', '!']; |
过掉一些证书检测
Java.perform(function () { |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Hexo!