360加固最新破壳逆向技术-破解Android AES加密传输(思路)

前言

这段时间不是生病了得嘛,但是由于和同学组队要做项目,但是项目里面需要很多数据,于是我对我们学校找人开发的APP下了歹意,因为APP里面有学分,获奖记录等信息。但是...本来我只想抓一下接口的,但是发现并没有这么简单,通过抓包APP发现

于是解决登录是首要问题。

分析APP

  • 首先经过抓包发现(明文:1  密文:BSuUQf4rVp+9tBoSdu360g==)
    =号在base64中是最后补位用的,于是初步判断为(先进行的md5类似的加密后然后再使用base64加密)
    但是密文通过base64解密发现是乱码.....说明他不是base64加密,而是有秘钥的对称加密
  • 由于是有秘钥的加密,那么我就只能一个方法了,逆向APP获取源码.....
  • 将APP安装包导入到Smali2JavaUI软件里面,发现....使用的360加固(如何分辨加密方法自行百度)
  • 有壳心都凉了一大半,百度了N个教程什么Google 哔哩哔哩都看了,都用了还是不行最后只有下面这个方法行通了

360加固逆向破解

配置:python3.7  + frida14.2.15 +frida-tools+木木模拟器

frida的原理,通过在PC上安装Frida,手机上运行frida-server,实现PC对手机的控制,同时通过js注入的方式,将dex从“壳”里“钩”出来。

注意:frida仅支持python3.7及一下版本

如果报magic FD37 错:说明版本没对,建议把frida和frida-tools都重新装一下

//其实不用太在意版本问题,网上很多说只支持Android4.4的 都不用在意,最新版的都可以用

安装环境


pip install frida
pip install frida-tools

下载frida-server文件:https://github.com/frida/frida/releases
在下载frida-server时要和frida的版本一样

使用adb连接模拟器


cd 到adb目录下
adb push frida-server文件地址 /data/local
adb shell
su
cd /data/local
frida-ps -U

如果在运行adb shell 的时候出现连接不到模拟器的情况

输入  adb connect 127.0.0.1:7555

获取源码

知道包名下载需要利用的攻击js代码:https://github.com/GuoQiang1993/Frida-Apk-Unpack

新建一个cmd窗口


frida -U -f 包名 -l dexDump.js --no-pause

然后再使用 adb pull命令吧dex文件转到PC端

源码分析

抓包 登录接口 我们发现密码参数名为:password

再使用jd-gui打开jar文件,然后使用搜索功能搜索有password的文件


其中密码这段代码: ((Map)localObject).put("password", AESUtil.encrypt(this.pwd, SecretKey.getPasswordKey(this)));

我们再看看getPasswordKey,发现了还有一个存秘钥的文件


private static String dex = "key_encrypt.dex";
private static String keyClassName = "net.chinaedu.project.wisdom.KeyConfig";
paramContext = ClassLoaderUtil.getPasswordKey(paramContext, dex, keyClassName);

 

我们再通过以上方法,查看key_encrypt.dex文件找到秘钥。

找到秘钥后我们再看看AESUtil文件

在使用IDEA 编写加密方法,其中Android的base64去网上下个java文件就好了

okk搞定,明文加密后的密文和APP加密后的密文一样

 

点赞

发表评论

电子邮件地址不会被公开。必填项已用 * 标注