38.安卓逆向2-frida hook技術-過firda檢測(三)(通過SO文件過檢測原理)

免責聲明:內容僅供學習參考,請合法利用知識,禁止進行違法犯罪活動!

內容參考于:圖靈Python學院

工具下載:

鏈接:https://pan.baidu.com/s/1bb8NhJc9eTuLzQr39lF55Q?pwd=zy89

提取碼:zy89

復制這段內容后打開百度網盤手機App,操作更方便哦

上一個內容:37.安卓逆向2-frida hook技術-過firda檢測(二)(過D-Bus檢測和搭配maps檢測進行使用)

通過SO文件過Frida檢測原理是,Java肯定做不了Frida檢測,因為可以直接被反編譯源碼直接就能暴露了,所以這種東西肯定會使用C++寫,C++寫完編譯成SO文件,然后app使用Java代碼去引入,然后調用SO的入口方法,然后由SO文件里的代碼去檢測Frida,然后就可以攔截安卓底層加載SO文件的函數,看看注入Frida后,什么SO文件加載了就退出了,比如加載 1、2、3、4、5,然后加載到5后一下讓Frida退出了,這就很明顯這個5在做Frida檢測,然后找到這個SO文件,給它做點手腳來過檢測

Frida hook安卓底層加載SO函數的代碼,注意要使用重啟的方式注入Frida

// 這段代碼是給一個叫"Frida"的工具用的腳本
// Frida的作用是:可以鉆進手機里的APP內部,看看這個APP在偷偷做什么
// 我們這段腳本的具體任務是:盯著APP加載"特殊文件"的行為// 首先,我們要找到APP加載文件時會用到的兩個"工具函數"// 第一個工具函數叫"dlopen"
// 所有運行在Linux或安卓系統上的程序,要加載"動態鏈接庫"(一種特殊文件,后綴通常是.so)時,經常會用到它
// "Module.findExportByName(null, "dlopen")"的作用:
// 1. 在系統的所有功能里找(null表示不限制范圍)
// 2. 找到名字叫"dlopen"的那個功能,記錄下它在內存中的位置
// 3. 把找到的結果存在變量"dlopen"里,方便后面使用
var dlopen = Module.findExportByName(null, "dlopen");// 第二個工具函數叫"android_dlopen_ext"
// 這是安卓系統專門設計的加強版加載工具,功能比dlopen更多一點
// 有些安卓APP會用這個函數來加載特殊的.so文件
// 下面這行代碼的作用和上面類似:找到這個函數的位置,存在變量里
var android_dlopen_ext = Module.findExportByName(null, "android_dlopen_ext");// 接下來,我們要給第一個工具函數"dlopen"裝個"監控器"
// 當APP調用dlopen加載文件時,我們就能立刻知道
// "Interceptor.attach"就是Frida提供的"裝監控器"的功能
Interceptor.attach(dlopen, {// 當APP剛開始調用dlopen函數時,會自動執行下面的代碼// 可以理解為:監控器發現"有人要開始用這個工具了"onEnter: function (args) {// "args"是APP傳給dlopen的參數(就像我們給工具傳遞的"指令")// dlopen的第一個參數很重要:它告訴工具"要加載的文件在哪里"// 這里的"args[0]"就是取第一個參數(計算機里計數從0開始)var path_ptr = args[0];// 剛才拿到的"path_ptr"其實是個"內存地址"(類似文件在倉庫里的貨架編號)// 我們需要根據這個編號,找到實際的文件路徑(比如"/data/lib/test.so")// "ptr(path_ptr)"是把編號轉成Frida能識別的格式// ".readCString()"是按照計算機存儲文字的規則,把地址對應的內容讀出來var path = ptr(path_ptr).readCString();// 最后,把我們發現的信息打印到屏幕上// 這樣我們就能清楚地看到:這個APP用dlopen加載了哪個文件console.log("[發現使用dlopen加載文件:] ", path);},// 當APP用完dlopen函數(加載文件完成后),會執行下面的代碼// 可以理解為:監控器發現"這個人用完工具了"onLeave: function (retval) {// 目前這里什么都沒做,留空是因為我們暫時只關心"開始加載"這個動作// 如果以后想知道"加載成功了嗎",可以在這里處理返回值retval}
});// 下面是給第二個工具函數"android_dlopen_ext"裝監控器,原理和上面完全一樣
Interceptor.attach(android_dlopen_ext, {// 當APP剛開始調用這個安卓特有的加載函數時onEnter: function (args) {// 同樣取第一個參數:要加載的文件地址var path_ptr = args[0];// 把地址轉成我們能看懂的文件路徑var path = ptr(path_ptr).readCString();// 打印信息:APP用安卓特有的工具加載了哪個文件console.log("[發現使用安卓專用dlopen_ext加載文件:] ", path);},// 當APP用完這個函數后onLeave: function (retval) {// 這里也暫時什么都不做}
});
/**
總結代碼的效果:就像我們在 APP 的 "文件加載通道" 上裝了兩個攝像頭,一個盯著普通加載通道,一個盯著安卓專用通道。
只要 APP 從這些通道加載文件(特別是.so 格式的文件),攝像頭就會立刻拍下 "文件地址" 并顯示出來,讓
我們清楚知道這個 APP 在運行時偷偷加載了哪些底層文件。
這種監控在分析 APP 的工作原理、查找惡意軟件行為時非常有用。
*/

