apk逆向思路_某apk算法逆向分析过程之旅
发布日期:2021-06-24 11:35:01 浏览次数:2 分类:技术文章

本文共 2078 字,大约阅读时间需要 6 分钟。

某apk算法逆向分析过程

对某app抓包时发现所有请求都进行了加密,便对加密算法简单分析了下。

0x00

在之前的app算法分析中都喜欢从登录处开始入手,但这次因为安装在模拟器 的 app 点登录后直接崩溃, so ,换了个入口点。 很 多 app 最终调用的算法函数名称存在 encrypt 、 decrypt 关键字, 用 jadx 反编译 apk , 全局搜索 关键字 "decrypt" 。

打开 SecurityCryptor 类,看到调用了 动态链接库 ( lib sgmain.so) 进行加密, 关键加 密算法应该就在这里了。

看起来似乎很顺利,记录下在这之前的曲折过程。

0x01

一开始莫名 的搜索了 “ decode ” 关键字。

看到了 DES 关键词 ,打开查看挺像是加解密函数。

搜索哪处调用了 util.y 函数

进一步追踪

加密函数 y.a(str,str2) 具有不同的参数,利用 xposed hook 加密函数 y .a(str,str2) 。

在意见反馈提交信息后并没有看到 hook 日志,也就是说思路错了,这函数不是 最终调用的加密函数。 倒是在 logcat中看到 url after encode 信息。

全局搜索 logcat 信息

关键函数部分 jadx 反编译不出来。

查看 smali 代码后有点 吃力, 使用 smali 动态调式分析。

0x03

smali 动态调试

对 app 进行二次打包,修改AndroidManifest.xml 中 application ,添加 android:debuggable="true" , 重新打包后发现 apk 对签名做了校验,网络通讯功能无法使用。

比较方便的方法 :

• 安装 xposed框架(需要 root ,刷第三方 recovery ),之后安装 xinstaller 模 块 , 设 置 xinstaller 启 动专 家模式,在其他 设 置中开启 “ 调试应用 ”

• 用模 拟 器 进 行 调试 , ro.debuggable默 认为 1 ,不需要二次 打 包。

Android Studio 动态调试 Smali

下载 Android Studio 插件 smalidea - 0.05.zip , 下载地址 : https://bitbucket.org/JesusFr...

安装 smalidea

打开 Android Studio ,按 Alt+Ctrl+S 打开设置界面,点击 Preferences —— Plugins —— Install plugin from disk... —— 选择下载好的smalidea - 0.05.zip 。

重启 Android Studio 。

反编译 apk 用 apktool 反编译 apk , 将反编译好的工程导入 Android Studio , 导入完 Android studio 提示有个警告,如下图所示,点击Configure 。

在终端运行 ,开启 app 调试模式

adb shell am start - D - n com.bbk.appstore/.ui.AppStore

模拟器如下图所示的话说明成功 。

回到 android studio处,已经自动帮我们构建 好了调试环境,打开 smali ,找到 前面的关键函数处 下断点。

开始调试

在右下角的 Watches 窗口 可以添加变量, 查看各个寄存器的值,然后按下 f8 单 步运行这个 apk ,找到具体的加密函数,看 它到底是怎么加密流量的:

后续调试发现程序 调用了一个动态链接库进行加密,然后把加密结果再传递出来, 又 回到了开头 , 下面使用 Brida 调用 lib sgmain.so 的加解密函数,方便测试。

0x04 Brida

Brida 是一款Burp Suite 扩展,作为一座桥梁连接着 Burp Suite 以及 Frida , 以帮助用户修改应用程序与后端服务器之间的通信数据为己任。在分析移动端应 用时遇到应用使用随机密钥式对称加密,如果不知道其使用的密钥就无法篡改其 通信数据,通过Burp 也就无法对所有的交换数据进行更改了,于是 Brida 就这 样出现在我们视野中。

参考: https://www.anquanke.com/post/ id/86567

配置好 Frida 好后,启动 Brida 。

Brida 脚本代码如下:

burp 中使用右键调用 contextcustom2 对请求参数解密

0x05 后续

使用 Brida 插件,省去了分析 so 文件加密算法的时间 ,我们可以直接调用应 用中的方法,来对数据进行加 / 解密 ,而不用去逆向对应的方法。 为了更深入的分析 Android NDK 逆向 ,后续会 使用 IDA 动态调试 so 文件,进一步练手 。

开了一个新群,期待感兴趣的小伙伴加入进来,一起学习交流解决问题,吹水广告勿扰

转载地址:https://blog.csdn.net/weixin_32541663/article/details/111930399 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:vue实现鼠标放上去就有提示_Vue 根据鼠标悬停目标元素上方显示、隐藏指定元素交互实现...
下一篇:华为电脑和手机一碰传_体验华为“一碰传”高科技,实现手机和电脑互传文件...

发表评论

最新留言

初次前来,多多关照!
[***.217.46.12]2024年04月14日 22时36分21秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章