首页/安卓逆向/ [转]某app的API接口解密笔记,通过hook获取so层AES密钥

[转]某app的API接口解密笔记,通过hook获取so层AES密钥

作者:神奇   分类:安卓逆向   时间:2020-07-28 02:12:43  标签:


某app的API接口解密笔记
一次解密,给刚开始接触逆向的新人点经验
话不多说,先上封包:

POST https://api.c8521.com/api HTTP/1.1
Content-Type: application/x-www-form-urlencoded;charset=UTF-8
User-Agent: Dalvik/2.1.0 (Linux; U; Android 5.1.1;redmi 3s Build/LMY47I)
Host: api.c8521.com
Connection: Keep-Alive
Accept-Encoding: gzip
Content-Length: 445
payload=CEHDOmG4lcviYZnCskdZzQ%3D%3D.UwcncrX7zZcJVxehkKCij0gHTeQKWLwZ6XfItcalvDFmPcihmnZrkrxpQF%2B43d9U9pa1L6pqeylM%0AgjAvlwH0%2Bwf29Lo5%2BbPX4yv0Cl%2BZx%2BjTHE%2Foo02gFbBqdgYbfIdiYN8F1%2F5x9P42p7bFGnVxilOS%0AiwREH3epLnzJBtOEEBBtKJrHGF8fr%2Bc7E%2BJKILrLujBVVXgJzVMZrmga%2FC9k8u4sevfM4RFUQbDc%0AOoPKpWrV7SPN1hs1FiczQ%2FUv72ANArtvhqN0f7HzAxsaPPwvzVeXA3Chwcv89zQqM1%2BZobBScSQO%0Ai0pKoGtWzbOfK5Yj3iSq6qk8LnGMJ5uohqCR4d5fwMF7OfCZPDDK%2Boi397U%3D%0A&
因为是对称加密,看这个样子,应该是属于AESDES这类的

看了下dex大小,应该是没加固的,dex拖到dex2jar里面去

0.png

再把jar拖进gui

0.png

成功得到源码

接下来就是定位加密的地方,通过提交数据的参数,查找关键词

找到关键地方

0.png

提交参数是两段base64编码过的数据

第一段:
payload=CEHDOmG4lcviYZnCskdZzQ%3D%3D
中间是点分隔开的
第二段
UwcncrX7zZcJVxehkKCij0gHTeQKWLwZ6XfItcalvDFmPcihmnZrkrxpQF%2B43d9U9pa1L6pqeylM%0AgjAvlwH0%2Bwf29Lo5%2BbPX4yv0Cl%2BZx%2BjTHE%2Foo02gFbBqdgYbfIdiYN8F1%2F5x9P42p7bFGnVxilOS%0AiwREH3epLnzJBtOEEBBtKJrHGF8fr%2Bc7E%2BJKILrLujBVVXgJzVMZrmga%2FC9k8u4sevfM4RFUQbDc%0AOoPKpWrV7SPN1hs1FiczQ%2FUv72ANArtvhqN0f7HzAxsaPPwvzVeXA3Chwcv89zQqM1%2BZobBScSQO%0Ai0pKoGtWzbOfK5Yj3iSq6qk8LnGMJ5uohqCR4d5fwMF7OfCZPDDK%2Boi397U%3D%0A&
我们先分析这段源码,看看第一段怎么生成的


点前面的参数是localObject1 byte[] 类型的,是由com.ilulutv.lulu.other.h.a.a()这个方法生成的

0.png

点进去,看来是随机生成的一个16字节

0.png

然后在看到这里调用的这个方法

0.png

点进去是一个base64编码

0.png

再来看第二段参数

0.png

点进去

0.png

果不其然是一个AES加密,第一个传进来的参数是key,第二个是iv,第三个是原文

0.png

Iv是刚才随机生成的一个16字节

第一个参数调用的方法再去看看密钥的生成方式:

0.png

Get再进去

0.png

到这里可以看出来,是调用了so层,看来这个APP是把密钥计算方法放在了so层,通过传入参数返回计算好的密钥。

分析so太麻烦(因为不会,小声bb),这里就直接hook AES加密那个函数得到密钥了,


打开AndroidStudio,开始编写hook

0.png

填入包名,类名,方法名,传入参数类型就行了


把生成的apk装到模拟器,再激活xp模块,打开app以后,去日志查看
0.png

这样子解密就完成了,好像这个app有很多对密钥,用在不同的地方,就不一一分析了,希望对刚开始学习逆向的新人有所帮助,最后说一句:支持开源!

温馨提示如有转载或引用以上内容之必要,敬请将本文链接作为出处标注,谢谢合作!

评论:

发表评论:

code