如下圖紅框,在加載完 /lib/arm64/libmsaoaidsec.so 就把Frida給Process terminated退出了

不知道誰退出的Frida?啥也別管,直接給ai,讓ai告訴你

然后把app的apk文件進行解壓,如下圖,可以找到 libmsaoaidsec.so 文件

然后這個app的這個SO沒辦法通過刪除來過檢測(這個app中調用了SO里面好多方法,有些沒有異常處理,會導致app崩潰),它這個就很麻煩了,只要了解一下就可以了,下一節使用魔改Frida來解決


img

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/916494.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/916494.shtml
英文地址,請注明出處:http://en.pswp.cn/news/916494.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

創建屬于自己的github Page主頁

安裝手冊 安裝手冊 環境要求 Node.js version 18.0 安裝 Node.js 時,建議勾選所有和依賴相關的選項。 安裝步驟 安裝 Docusaurus 最簡單的方法是使用 create-docusaurus 命令行工具,它可以幫助你快速搭建一個 Docusaurus 網站的基礎框架。 你可以在…

Unity Catalog與Apache Iceberg如何重塑Data+AI時代的企業數據架構

在2025年DataAI Summit上,Databricks發布了一系列重大更新,標志著企業數據治理進入新階段。其中,Unity Catalog的增強功能和對Apache Iceberg的全面支持尤為引人注目。這些更新不僅強化了跨平臺數據管理能力,還推動了開放數據生態…

雨季,汽車經常跑山區,該如何保養?

雨季來臨,山區道路變得濕滑難行,頻繁穿梭于此的汽車面臨著前所未有的挑戰。如何在這樣惡劣的環境中確保愛車安然無恙?本文將為你詳細解析雨季經常跑山區的汽車該如何保養,讓你在遭遇突發狀況時也能從容應對。當雨季遇上山區路況&a…

Spring Boot音樂服務器項目-查詢音樂模塊

一、項目架構概覽 該音樂播放服務器采用經典的MVC分層架構,核心模塊包括: 實體層:定義數據模型Mapper層:數據庫操作接口Controller層:HTTP請求處理工具層:加密、響應封裝等輔助功能 項目核心功能包括用戶…

Imagine:高效免費的圖片壓縮工具

很多時候,我們需要對圖片進行壓縮,卻苦于找不到免費又好用的工具。這里給大家推薦一款電腦端的圖片壓縮軟件——Imagine。 Imagine文末獲取 它有諸多優點: 開源免費:無需擔心付費問題,完全免費使用。 便捷易用&#…

《Uniapp-Vue 3-TS 實戰開發》自定義年月日時分秒picker組件

目前組件: 組件完整代碼: <template><view><picker mode="multiSelector" :value="multiIndex" :range="multiRange" @change="onMultiChange"><view class="picker">{{ formattedDateTime }}&l…

生命通道的智慧向導:Deepoc具身智能如何重塑醫院導診機器人的“仁心慧眼”

生命通道的智慧向導&#xff1a;Deepoc具身智能如何重塑醫院導診機器人的“仁心慧眼”清晨八點的三甲醫院門診大廳&#xff0c;一臺導診機器人突然轉向無障礙通道。視覺系統捕捉到輪椅上的顫抖雙手&#xff0c;自動降低語速并調大屏幕字體&#xff1b;識別出老人病歷本上的“心…

【51單片機和數碼管仿真顯示問題共陰共陽代碼】2022-9-24

緣由單片機和數碼管仿真顯示問題-嵌入式-CSDN問答 #include "REG52.h" unsigned char code smgduan[]{0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f ,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0,64,15,56}; //共陰0~F消隱減號 void smxs(unsigned char mz, unsigned c…

Java#包管理器來時的路

不依賴任何Jar包 - HelloWorld.java mkdir demo && cd demo;# HelloWorld.java cat > HelloWorld.java << EOF public class HelloWorld {public static void main(String[] args) {System.out.println("Hello, world!");} } EOF# 編譯class javac …

