Frida進階內存漫遊

2020-10-11 無情劍客Burning

在前面的系列文章中對Frida相關的API進行了介紹。


Hook everything

Frida只是提供了各種API供我們調用,在此基礎之上可以實現具體的功能,比如禁用證書綁定之類的腳本,就是使用Frida的各種API來組合編寫而成。於是有大佬將各種常見、常用的功能整合進一個工具,供我們直接在命令行中使用,這個工具便是objection。

objection基本整合了常用的各種hook功能,在逆向apk、Hook代碼、查看內存信息的時候為我們提供極大的方便。使用objection掌握常用的命令,大部分情況下是不需要寫任何代碼的。

內存漫遊

啟動objection

保證Frida server開啟 命令行輸出

objection -g com.lingpao.lpcf622b explore

  1. 查看基本信息
  2. 查看內存中加載的庫 memory list modules
  3. 查看庫的的導出函數 memory list exports libgsl.so
  4. 提取整個內存 memorydumpall from_base後續文章會對dump出的內存做詳細的分析。
  5. 搜索整個內存 memory search"88"--string--offsets-only, 關於如何進行的搜索,在Frida API使用(2)中介紹了通過Frida進行搜索。Objection對通配符的支持不好。

Hook anywhere

  1. 列舉內存中的所有類 android hooking list classes
  2. 在內存中所有已加載的類中搜索包含特定關鍵詞的類 android hooking search classes game
  3. 內存中搜索所有的方法 android hooking search methods game 非常耗時的一個操作。
  4. 列出類的所有方法 android hooking list class_methods com.fish.main.MainGameActivity
  5. 直接生成hook代碼 android hooking generate simple com.fish.main.MainGameActivity 沒有參數,需要自行添加。
  6. hook類的所有方法 android hooking watchclasscom.fish.main.MainGameActivity 當需要調用相應的方法的方法的時候,可以看出相應的hook信息被列印出來。關於Activity的聲明周期在Frida API進階-文件有介紹。
  7. hook方法的參數、返回值和調用棧 android hooking watch class_method com.fish.main.MainGameActivity.onWindowFocusChanged--dump-args--dump-return--dump-backtrace
  8. hook方法的所有重載 android hooking watch class_method java.io.File.$init--dump-args

啟動Activity或者Service

  1. 查看當前可用的Activity android hooking list activities
  2. 直接啟動activity android intent launch_activity com.zhihu.matisse.ui.MatisseActivity
  3. 查看可開啟的服務 android hooking list services
  4. 開啟服務 android intent launch_service com.cameraphotodemo.localnotificationfunction.ExtFuncUtils$DetectService

objection的缺陷

  • 缺少對Native層的支持
  • 對象類型的數據列印有問題,比如Byte array和Json,會顯示成[object,object]
  • 對Spawn方式啟動的支持不夠流暢

退出

exit

抓包

Tcpdump進行抓包,具體可參見下圖,後續文章會詳細講解抓包。

通過 tcpdump-h可以查看每一個參數的含義。

公眾號

更多Frida相關內容,歡迎關注我的微信公眾號:無情劍客。


