Android逆向學習(十一) IDA動態調試Android so文件

Android逆向學習(十一) IDA動態調試Android so文件

一、 寫在前面

這是吾愛破解論壇正己大大的第12個教程,并且發現一個神奇的事情,正己大大的教程竟然沒有第11個,感覺很奇怪

寫這個博客的主要原因是希望提供一種新的解法,并且記錄自己android逆向學習的過程,所以本博客會有很多實際操作的方法,喜歡的話可以點個免費的贊

我的操作系統還是用的linux,windows也可以,流程也基本是一樣的

二、課程目標

了解so加載流程,IDA開啟動態調試,SO的防護手段。

三、課程內容

1. android中so文件的加載

直接看源代碼:https://android.googlesource.com/platform/libcore/+/15d8280/luni/src/main/java/java/lang/System.java

可以簡單了解調用so文件的流程:

Java 層 → System.loadLibrary → Runtime → VM ClassLoader → linker(android_dlopen_ext) → mmap so → 解析 ELF → JNI_OnLoad → so 注冊方法 → Java 可以調用

其實就是通過JNI_OnLoad的方法把so文件給加載進來。

2. IDA對android的so文件動態調試

首先在IDA pro的安裝路徑下面找到android_server,選擇對應的架構

在這里插入圖片描述

然后使用命令將android_server上傳到/data/local/tmp路徑下,賦權并以root用戶運行,這個類似于之前使用frida調試。

adb push android_server /data/local/tmp

上傳之后先使用adb shell 啟動android中的shell,然后按照下面流程走,就可以啟動android_server

apollo:/ $ su
apollo:/ # cd /data/local/tmp
apollo:/data/local/tmp # ls
android_server  frida-server-16.7.14-android-arm64
apollo:/data/local/tmp # chmod 755 android_server                              
apollo:/data/local/tmp # ./android_server                                      
IDA Android 64-bit remote debug server(ST) v9.0.30. Hex-Rays (c) 2004-2024
2025-07-23 21:59:09 Listening on 0.0.0.0:23946...

和上個博客一樣,打開ida pro,并分析對應的so文件

在這里插入圖片描述

之后轉發手機的23946端口

方法就是打開一個新的命令行窗口,并且輸入

adb forward tcp:11111 tcp:23946

調整IDA pro的debug設置

首先是Debugger -> Switch Debugger選擇遠程android

在這里插入圖片描述

然后是Debugger -> Debugger options
在這里插入圖片描述

還有Debugger -> Process options

在這里插入圖片描述

之后正常安裝應用,并打開運行應用,并且打開加載的so部分的activity,也就是第七關,并且要觸發so文件加載,也就是先隨便一個驗證一下,這樣so文件加載之后,打開之后點擊Debugger -> Attach to Process

然后ctrl+F搜索對應的線程

在這里插入圖片描述

選擇對應線程就會出現這個窗口,出現這個窗口說明我們加載成功了

在這里插入圖片描述

然后點same后,從右邊的modules中選擇對應的so文件

在這里插入圖片描述

并找到對應的check函數

在這里插入圖片描述

雙擊之后就可以打斷點調試了

在這里插入圖片描述

然后點擊Debugger ->Continue process,就可以進行調試了,F9 運行,F8 單步步過

點擊手機上的驗證,可以看到線程被卡到標點處了,需要注意的是如圖中,w22代表寄存器的低 32 位,也就是右邊x22的后幾位,可以看到MOV W22, #1后,右邊寄存器也發生了變化

在這里插入圖片描述

這個有個小失誤,就是在上一個博客中,已經對代碼進行了修改,使其一直返回true,也就是這段代碼,然后忘記改回來了

MOV W22, #1

所以這次為了驗證動態調試修改有效,所以這次就動態修改為返回false,對寄存器進行修改,修改成全0,然后F9繼續

在這里插入圖片描述

