儿科主治医师总题库 --- 一例APK脱壳反编译寻找AES密钥过程记录

9 篇文章 2 订阅
9 篇文章 1 订阅

 应客户需求对一款名为“儿科主治医师总题库”(https://www.wandoujia.com/apps/com.zitibaohe.zhuzhiyishierke,包名为com.zitibaohe.zhuzhiyishierke)的APP进行采集可行性分析。


  这款APP和服务器的通信使用的是HTTP协议,很容易抓到数据包,可惜返回的数据是加密的,如下图所示。

 根据以往经验,内容应该是被AES加密了。要想还原出明文,必须要反编译拿到KEY才行。

 下载APK文件,用JADX对其进行反编译,发现被加壳了,使用的是360的加壳工具,如下图所示。

 必须先脱壳才能反编译到真实的APK源码。

脱壳我们使用Xposed + FDex2插件(PS:如果你对Xposed还不熟悉,建议先阅读Xposed相关文章)。

安装好FDex2插件(不要忘了重启系统),启动插件,点选要脱壳的APP,如下图所示。

FDex2链接:https://pan.baidu.com/s/1smxtinr 密码:dk4v

xposed链接: https://pan.baidu.com/s/1QjQ2CG1Br2SUoGbgHoRfTA 密码: imt4

 然后启动目标APP(儿科主治医师总题库)。使用Root Explorer浏览到APP的数据目录(/data/data/com.zitibaohe.zhuzhiyishierke/)下,如果看到多个dex文件(原本该目录下没有这些文件,如下图所示),说明脱壳成功了。

 将这几个dex文件pull下来,然后依次用JADX对其进行反编译。

由于有多个dex,怎么快速定位我们关注的代码在哪一个里呢?我们可以搜一些特征字符串,比如前面抓包看到的请求URL中的个“questions”,如果找到了,说明八成就是这个dex文件(如下图所示)。

 然后我们再搜索AES相关的关键词比如“AES/”,"SecretKeySpec"或“IvParameterSpec”,最终成功定位(如下图所示),其使用了"AES/CBC/NoPadding"加密算法,对应的KEY和IV都是明文的。

我们来验证下KEY和IV是否正确。借助“AES Online”(http://aes.online-domain-tools.com/)这个在线工具,选择对应的加密算法,输入密文、KEY、IV(如下图所示)。

然后点击"Decrypt",成功还原出明文(如下图所示)。点击“[Download as a binary file]”下载解密后的数据文件,发现内容是JSON格式的,解析之后如下图所示。

 

至此,目标实现。

  除了上述通过反编译源码来获取秘钥外(过程很繁琐),我们还可以利用Xposed的方式(你需要先了解Xposed相关知识),通过HOOK javax.crypto.spec.SecretKeySpec和javax.crypto.spec.IvParameterSpec类来截获KEY和IV,操作过程简单,下面介绍两个相关插件。

1.使用Inspeckage(https://github.com/ac-pm/Inspeckage)这个Android动态分析工具。如下图所示是Inspeckage截获到的AES的KEY,与我们上面通过源码获取到的一致(不过没有获取的IV,原因未知)。

2.我还测了一个叫做CryptoFucker的Xposed插件(https://github.com/Chenyuxin/CryptoFucker),用起来虽然没有Inspeckage方便(没有UI),不过,效果很好,成功获取到了KEY和IV,如下图所示(HEX形式显示)。

 

原文:http://www.site-digger.com/html/articles/20190622/732.html 

  • 1
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值