APP逆向之易班(第一篇)

原本是不想写的,因为这个APP的这个版本其实很简单,后来想了下觉得还行记录一下吧。主要是记录每一次逆向能加深其中学到的知识点内容。也算是给自己一个交代,无论以后还是菜鸡也好还是成了大牛也罢,至少这一刻我没有虚度。

APP:易班

版本:5.0.5

使用到的工具:Frida、adb、jadx-GUI、Fiddler、MDEX、Xposed、MT管理器、逍遥模拟器

安卓版本:7.1.2

目标:实现账号密码登录

一、先抓包分析API接口

 

可以看出来是个post请求,加密的请求分析下来发现都在data里面。

其实加密的就两个地方,一个是password,一个是sig。

下一步就是放到jadx中,但是因为这个APP加壳了,所以应该是先脱壳

二、脱壳

我是用工具MDEX脱壳的,需要安装Xposed。

具体怎么说呢……非要写笔记还真不好描述,就是把APP和MDEX下载好,然后脱壳,再到指定路径把文件拷贝出来,然后再把脱壳后的dex文件从手机拷贝出来弄到电脑本地,再拖到jadx中就OK了。

三、Java层分析加密

这里接下来的查找逻辑其实和JavaScript逆向的逻辑就比较类似了,先Ctrl+F找一下子。

 这里不限于password、什么login这些都可以,这个我就不细说了,因为这个问题细说就很无聊了。总之接下来我找到了这里

怎么说,还能怎么说……

String encryptPassword = EncryptionHelper.encryptPassword(str2);

双击encryptPassword进入

 就到了这里。

private static final String TAG = "EncryptionHelper";
private static final String key = "yibanEncryPlugin";
private static final String transformation = "RSA/None/PKCS1Padding";

public static String encryptPassword(String str) {
        return new String(EncryptUtils.encryptRSA2Base64(str.getBytes(), base64Decode(JNIHelper.getEncodePwdPublicKey().getBytes()), 1024, transformation));
    }

RSA的加密赫然在眼前,还能说什么,找JNIHelper.getEncodePwdPublicKey().getBytes()是什么,也就是找加密的私钥是什么东西。这里至少需要知道RSA加密的基本逻辑和原来。

这里的找不是真的让你肉眼去找,而是frida hook。

如果直接hook ,hook出来的是一串数字,纯一串int类型的数字,这个不能直接用,具体怎么转换完了再写博客详说。

我从网上找了个直接hook RSA原生的语句,运行之后就直接hook住了他的str类型的秘钥。

至于sig这个参数,我发现这个版本其实不用也OK,这让我惊喜又意外的。

 所以现在就可以直接把密码加密发送请求试试了。

 然后这样就成功了。

另外,我这边版本好像现在登录不了了,不知道为什么,我已经学到了我想学的东西,至于其中的原来嘛,或许换个高版本的就可以了。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值