数据采集教程,一例 APK 脱壳反编译寻找 AES 密钥过程记录
应客户需要对一款名为“** 主治医师总题库”包名为 com.zitibaohe.zhuzhiyishierke)的 APP 进行采集可行性剖析。
这款 APP 和服务器的通信应用的是 HTTP 协定,很容易抓到数据包,惋惜返回的数据是加密的,如下图所示。
依据以往教训,内容应该是被 AES 加密了。要想还原出明文,必须要反编译拿到 KEY 才行。
下载 APK 文件,用 JADX 对其进行反编译,发现被加壳了,应用的是 360 的加壳工具,如下图所示。
必须先脱壳能力反编译到实在的 APK 源码。脱壳咱们应用 Xposed + FDex2 插件(PS:如果你对 Xposed 还不相熟,倡议先浏览 Xposed 相干文章)。
装置好 FDex2 插件 (不要忘了重启零碎),启动插件,点选要脱壳的 APP,如下图所示。
而后启动指标 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-tool…,抉择对应的加密算法,输出密文、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 模式显示)。
更多抖音,快手,小红书数据实时采集接口,请查看文档:TiToData
免责申明:本文档仅供学习与参考,请勿用于非法用处!否则所有后果自负。