就會發現原來一直成功的變成失敗了,說明之前的修改起效了

在這里插入圖片描述

3. SO的防護手段

這一段就是代碼混淆技術,這個代碼混淆技術就是比較概念性的東西,這里就不進行描述了,因為寫這個教程主要是為了記錄實際操作的過程。

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

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

相關文章

Django全棧班v1.03 Linux常用命令 20250911 下午

課程定位 命令行 ! 黑客專屬。 這套視頻帶你從Linux小白到命令行大師,涵蓋文件管理文本處理系統監控網絡操作。 零基礎也能30分鐘掌握程序員必備的技能。 課程亮點 1、零基礎友好:從最基礎的ls,cd命令開始,循序漸進 2、實戰導向&a…

離線應用開發:Service Worker 與緩存

引言:離線應用開發在 Electron 中的 Service Worker 與緩存核心作用與必要性 在 Electron 框架的開發實踐中,離線應用開發是提升用戶體驗和應用可用性的關鍵技術,特別是使用 Service Worker 實現緩存和離線功能,結合 Node.js 處理…

英發睿能闖關上市:業績波動明顯,毅達創投退出,臨場“移民”

撰稿|張君來源|貝多商業&貝多財經近日,四川英發睿能科技股份有限公司(下稱“英發睿能”)遞交招股書,報考在港交所上市。據貝多商業&貝多財經了解,英發睿能還于9月3日披露《整體協調人公告-委任&…

Elixir通過Onvif協議控制IP攝像機,ExOnvif庫給視頻流疊加字符

Elixir 通過 ExOnvif 庫,Onvif 協議可以控制IP攝像機等設備,這篇文章記錄:使用ExOnvif庫,給視頻流疊加文字,使用ExOnvif庫的接口模塊:ExOnvif.Media、ExOnvif.Media2。 ExOnvif官方文檔 此文章內容&#xf…

線程安全相關的注解

主要有下面三個加在類上的線程安全相關的注解。一.Immutable標記一個類為不可變的。這意味著該類的實例在構造完成后,其狀態(數據)永遠不能被更改。實現不可變性的嚴格條件(Java內存模型中的定義):所有字段…

基于Springboot + vue3實現的在線智慧考公系統

項目描述本系統包含管理員、教師、用戶三個角色。管理員角色:用戶管理:管理系統中所有用戶的信息,包括添加、刪除和修改用戶。配置管理:管理系統配置參數,如上傳圖片的路徑等。權限管理:分配和管理不同角色…

賦能高效設計:12套中后臺管理信息系統通用原型框架

中后臺管理信息系統是企業數字化轉型的核心引擎,肩負著提升運營效率、賦能精準決策的重任。面對多樣化的業務場景和復雜的邏輯需求,如何快速、高質量地完成系統設計與原型構建,成為產品、設計與開發團隊共同面臨的挑戰。 為此,一套…

LangGraph中ReAct模式的深度解析:推理與行動的完美融合——從理論到實踐的智能Agent構建指南

在人工智能的演進歷程中,ReAct(Reasoning and Acting)模式無疑是最具革命性的突破之一。它不僅僅是一種技術實現,更是對智能Agent思維模式的深刻重構。而LangGraph,作為這一理念的優秀實踐者,將ReAct模式演…

蜂窩物聯網模組在換電柜場景的發展前景分析

蜂窩物聯網模組在換電柜場景中正迎來爆發式增長機遇,特別是在Cat.1技術路線主導的市場格局下,其應用價值已從基礎通信服務拓展至安全監測、智能管理、電池溯源等核心領域,成為換電柜行業標準化、智能化升級的關鍵技術支撐。隨著2025年新國標全…

機器學習之K折交叉驗證

為了更好的評估機器學習訓練出模型的泛化能力,即避免模型在訓練集上表現良好,但在未見過的數據上表現不佳(即過擬合),同時也減少了單一訓練/測試集劃分帶來的隨機性影響。一、什么是K折交叉驗證?1、將數據集…