Android Framework知識點

1 重點知識 1.1 Alarm 當手機重啟或者應用被殺死的時候&#xff0c;Alarm會被刪除&#xff0c;因此&#xff0c;如果想通過Alarm來完成長久定時任務是不可靠的&#xff0c;如果非要完成長久定時任務&#xff0c;可以這樣&#xff1a;將應用的所有Alarm信息存到數據庫中&#xf…

代碼隨想錄算法訓練營Day6 | 哈希表 Part 1

一、今日學習目標 掌握哈希表的核心理論&#xff08;哈希函數、哈希碰撞及解決方法&#xff09;&#xff0c;理解數組、set、map 三種哈希結構的適用場景&#xff0c;并通過「兩個數組的交集」「快樂數」「兩數之和」三道題目&#xff0c;實戰掌握哈希表在快速查找、去重、鍵值…

5.13.樹、森林與二叉樹的轉換

當使用"孩子兄弟表示法"存儲樹或森林時&#xff0c;最終會呈現出與二叉樹類似的形態&#xff0c;所以樹、森林與二叉樹之間的轉換本質上就是畫出采用孩子兄弟表示法存儲的樹和森林。一."樹->二叉樹"的轉換&#xff1a;1.例一&#xff1a;以上述圖片左邊…

Spring 核心流程

Spring 核心流程前言一、AbstractApplicationContext#refresh 方法解析1.1 前置1.2 refresh 方法1.2.1 prepareRefresh1.2.2 obtainFreshBeanFactory1.2.3 prepareBeanFactory1.2.4 postProcessBeanFactory1.2.5 invokeBeanFactoryPostProcessors1.2.6 registerBeanPostProcess…

RS485轉Profinet網關與JRT激光測距傳感器在S7-1200 PLC系統中的技術解析與應用

RS485轉Profinet網關與JRT激光測距傳感器在S7-1200 PLC系統中的技術解析與應用技術核心&#xff1a;協議轉換與數據橋梁在工業自動化系統中&#xff0c;RS485轉Profinet網關承擔著協議翻譯官的角色。以XD-MDPN100型號為例&#xff0c;其本質是將RS485設備的串口數據封裝為Profi…

《C++ string 完全指南:string的模擬實現》

string的模擬實現 文章目錄string的模擬實現一、淺拷貝和深拷貝1.淺拷貝2.深拷貝3.寫時拷貝二、定義string的成員變量三、string的接口實現1.string的默認成員函數&#xff08;1&#xff09;構造函數實現&#xff08;2&#xff09;析構函數實現&#xff08;3&#xff09;拷貝構…

造成服務器內存不足的原因有什么

服務器在日常的運行過程中&#xff0c;會存儲大量關于企業重要的數據信息&#xff0c;偶爾會出現內存飆升空間不足的情況&#xff0c;服務器內存作為服務器數據處理和存儲的主要空間&#xff0c;異常占用會導致服務器性能降低&#xff0c;影響到企業業務的響應速度&#xff0c;…

JVM、Dalvik、ART垃圾回收機制

一、JVM垃圾回收機制&#xff08;桌面/服務器端&#xff09;1. 核心算法&#xff1a;分代收集新生代回收&#xff08;Minor GC&#xff09;觸發條件&#xff1a;Eden區滿時觸發算法&#xff1a;復制算法&#xff08;Eden → Survivor區&#xff09;過程&#xff1a;存活對象在S…

數學專業轉型數據分析競爭力發展報告

一、核心優勢拆解&#xff08;1&#xff09;數學能力與數據分析對應關系數學課程數據分析應用場景比較優勢說明概率論假設檢驗設計能準確判斷統計顯著性閾值實變函數數據質量評估異常值檢測的嚴格性更高線性代數特征工程構建矩陣運算優化模型訓練效率&#xff08;2&#xff09;…

JAVA進階--MySQL

一.MySQL架構連接層:處理客戶端連接服務,認證授權相關的操作服務層:最核心的一層&#xff08;核心服務功能&#xff09;,處理sql,包括sql優化,函數調用....存儲引擎層:存儲引擎是真正負責來操作數據的&#xff08;mysql中數據的存儲和提取&#xff09;, mysql中有不同存儲引擎,…

【架構】Docker簡單認知構建

作為一個之前從來沒有接觸過Docker的倒霉蛋&#xff0c;想了解學習一下Docker 搜了CSDN和RUNOOB&#xff0c;得到的描述如下&#xff1a; Docker 是一個開源的應用容器引擎&#xff0c;基于 Go 語言 并遵從 Apache2.0 協議開源。 Docker 可以讓開發者打包他們的應用以及依賴包…