Frida-objection 基础使用获取FLAG

移动安全 2年前 (2022) admin
450 0 0

Frida-objection 基础使用获取FLAG

本文为看雪论坛优秀文章

看雪论坛作者ID:shmilyaxy


【工具】jadx-gui静态分析、objection hook





程序基本分析


程序名称1.ab,不知道什么文件格式。


文件目录下通过file分析文件结构。

file *

Frida-objection 基础使用获取FLAG

【droid Backup】安卓备份文件,可以用ade.jer提取。

下载ade.jer,输入命令:

java -jar ade.jar unpack 1.ab 1.tar


将1.ab文件解释成1.tar文件。


解压tar文件:

tar xvf 1.tar


解压tar文件成apps文件夹。


文件夹内存在apk和数据库相关db文件等。





静态分析apk


使用jadx-gui静态分析apk。


手机安装apk,输入账号密码,点击登录,出现字符串,通过jadx-gui中字符串查找定位到函数中。
Frida-objection 基础使用获取FLAG
分析哪里调用该类:
Frida-objection 基础使用获取FLAG


发现是MainActivity类中的onClick方法调用:
Frida-objection 基础使用获取FLAG
仔细分析,onClick的逻辑和整体并没有太大关联,从MainActivity类入手,从onCreate方法开始分析。
Frida-objection 基础使用获取FLAG
【SharedPreferences】Android数据存储


参考链接:
http://c.biancheng.net/view/3099.html

1.获取 SharedPreferences.Editor


调用 edit() 方法获取 SharedPreferences.Editor,SharedPreferences 通过该接口对其内容进行更新。


2.更新 SharedPreferences


通过 SharedPreferences.Editor 接口提供的 put 方法对 SharedPreferences 进行更新。
例如使用 putBoolean(String key, boolean value)、putFloat(String key, float value) 等方法将相应数据类型的数据与其 key 对应起来。


【a方法】

最终MainActivity类的onCreate方法中调用了本类的a方法。
Frida-objection 基础使用获取FLAG


【SQLiteDatabase】Android数据存储


在Activity中实例化自定义的DBHelper就可以通过getWritableDatabase方法获得对应的SQLiteDatabase对象,通过这个对象就可以对数据库进行增删改查操作了。

【ContentValues】


ContentValues 和HashTable类似都是一种存储的机制 但是两者最大的区别就在于,contenvalues只能存储基本类型的数据,像string,int之类的,不能存储对象这种东西,而HashTable却可以存储对象。

Frida-objection 基础使用获取FLAG


【this.b = new a(this, “Demo.db”, (SQLiteDatabase.CursorFactory) null, 1);】


查看 a 继承自SQLiteOpenHelper类。

SQLiteOpenHelper类中方法getWritableDatabase():创建或打开可以读/写的数据库。

参考链接:https://cloud.tencent.com/developer/article/1394216
Frida-objection 基础使用获取FLAG
参考链接:SQlite数据库的加密与解密(https://www.jianshu.com/p/0b2376f3d579?u_atoken=47c0d7bb-640d-48da-be46-6b61f48f46b7&u_asession=01-zIqh8S4hJueZy1N3pBAmf0WurmliLnELFx2Kv7ATrngh6kUxhJw4Y5vyb5yLmn3X0KNBwm7Lovlpxjd_P_q4JsKWYrT3W_NKPr8w6oU7K9BweIxI0UVnrCOKV1Oi88FPpcarp92QKzyJKyYjREPlmBkFo3NEHBv0PZUm6pbxQU&u_asig=056p5cIcPIKtRzQlYqVpNFBZdsmgI5O79u5AanLSpiIhlHx6QpvlM2gt3IEEW0GPaNe_vVeLJGJHAWVhuvVaz88haRO5bzaWJag9VdOHAXqwGvX6EdRr6uuWFctUWRbCqN0olMulPaFxB0z9U9c15y9efpzZ4DlS-RBGhGUTxPRWj9JS7q8ZD7Xtz2Ly-b0kmuyAKRFSVJkkdwVUnyHAIJzfVwuRtx_QXYpgDBKbGnYxleKOBT3Eg2isneKdRDhVEAWPRPQyB_SKrj-61LB_f61u3h9VXwMyh6PgyDIVSG1W-kuCDvZ1h_9VG6XI7IaNLqGVjuvW8Mbnw36tryIj0GRqhXYhSLNr0p8RqzhmbvGvAi1oZNHaS10wUa5ZISNbKEmWspDxyAEEo4kbsryBKb9Q&u_aref=lvLondNlpzw%2B2O0aL9pmlScYTPE%3D


【a方法中的关系总结】
Frida-objection 基础使用获取FLAG

【逻辑】


hook – getWritableDatabase方法,获取参数即可获取密码
主动调用getWritableDatabase方法==主动调用a方法
a方法是普通方法,需要类实例调用





objection hook获取密码


启动objection

objection -g com.xxx.xxx.xxx


hook getWritableDatabase方法(静态分析中知道该方法来自哪个类)

android hooking watch class_method net.sqlcipher.database.SQLiteOpenHelper.getWritableDatabase--dump-args --dump-backtrace --dump-return

Frida-objection 基础使用获取FLAG

堆中搜索MainActivity类实例(因为调用他类中的a方法)

android heap search instances com.example.yaphetshan.tencentwelcome.MainActivity

Frida-objection 基础使用获取FLAG


调用a方法

android heap execute 0x60042a a


Frida-objection 基础使用获取FLAG


【获取密码】:ae56f99





解密数据库获取FLAG


需要使用DB.Browser.for.SQLite软件打开数据库。

下载链接:http://www.sqlitebrowser.org/blog/version-3-11-2-released/


Encryto.db加密数据
Frida-objection 基础使用获取FLAG
Frida-objection 基础使用获取FLAG

【补充下载连接:】
链接:
https://pan.baidu.com/s/1y1LPrUHeVCyZT19DHveMsw
提取码:dbeo




Frida-objection 基础使用获取FLAG


看雪ID:shmilyaxy

https://bbs.pediy.com/user-home-941979.htm

*本文由看雪论坛 shmilyaxy 原创,转载请注明来自看雪社区

Frida-objection 基础使用获取FLAG



# 往期推荐

1.因优化而导致的溢出与CVE-2020-16040

2.LLVM PASS PWN 总结

3.win10 1909逆向之APIC中断和实验

4.EMET下EAF机制分析以及模拟实现

5.sql注入学习分享

6.V8 Array.prototype.concat函数出现过的issues和他们的POC们



Frida-objection 基础使用获取FLAG



Frida-objection 基础使用获取FLAG

球分享

Frida-objection 基础使用获取FLAG

球点赞

Frida-objection 基础使用获取FLAG

球在看



Frida-objection 基础使用获取FLAG

点击“阅读原文”,了解更多!

原文始发于微信公众号(看雪学苑):Frida-objection 基础使用获取FLAG

版权声明:admin 发表于 2022年9月17日 下午6:00。
转载请注明:Frida-objection 基础使用获取FLAG | CTF导航

相关文章

暂无评论

您必须登录才能参与评论!
立即登录
暂无评论...