【Android 逆向】Dalvik 函数抽取加壳 ( Dalvik 下的函数指令抽取与恢复 | dex 函数指令恢复时机点 | 类加载流程 : 加载、链接、初始化 )
文章目錄
- 前言
- 一、Dalvik 下的函數(shù)指令抽取與恢復(fù)
- 二、dex 函數(shù)指令恢復(fù)時(shí)機(jī)點(diǎn)
- 1、dex 函數(shù)指令恢復(fù)
- 2、Android 源碼中搜索 dexFindClass 函數(shù)
- 3、類加載流程 : 加載、鏈接、初始化
前言
函數(shù)抽取 加殼 , 是 二代殼 技術(shù) ;
一、Dalvik 下的函數(shù)指令抽取與恢復(fù)
函數(shù)指令 抽取 : 進(jìn)行函數(shù)抽取加殼 , 首先要熟悉 dex 文件的結(jié)構(gòu) , 需要定位 dex 字節(jié)碼文件中 , 函數(shù)指令 的偏移地址 ; 將 dex 文件中的函數(shù)指令 , 先抽取出來(lái) ;
- 參考博客 : Android中實(shí)現(xiàn)「類方法指令抽取方式」加固方案原理解析 , 作者 姜維 , 同時(shí)也是《Android應(yīng)用安全防護(hù)和逆向分析》 作者 ;
函數(shù)指令恢復(fù) : 可以選擇在 下面的 222 個(gè)時(shí)間點(diǎn) , 恢復(fù)函數(shù)指令 ;
- 類加載之前恢復(fù) : 在類加載到內(nèi)存之前 , 將之前抽取出來(lái)的指令 恢復(fù) 回去 ; ( 比較簡(jiǎn)單 ) ;
- 參考博客 : Android中實(shí)現(xiàn)「類方法指令抽取方式」加固方案原理解析 , 作者 姜維 , 同時(shí)也是《Android應(yīng)用安全防護(hù)和逆向分析》 作者 ;
- 運(yùn)行時(shí)恢復(fù) : 函數(shù)運(yùn)行時(shí) , 通過(guò) HOOK 修改運(yùn)行時(shí)的函數(shù)的指令邏輯 ;
- 參考博客 : Android免Root權(quán)限通過(guò)Hook系統(tǒng)函數(shù)修改程序運(yùn)行時(shí)內(nèi)存指令邏輯 , 作者 姜維 , 同時(shí)也是《Android應(yīng)用安全防護(hù)和逆向分析》 作者 ;
- 推薦的 HOOK 框架 : https://github.com/ele7enxxh/Android-Inline-Hook , 注意該框架只支持 323232 位模式 ;
二、dex 函數(shù)指令恢復(fù)時(shí)機(jī)點(diǎn)
1、dex 函數(shù)指令恢復(fù)
將 dex 中的函數(shù)指令 , 抽取出來(lái)后 , 還要在合適的時(shí)機(jī) , 將抽取出來(lái)的函數(shù)指令恢復(fù)回去 ;
如果要針對(duì) 函數(shù) 抽取 加殼 的 應(yīng)用 , 進(jìn)行 脫殼 , 需要 找準(zhǔn) 函數(shù)指令 恢復(fù)的時(shí)機(jī)點(diǎn) ;
在 《Android中實(shí)現(xiàn)「類方法指令抽取方式」加固方案原理解析 | 作者 : 姜維》 博客中 , 選擇的指令還原的時(shí)機(jī)是 native 層的 dexFindClass 時(shí) ;
( 圖片來(lái)自 《Android中實(shí)現(xiàn)「類方法指令抽取方式」加固方案原理解析 | 作者 : 姜維》 博客 )
2、Android 源碼中搜索 dexFindClass 函數(shù)
在 Android 源碼路徑中 , 搜索上述 dexFindClass 函數(shù) ;
進(jìn)入 http://androidxref.com/4.4.4_r1 頁(yè)面 , 搜索 dexFindClass 函數(shù) , 該函數(shù)定義在 dalvik/libdex/DexFile.cpp#dexFindClass 中 ;
3、類加載流程 : 加載、鏈接、初始化
這里在回顧下之前的 類加載 流程 博客 : 【Java 虛擬機(jī)原理】Java 類加載過(guò)程 ( 加載 | 連接 - 驗(yàn)證 準(zhǔn)備 解析 | 初始化 | 使用 | 卸載 ) , 類加載的過(guò)程涉及到 加載 , 鏈接 , 初始化 操作 ;
在上述類加載流程中 , 有很多時(shí)機(jī)點(diǎn)可以選擇 ;
總結(jié)
以上是生活随笔為你收集整理的【Android 逆向】Dalvik 函数抽取加壳 ( Dalvik 下的函数指令抽取与恢复 | dex 函数指令恢复时机点 | 类加载流程 : 加载、链接、初始化 )的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 【Git】IntelliJ IDEA 提
- 下一篇: 【Android 逆向】Dalvik 函