相關焦點

  • Frida API進階
    通過這部分的介紹,可以發現通過Frida操縱內存、查看模塊等信息是如此的簡單。操作內存,最重要的自然就是打補丁了,邪惡的微笑。>Memory對象Memory的一些API通常是對內存處理,譬如Memory.copy()複製內存,又如writeByteArray寫入字節到指定內存中。
  • Frida進階-API
    同時簡單介紹下HOOK 系統函數的利器frida-trace。內存,內存還是內存。>function frida_Java$new(Java.array(&39;, [ 0x48, 0x65, 0x69 ])); });} setImmediate(frida_Java,0);部分運行結果如下:
  • Frida腳本教程
    Frida腳本FRIDA腳本就是利用FRIDA動態插樁框架,使用FRIDA導出的API和方法,對內存空間裡的對象方法進行監視、修改或者替換的一段代碼。Hello worldHello world經典的入門程序,frida版本的來一個。
  • Frida之API使用進階
    Kernel顧名思義,與內核相關的,枚舉內核加載的模塊,或者操控內核內存部分。運行 frida-U-l hello.js com.lingpao.lpcf622b–debug--runtime
  • Frida全平臺使用
    pip install frida-tools網上狠毒文章說使用 pip install frida 和 pip install frida-tools 進行安裝,但是現在一條命名就夠了。如果不嫌麻煩,也可以通過源碼進行安裝。
  • frida學習筆記3 之hook so中的方法
    hook so 常用工具SubstrateCydia-需rootfrida--需rootVA系列-非root(VA、VXP、SandVXposed)frida方式hook材料準備heibaobao.apk
  • 當Frida來「敲」門
    0x2 fridafrida是平臺原生app的Greasemonkey,說的專業一點,就是一種動態插樁工具,可以插入一些代碼到原生app的內存空間去,(動態地監視和修改其行為),這些原生平臺可以是Win、Mac、Linux、Android
  • 詳解Hook框架frida,讓你在逆向工作中效率成倍提升!
    2.你能用DBI做些什麼呢(1)訪問進程的內存(2)在應用程式運行時覆蓋一些功能(3)從導入的類中調用函數(4)在堆上查找對象實例並使用這些對象實例(5)Hook,跟蹤和攔截函數等等二、frida的安裝今天我們用到的frida框架分為兩部分: 一部分是運行在系統上的交互工具frida CLI
  • Frida API之網絡
    在Frida API進階-文件 對文件描述符、輸入輸出流進行了介紹。本篇文章集於此介紹Frida中網絡相關的API。SocketSocket.listen([options]): open a TCP or UNIX listening socket.
  • Frida之文件操作
    import frida,sysdef on_message(message, data): if message[&39;] == &39;: print(&34;.format(message[&39;])) else: print(message)passsession = frida.get_usb_device
  • 安卓安全從零到一: FRIDA hook Native基礎
    __B7dnZ2xKBdXTNE_sklZg 提取碼:ljt1https://github.com/nickmyb/android_security_zero_to_one/blob/master/src/3_frida_hook_native/frida_hook_native_basic.md1.
  • Frida常用API
    instance.getName()); // bluetoothDeviceInfo(instance); }, onComplete: function() { console.log(&34;);} }); }); });通過下面的命令運行程序frida
  • Frida API的"樂器"
    運行上面的程序(在Win10系統下),使用腳本 frida-l寫在最後Frida API進階到這裡基本結束了
  • Frida使用之資料庫
    下面的代碼查詢buglydb資料庫信息:function frida_Java() { Java.perform(function () { var db, smt, row, id, tm; db = SqliteDatabase.open
  • WLAN漫遊技術趣談
    WLAN漫遊基礎篇:漫遊過程解析當終端的無線信號低於漫遊倒換閾值時,終端進入漫遊狀態。終端通過對比多個AP的信號後,選擇最優信號強度的新AP,並經過關聯和認證過程,獲得原有IP位址,即完成漫遊。漫遊過程如下圖所示:根據網絡的結構,可以將WLAN漫遊分成二層漫遊和三層漫遊。
  • 安卓逆向——Frida hook java層
    各位愛好安卓逆向的大佬們早上好,今天呢小弟不才在這裡拙劣的給大家講解一下咱們frida hook
  • JVM內存分析,程式設計師進階的必經之路
    話不多說,開始今天的學習:JVM也就是Java虛擬機,它的內存結構這塊知識點。你說它重要吧,編寫代碼基本用不到它;你說它不重要吧,程式設計師想要進階又必須對底層有一定的了解。二、JVM內存結構我們看oracle最新的官方文檔,最權威的便是這個官方文檔,畢竟技術是不斷更新的:JVM內存主要分為這五大塊:程序計數器(The pc Register)
  • Carrier Wi-Fi定義發布:無線區域網路漫遊加溫
    打開APP Carrier Wi-Fi定義發布:無線區域網路漫遊加溫 鄭景尤 發表於 2014-02-19 14:23:13
  • 漫遊的意思 漫遊的意思是什麼
    在以前的日常生活中,我們經常使用手機的時候會聽到漫遊這個詞,大家對這個詞也並不陌生。但還有些人不知道漫遊是什麼意思。今天我們就一起來了解下。漫遊原來的本意是指隨意遊玩,漫無目的地遊走。
  • 漫漫漫遊路(八):國際漫遊以及漫遊業務的終結
    第一篇回憶了第一代移動通信的人工漫遊;第二篇回憶了第一代移動通信的發展歷程以及聯網漫遊工程;第三篇回憶了第一代行動電話漫遊的計費結算歷史;第四篇回憶了GSM的核心網如何體系化地解決漫遊問題;第五篇回憶了GSM的國內漫遊結算以及結算槓桿的價值;第六篇介紹國際漫遊的技術實現、結算規則,以及反欺詐的問題;第七篇談談流量業務的漫遊原理和國內業務的實施情況