日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

【Android 逆向】Dalvik 函数抽取加壳 ( Dalvik 下的函数指令抽取与恢复 | dex 函数指令恢复时机点 | 类加载流程 : 加载、链接、初始化 )

發布時間:2025/6/17 54 豆豆

文章目錄

  • 前言
  • 一、Dalvik 下的函數指令抽取與恢復
  • 二、dex 函數指令恢復時機點
    • 1、dex 函數指令恢復
    • 2、Android 源碼中搜索 dexFindClass 函數
    • 3、類加載流程 : 加載、鏈接、初始化

前言


函數抽取 加殼 , 是 二代殼 技術 ;





一、Dalvik 下的函數指令抽取與恢復



函數指令 抽取 : 進行函數抽取加殼 , 首先要熟悉 dex 文件的結構 , 需要定位 dex 字節碼文件中 , 函數指令 的偏移地址 ; 將 dex 文件中的函數指令 , 先抽取出來 ;

  • 參考博客 : Android中實現「類方法指令抽取方式」加固方案原理解析 , 作者 姜維 , 同時也是《Android應用安全防護和逆向分析》 作者 ;

函數指令恢復 : 可以選擇在 下面的 222 個時間點 , 恢復函數指令 ;

  • 類加載之前恢復 : 在類加載到內存之前 , 將之前抽取出來的指令 恢復 回去 ; ( 比較簡單 ) ;
    • 參考博客 : Android中實現「類方法指令抽取方式」加固方案原理解析 , 作者 姜維 , 同時也是《Android應用安全防護和逆向分析》 作者 ;
  • 運行時恢復 : 函數運行時 , 通過 HOOK 修改運行時的函數的指令邏輯 ;
    • 參考博客 : Android免Root權限通過Hook系統函數修改程序運行時內存指令邏輯 , 作者 姜維 , 同時也是《Android應用安全防護和逆向分析》 作者 ;
    • 推薦的 HOOK 框架 : https://github.com/ele7enxxh/Android-Inline-Hook , 注意該框架只支持 323232 位模式 ;




二、dex 函數指令恢復時機點



1、dex 函數指令恢復


將 dex 中的函數指令 , 抽取出來后 , 還要在合適的時機 , 將抽取出來的函數指令恢復回去 ;

如果要針對 函數 抽取 加殼 的 應用 , 進行 脫殼 , 需要 找準 函數指令 恢復的時機點 ;


在 《Android中實現「類方法指令抽取方式」加固方案原理解析 | 作者 : 姜維》 博客中 , 選擇的指令還原的時機是 native 層的 dexFindClass 時 ;


( 圖片來自 《Android中實現「類方法指令抽取方式」加固方案原理解析 | 作者 : 姜維》 博客 )


2、Android 源碼中搜索 dexFindClass 函數


在 Android 源碼路徑中 , 搜索上述 dexFindClass 函數 ;

進入 http://androidxref.com/4.4.4_r1 頁面 , 搜索 dexFindClass 函數 , 該函數定義在 dalvik/libdex/DexFile.cpp#dexFindClass 中 ;


3、類加載流程 : 加載、鏈接、初始化


這里在回顧下之前的 類加載 流程 博客 : 【Java 虛擬機原理】Java 類加載過程 ( 加載 | 連接 - 驗證 準備 解析 | 初始化 | 使用 | 卸載 ) , 類加載的過程涉及到 加載 , 鏈接 , 初始化 操作 ;

在上述類加載流程中 , 有很多時機點可以選擇 ;

總結

以上是生活随笔為你收集整理的【Android 逆向】Dalvik 函数抽取加壳 ( Dalvik 下的函数指令抽取与恢复 | dex 函数指令恢复时机点 | 类加载流程 : 加载、链接、初始化 )的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。