一道Android逆向题的取巧解题思路

简介: 一道Android逆向题的取巧解题思路

前言


最近朋友发来一道Android逆向题,挺有意思,花时间研究了一下,在算法逆不出来的情况下(我太菜),用frida取巧解出了题目,记录下学习的过程。


抛出问题


安装打开题目发现是要求输入字符串。    

7cec6336fbf8034d6dd25407ed1ac282_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

随便输入提示错误。

84c9610ab6133770026ceb8563283763_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png


JAVA层静态分析


拖进jadx,先分析下java层。里面类有点多,估计是垃圾代码,直接看Androidmanifest文件找到启动的Activity去分析。  

6768041e8adcb0e1e1fcb242dce71549_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

找到对应的类,一看上面就是一个byte数组,一个loadLibrary,一个native函数,so逆向跑不了。  下面看到对应的按钮点击事件。  

884f4fba35b40251fa6d21092c801b6f_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

继续跟进去看,找到了核心的逻辑,是通过encry函数处理输入字符串,返回一个byte数组,然后和前面的byte数组比较是否相等,那前面的byte数组应该就是加密后的flag,我们要做的就是逆出来。  

b4aaa697c0fc31710f739b1babc9aa48_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png


Native层静态分析


encry是写在native层,对apk解包,取出对应的so(libencry.so)拖进ida。  可以看到是静态注册的,直接能在导出函数里找到。

1b4ce563825dd3726c8244ab6772497f_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

转成C伪码,看一下,我还是太菜,不会。

1f5975ace99279ab0938b3d866a60743_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

动态调了下,也没调明白,我太菜了。


Frida动态hook


关掉ida,直接上frida,先来hook一下这个函数,看看输入输出。  可以hook到,输入的参数以及输出的byte数组

4e1441b0c69e9c257d1e73f52e4480c4_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

这里开始测试(猜),flag格式一般就是flag{xxxxxx},我输入“flag{”进行测试,hook结果如下:  

cb17dc110e4f9211829570a66e7ea54e_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

对比Java层中的byte数组,发现前几位已经能对上了,但是最后一位对不上,应该是因为so层中的加密算法后一位会影响前一位。  到这里就已经可以get到一个比较取巧的思路了,写个rpc脚本调用一位一位爆破flag。


Frida rpc调用


直接hook encry函数,主动调用。  js部分如下:  

3903c2ab0ffdc8484748db7ff3b121f8_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

python调用,爆破部分如下:

a79912bade708f5f4ffe5158c4cd4db1_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

一位一位遍历所有可打印字符跑起来。  成功获取(爆出)到flag。

747da5677f0707693c47887bb5f7dc7c_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png


总结


常规做法做不出来,只能取巧,题目设置也刚好,最终还是以结果为导向,能解题的方法总是好方法。这里只是举例了用frida,实际上也可以使用unidbg去主动调用so进行爆破,原理是差不多的。


相关文章
|
Web App开发 JSON 安全
阿里聚安全攻防挑战赛第三题Android PwnMe解题思路
大家在聚安全挑战赛正式赛第三题中,遇到Android App 远程控制的题目。我们今天带你一探究竟,如何攻破这道题目。
5075 0
|
3月前
|
移动开发 前端开发 Android开发
【02】建立各项目录和页面标准化产品-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
【02】建立各项目录和页面标准化产品-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
346 12
【02】建立各项目录和页面标准化产品-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
|
3月前
|
移动开发 JavaScript 应用服务中间件
【06】优化完善落地页样式内容-精度优化-vue加vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
【06】优化完善落地页样式内容-精度优化-vue加vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
343 5
【06】优化完善落地页样式内容-精度优化-vue加vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
|
3月前
|
移动开发 Rust JavaScript
【01】首页建立-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
【01】首页建立-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
775 4
【01】首页建立-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
|
4月前
|
开发工具 Android开发
X Android SDK file not found: adb.安卓开发常见问题-Android SDK 缺少 `adb`(Android Debug Bridge)-优雅草卓伊凡
X Android SDK file not found: adb.安卓开发常见问题-Android SDK 缺少 `adb`(Android Debug Bridge)-优雅草卓伊凡
598 11
X Android SDK file not found: adb.安卓开发常见问题-Android SDK 缺少 `adb`(Android Debug Bridge)-优雅草卓伊凡
|
3月前
|
移动开发 Android开发
【03】建立隐私关于等相关页面和内容-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
【03】建立隐私关于等相关页面和内容-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
200 0
|
4月前
|
Java 开发工具 Maven
【01】完整的安卓二次商业实战-详细的初级步骤同步项目和gradle配置以及开发思路-优雅草伊凡
【01】完整的安卓二次商业实战-详细的初级步骤同步项目和gradle配置以及开发思路-优雅草伊凡
272 6
|
6月前
|
安全 数据库 Android开发
在Android开发中实现两个Intent跳转及数据交换的方法
总结上述内容,在Android开发中,Intent不仅是活动跳转的桥梁,也是两个活动之间进行数据交换的媒介。运用Intent传递数据时需注意数据类型、传输大小限制以及安全性问题的处理,以确保应用的健壯性和安全性。
432 11
|
6月前
|
移动开发 Java 编译器
Kotlin与Jetpack Compose:Android开发生态的演进与架构思考
本文从资深Android工程师视角深入分析Kotlin与Jetpack Compose在Android系统中的技术定位。Kotlin通过空安全、协程等特性解决了Java在移动开发中的痛点,成为Android官方首选语言。Jetpack Compose则引入声明式UI范式,通过重组机制实现高效UI更新。两者结合不仅提升开发效率,更为跨平台战略和现代架构模式提供技术基础,代表了Android开发生态的根本性演进。
263 0
|
10月前
|
JavaScript Linux 网络安全
Termux安卓终端美化与开发实战:从下载到插件优化,小白也能玩转Linux
Termux是一款安卓平台上的开源终端模拟器,支持apt包管理、SSH连接及Python/Node.js/C++开发环境搭建,被誉为“手机上的Linux系统”。其特点包括零ROOT权限、跨平台开发和强大扩展性。本文详细介绍其安装准备、基础与高级环境配置、必备插件推荐、常见问题解决方法以及延伸学习资源,帮助用户充分利用Termux进行开发与学习。适用于Android 7+设备,原创内容转载请注明来源。
2588 77