詳細解讀k8s的kind中service與pod的區別

Pod 是運行應用實例的“容器”,而 Service 是訪問這些 Pod 的“穩定網絡門戶”。Pod(容器組)1. 核心概念: Pod 是 Kubernetes 中可以創建和管理的最小、最簡單的計算單元。一個 Pod 代表集群上正在運行的一個工作負載實例。2. 職責…

python---PyInstaller(將Python腳本打包為可執行文件)

在Python開發中,我們常需要將腳本分享給不熟悉Python環境的用戶。此時,直接提供.py文件需要對方安裝Python解釋器和依賴庫,操作繁瑣。PyInstaller作為一款主流的Python打包工具,能將腳本及其依賴打包為單個可執行文件(…

利用歸并算法對鏈表進行排序

/*** Definition for singly-linked list.* struct ListNode {* int val;* ListNode *next;* ListNode() : val(0), next(nullptr) {}* ListNode(int x) : val(x), next(nullptr) {}* ListNode(int x, ListNode *next) : val(x), next(next) {}* };這里是鏈…

論文閱讀_大模型情緒分析預測股票趨勢

英文名稱:Stock Price Trend Prediction using Emotion Analysis of Financial Headlines with Distilled LLM Model 中文名稱:利用蒸餾大型語言模型對財務新聞標題情緒分析以預測股價趨勢 鏈接: https://dl.acm.org/doi/pdf/10.1145/3652037.3652076作…

websocket和socket區別

websocket和socket區別,這是一個非常經典的問題。簡單來說,Socket 是構建網絡通信的工具和基礎,而 WebSocket 是建立在它之上的一種具體的通信協議。可以把它們的關系想象成:Socket 像是修路和建立交通規則的基礎工程。它定義了車…

網絡復習1

1.網絡協議棧 一般一個主機內的應用(進程)進行通信,直接在操作系統層面進行 進程交互即可。而不同位置兩臺主機進行通信需要通過網線傳輸信號,因此 這些通信的數據為網絡數據,而網絡數據進程傳輸必須從應用層依次向下…

AFSim2.9.0學習筆記 —— 4.2、ArkSIM文件結構介紹及項目結構整理

🔔 AFSim2.9.0 相關技術、疑難雜癥文章合集(掌握后可自封大俠 ?_?)(記得收藏,持續更新中…) 若還沒有下載AFSim2.9.0完整軟件或源碼,請先進入本人另篇文章了解下載。 文章概要 本文主要對上篇…

hbuilderx配置微信小程序開發環境

hbuilderx配置微信小程序開發環境 借鑒HbuilderX微信開發者工具配置_hbuilder和微信開發者工具-CSDN博客 在微信開發者工具的設置選項的安全設置打開服務端口 在hbuidex的工具的設置選項的運行配置的微信開發者工具路徑的方框輸入 D:/software/wxchatmini 方可成功&#xf…

AUTOSAR Adaptive Platform 日志與追蹤 (Log and Trace) 規范深度解析

<摘要> [R22-11 AUTOSAR Adaptive Platform (AP) 日志規范是AUTOSAR標準體系中針對高性能計算域&#xff08;如自動駕駛、智能座艙&#xff09;的關鍵組成部分。本文對AUTOSAR AP日志與追蹤&#xff08;Log and Trace, LT&#xff09;進行了系統性解析&#xff0c;涵蓋了…

[硬件電路-179]:集成運放,虛短的是電壓,虛斷的是電流

集成運放&#xff08;運算放大器&#xff09;中的“虛短”和“虛斷”是分析其線性應用&#xff08;如反相放大器、同相放大器等&#xff09;時的兩個核心概念&#xff0c;它們分別描述了運放輸入端的電壓和電流特性。以下是詳細解釋&#xff1a;1. 虛短&#xff08;Virtual Sho…