FRIDA + Objection 内存漫游,HOOK,anywhere

2023-11-19

前言

VX:Ays971124 大家一起吹水加群聊天哦
Friday 是一款很优秀的HOOK工具,不用过多介绍

objection功能强大,命令众多,而且不用写一行代码,便可实现诸如内存搜索、类和模块搜索、方法hook打印参数返回值
调用栈等常用功能,是一个非常方便的,逆向必备、内存漫游神器。objection的界面及命令如下图

在这里插入图片描述

1.1 获取基本信息

首先介绍几个基本操作:

键入命令之后,回车执行;
help:不知道当前命令的效果是什么,在当前命令前加help比如,help env,回车之后会出现当前命令的解释信息;
按空格:不知道输入什么就按空格,会有提示出来,上下选择之后再按空格选中,又会有新的提示出来;
jobs:作业系统很好用,建议一定要掌握,可以同时运行多项(hook)作业;

我们以安卓内置应用“设置”为例,来示范一下基本的用法。

在手机上启动frida-server,并且点击启动“设置”图标,手机进入设置的界面,首先查看一下“设置”应用的包名。

	# frida-ps -U|grep -i setting
	 7107  com.android.settings
	13370  com.google.android.settings.intelligence

再使用objection注入“设置”应用。

objection -g com.android.settings explore

启动objection之后,会出现提示它的logo,执行的应用环境信息命令env和frida版本信息命令
在这里插入图片描述
在这里插入图片描述

1.2查看库的导出函数

运行命令memory list exports libssl.so,效果如下图2-4所示。

在这里插入图片描述
将结果保存到json文件中

当结果太多,终端无法全部显示的时候,可以将结果导出到文件中,然后使用其他软件查看内容

#memory list exports libart.so --json D:/test/libart.json

Writing exports as json to D:/test/libart.json...
Wrote exports to: D:/test/libart.json

在这里插入图片描述

1.3 内存堆搜索与执行

在堆上搜索实例
我们查看AOSP源码关于设置里显示系统设置的部分,发现存在着DisplaySettings类,可以在堆上搜索是否存在着该类
的实例。
首先在手机上点击进入“显示”设置,然后运行以下命令,并得到相应的实例地址:
# android heap search instances com.android.settings.DisplaySettings
	Class instance enumeration complete for [32mcom.android.settings.DisplaySettings[39m
Hashcode  Class                                 toString()
--------  ------------------------------------  -----------------------------------------
45781540  com.android.settings.DisplaySettings  DisplaySettings{2ba9224 #0 id=0x7f110216}

查看源码得知com.android.settings.DisplaySettings类有着getHelpResource()方法(我这里是安卓7.1 每个版本的代码不一样 )

Handle 45781540   is to class com.android.settings.DisplaySettings
Executing method: getHelpResource()
2131626535

也可以在找到的实例上直接编写js脚本,输入android heap evaluate 0x2526命令后,会进入一个迷你编辑器环境,输入console.log(“evaluate result:”+clazz.getHelpResource())这串脚本,按ESC退出编辑器,然后按回车,即会开始执行这串脚本,输出结果。

# android heap evaluate 0x2526
console.log("evaluate result:"+clazz.getHelpResource()) 

1.4 启动activity或service

直接启动activity
想要进入显示设置,可以在任意界面直接运行以下代码进入显示设置:

# android intent launch_activity com.android.settings.DisplaySettings 

查看当前可用的activity

可以使用android hooking list命令来查看当前可用的activities,然后使用上述命令进行调起。
# android hooking list activities

com.android.settings.ActivityPicker
com.android.settings.AirplaneModeVoiceActivity
com.android.settings.AllowBindAppWidgetActivity
com.android.settings.AppWidgetPickActivity
com.android.settings.BandMode
com.android.settings.ConfirmDeviceCredentialActivity
com.android.settings.CredentialStorage
com.android.settings.CryptKeeper$FadeToBlack
com.android.settings.CryptKeeperConfirm$Blank
com.android.settings.DeviceAdminAdd
com.android.settings.DeviceAdminSettings
com.android.settings.DisplaySettings
com.android.settings.EncryptionInterstitial
com.android.settings.FallbackHome
com.android.settings.HelpTrampoline
com.android.settings.LanguageSettings
。。。。。。。。

直接启动service

也可以先使用android hooking list services查看可供开启的服务,然后使用android intent launch_service 
com.android.settings.bluetooth.BluetoothPairingService命令来开启服务。

VX:Ays971124 大家一起吹水加群聊天哦

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

FRIDA + Objection 内存漫游,HOOK,anywhere 的相关文章