某apk算法逆向分析过程之旅

某apk算法逆向分析过程

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

0x00

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

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

clipboard.png

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

0x01

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

clipboard.png

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

clipboard.png

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

clipboard.png

进一步追踪

clipboard.png

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

clipboard.png

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

clipboard.png

全局搜索 logcat 信息

clipboard.png

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

clipboard.png

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

0x03

smali 动态调试

对 app 进行二次打包,修改AndroidManifest.xml 中 application ,添加 android:debuggable="true" , 重新打包后发现 apk 对签名做了校验,网络通讯功能无法使用。
比较方便的方法 :
• 安装 xposed框架(需要 root ,刷第三方 recovery ),之后安装 xinstaller 模 块 , 设 置 xinstaller 启 动专 家模式,在其他 设 置中开启 “ 调试应用 ”
• 用模 拟 器 进 行 调试 , ro.debuggable默 认为 1 ,不需要二次 打 包。

clipboard.png

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

安装 smalidea

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

clipboard.png

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

clipboard.png

在终端运行 ,开启 app 调试模式
adb shell am start - D - n com.bbk.appstore/.ui.AppStore
模拟器如下图所示的话说明成功 。

clipboard.png

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

开始调试

clipboard.png
clipboard.png

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

clipboard.png

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

0x04 Brida

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

clipboard.png

Brida 脚本代码如下:

clipboard.png

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

clipboard.png

0x05 后续

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

clipboard.png

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
某flutter-app逆向分析是指对于一个使用flutter框架开发的应用进行逆向工程分析。逆向工程是通过分析应用的代码、二进制文件等来了解其内部实现细节。 首先,我们需要获取该应用的安装包文件(APK或IPA文件),然后进行解包操作,将其转换为可读取的文件目录结构。 接下来,我们可以使用一些工具来提取应用的资源文件、代码文件等。对于flutter-app来说,可以提取出dart文件,这是flutter的主要代码文件,其中包含了应用的逻辑实现。 通过阅读dart文件,我们可以了解应用的代码结构、数据模型、界面设计等。可以分析应用的逻辑实现方法,包括各种函数、类、方法的调用关系。 同时,还可以通过分析相关配置文件、资源文件等来了解应用的各种设置、资源加载方式等。 在逆向过程中,还可以使用一些调试工具来进一步了解应用的运行机制。例如,hook工具可以拦截应用的函数调用,并捕获输入输出数据,用于进一步分析。 逆向分析的目的可以有很多,比如了解应用的工作原理、发现潜在的漏洞或安全问题、提供参考用于自己的开发等。 需要注意的是,逆向分析需要遵守法律规定。未经授权的逆向分析可能侵犯他人的知识产权,涉及到隐私等方面的问题。因此,在进行逆向分析之前,应该了解并遵守当地相关法律法规,避免产生法律纠纷。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值