这次有点骚了,破解安卓某 APP 低层加密学习python的正确姿势关注共 1909字,需浏览 4分钟 ·2020-09-24 08:06 今天给大家分享一下如何逆向分析 Native 层的加密,整个过程的思路值得借鉴,接下来由小帅b的朋友 Houser 给大家进行演示,搞起:所需设备和环境设备:安卓手机(获取root权限)抓包:fiddler + xposed + JustTrustMe反编译:jadx-gui,ida抓包按照惯例,这里隐去 app 的名称,开启 fiddler 抓包后 app 提示连接不到网络,判断是证书验证,开启 xposed 框架,再次请求,成功抓到包,连续请求两次来对比参数变化: 可以看到 x-app-token 这个参数不一样,其他参数都是固定的,先简单看一下 x-app-token 的构成:这样做了一下换行,有没有发现什么规律?我一眼就看出来第二行是手机的 deviceID,因为爬虫写多了,这个字符串经常出现,第一行是 32 位,应该就是个 md5, 第三行是个 16 进制数,知道了这些,接下来就来反编译,搜索这个关键字。反编译反编译之前先使用 ApkScan-PKID 查一下是否有壳,养成好习惯,这个 app 没有加壳,直接用 jadx 打开,全局搜索 “x-app-token”,只有一处,应该就在这里了:从框中代码发现 x-app-token 的值就是 as,而 as 是函数 getAS 生成的,按住鼠标左键,点击 getAS 进去看看详情:它把函数过程写到 native 层中去了,那只好去分析这个名为native-lib 的 so 文件了,解压目标 apk 获取到了如下图这些文件:so文件就在这个lib文件夹里:ida中打开这个文件,切换到 Export 导出函数选项卡,先来直接搜索getAS:没有搜到getAS,倒是搜到了 getAuthString,名字很像,打开看看吧,按 F5 可以把汇编代码转换为伪 c 代码,下拉分析一波,看到了 md5 关键字:代码有点难懂,连懵带猜 v61 应该是 MD5 加密后的结果,然后 append 似乎是在拼接字符串,看到了“0x”,根据抓包的结果已经知道 x_app_token 的第三行是个 16 进制数,那应该是这里的v86了,向上看看它具体是什么:v86存的是 v40 的值,而 v40 就是当前的时间戳,那 x-app-token 第三行应该就是时间戳的 16 进制数。接下来看看 md5 的入参为v58,v52,v53,重点来看v52,往上追朔看到其和 v51 是相等的,而 v51 是一个未知字符串经过 base64 编码得到的,先来hook这两个函数,写段脚本:第1处和2处分别是目标函数的地址,鼠标点到目标函数处,ida左下角会显示,加1是为何,只记得大学时候学过汇编语言讲到段地址,偏移地址,物理地址这些,猜测和这些知识有关,还需研究,这里先这样用,第3处的写法是当这个参数为字符串时的写法,运行一波,看看打印输出:同时也来抓包:把v52的值放到在线MD5网站中加密看看:和抓包得到的结果是一样的,那就证明hook点找对了,那么v49就是base64编码之前的值,v49是什么呢,仔细一看,里面也有deviceID,再来分割一下:第一行通过两次hook,发现他是固定不变的,第二行是改变的,32位,看起来又是个md5,第六行是包名,返回伪c代码,再来分析看看,在前面又看到了MD5加密的地方:那来hook这个函数,看看入参:打印的入参数据为:S是一个时间戳,拿到MD5加密网站上验证一下,正好和v49中包含的字符串相同:至此,逆向就完成了,来总结一下x-app-token的获取过程,先是带有把时间戳进行md5,按下图顺序拼接:然后把拼好的字符串进行base64编码,最后把编码结果进行MD5,得到x-app-token的开头部分,组成如下:接下来写个脚本来请求数据请求代码如下:运行,成功拿到数据:总结今天主要介绍了 native 层 hook 的方法,虽然 so 文件中的伪c代码要有一定的基础才能看懂,但是先不要怕,分析的过程中可以先大胆假设,有 frida 非常强大的 hook 功能,就能一步步验证之前的假设。这两次都是静态分析方法,下次我们再来介绍一下动态调试的方法。最后,以上内容仅供学习交流,希望对你有帮助,那么我们下回见,peace!扫一扫学习 Python 没烦恼 浏览 43点赞 评论 收藏 分享 手机扫一扫分享分享 举报 评论图片表情视频评价全部评论推荐 corgi安卓加密软件corgi是安卓加密软件。设定要加密的软件,当你的损友或好奇的女朋友想要打开你的应用时,要输入密码才可访问哦。全部源码可到https://github.com/jasmine8gu/Corgi下载。我corgi安卓加密软件corgi 是安卓加密软件。设定要加密的软件,当你的损友或好奇的女朋友想要打开你的应用时, 要输入密Crack App | 某新闻 app 注册 token 加密逻辑分析咸鱼学Python0Crack App | 某新闻 app 参数 sn 加密逻辑分析咸鱼学Python0安卓 App 开发简介QS6626643650ac9b1270我又重新上班了,这次有点不一样前端闰土哥0字体加密?看我如何破解某点评反爬逻辑!早起Python0Emby安卓APP使用教程MoMaek0安卓,又要涨价了放毒0Crack App | 某资讯 app 参数 Signature 与 request_sign_q 加密逻辑分析咸鱼学Python0点赞 评论 收藏 分享 手机扫一扫分享分享 举报