0x1 介紹&安裝Objection
objection是基於frida的命令行hook工具, 可以讓你不寫代碼, 敲幾句命令就可以對java函數的高顆粒度hook, 還支持RPC調用
目前只支持Java層的hook, 但是objection有提供插件接口, 可以自己寫frida腳本去定義接口
比如葫蘆娃大佬的脫殼插件, 實名推薦: FRIDA-DEXDump
官方倉庫: objection
- 安裝前置條件
1 |
1. python版本 > 3.4 |
- 安裝命令
pip3 install objection
安裝完成后, 直接輸入objection
, 就可以看到食用方法了
1 |
Usage: objection [OPTIONS] COMMAND [ARGS]... |
0x2 簡單使用一下
- 使用前幾個使用tips
1 |
1. 空格鍵: 忘記命令直接輸入空格鍵, 會有提示與補全 |
-
啟動Frida-server並轉發端口
-
附加需要調試的app, 進入交互界面
1 |
objection -g [packageName] explore |
- 可以使用該env命令枚舉與所討論的應用程序相關的其他有趣目錄:
env
1 |
com.opera.mini.native on (samsung: 6.0.1) [usb] # env |
- 我們可以使用以下file download命令從遠程文件系統中下載文件:
file download [file] [outfile]
1 |
com.opera.mini.native on (samsung: 6.0.1) [usb] # file download fhash.dat fhash.dat |
-
可以列出app具有的所有avtivity:
android hooking list activities
1
2
3
4
5
6
7
8
9
10
11
12
com.opera.mini.native on (samsung: 6.0.1) [usb] # android hooking list activities
com.facebook.ads.AudienceNetworkActivity
com.google.android.gms.ads.AdActivity
com.google.android.gms.auth.api.signin.internal.SignInHubActivity
com.google.android.gms.common.api.GoogleApiActivity
com.opera.android.AssistActivity
com.opera.android.MiniActivity
com.opera.android.ads.AdmobIntentInterceptor
com.opera.mini.android.Browser
Found 8 classes -
啟動指定avtivity:
android intent launch_activity [class_activity]
1
2
3
com.opera.mini.native on (samsung: 6.0.1) [usb] # android intent launch_activity com.facebook.ads.AudienceNetworkActivity
Launching Activity: com.facebook.ads.AudienceNetworkActivity... -
RPC 調用命令:
curl -s "http://127.0.0.1:8888/rpc/invoke/androidHookingListActivities"
1
2
3
4
5
6
7
8
9
10
11
12
$ curl -s "http://127.0.0.1:8888/rpc/invoke/androidHookingListActivities"
["com.reddit.frontpage.StartActivity","com.reddit.frontpage.IntroductionActivity", ... snip ...]
- RPC調用執行腳本:`url -X POST -H "Content-Type: text/javascript" http://127.0.0.1:8888/script/runonce -d "@script.js"`
$ cat script.js
{
send(Frida.version);
}
[{"payload":"12.8.0","type":"send"}]
0x3 API介紹
以下只是寫了一部分指令和功能, 詳細的功能需要合理運用
空格
和help
呦
-
Memory 指令
1
2
3
4memory list modules //枚舉當前進程模塊
memory list exports [lib_name] //查看指定模塊的導出函數
memory list exports libart.so --json /root/libart.json //將結果保存到json文件中
memory search --string --offsets-only //搜索內存 -
android heap
1 |
//堆內存中搜索指定類的實例, 可以獲取該類的實例id |
- root
1 |
//嘗試關閉app的root檢測 |
-
ui
1
2
3
4
5//截圖
android ui screenshot [image.png]
//設置FLAG_SECURE權限
android ui FLAG_SECURE false -
內存漫游
1 |
//列出內存中所有的類 |
- hook 方式
1 |
/* |
- Spawn方式Hook
1 |
objection -g packageName explore --startup-command '[obejection_command]' |
- activity和service操作
1 |
//枚舉activity |
- 任務管理器
1 |
//查看任務列表 |
-
關閉app的ssl校驗
1
android sslpinning disable
-
監控系統剪貼板
1 |
//獲取Android剪貼板服務上的句柄並每5秒輪詢一次用於數據。 如果發現新數據,與之前的調查不同,則該數據將被轉儲到屏幕上。 |
- 執行命令行
1 |
help android shell_exec [command] |
- 插件編寫 : objection pluging