【Android 逆向】Android 进程代码注入原理 ( 注入本质 | 静态注入和动态注入 | 静态注入两种方式 | 修改动态库重打包 | 修改 /data/app/xx/libs 动态库 )
文章目錄
- 一、注入本質
- 二、靜態注入和動態注入
- 三、靜態注入兩種方式 ( 修改動態庫重打包 | 修改 /data/app/packageName/libs/ 下的動態庫 )
一、注入本質
進程注入本質 是 監控 或 分析 目標進程 ( 被調試進程 ) 的運行狀態 , 運行狀態包括 :
- 標志位
- IP 寄存器值
- SP 棧寄存器內容
- EAX 值
其次 , 需要拿到 目標進程 ( 被調試進程 ) 的運行控制權 , 遠程執行一些代碼 , 一般是 查詢 并 修改 進程內存數據 ;
常用的注入方式是使用 ptrace 函數 , 也可以使用 重打包 的方式 , 將 so 動態庫文件打包到 APK 文件中 ;
重打包的 so 動態庫是修改后的動態庫 , 參考 【Android 逆向】逆向修改游戲應用 ( 分析應用結構 | 定位動態庫位置 | 定位動態庫中的修改點 | 修改動態庫 | 重打包 ) 博客 , 修改了 Unity3D 的一個動態庫的匯編代碼指令 , 然后將修改后的動態庫重打包回 APK 文件中 ;
重打包有一定的弊端 , 不是所有的應用都可以進行重打包的 , 有些應用加固后 , 無法進行重打包操作 , 此時就需要使用 ptrace 函數進行注入 ;
二、靜態注入和動態注入
修改 APK 中的動態庫的注入方式 是 靜態注入 , 修改靜態的動態庫文件 ;
使用 ptrace 函數 , 在程序運行后 , 向進程內存中注入 動態庫 , 動過注入的動態庫 查詢 修改內存 , 這種方式是 動態注入 ;
三、靜態注入兩種方式 ( 修改動態庫重打包 | 修改 /data/app/packageName/libs/ 下的動態庫 )
靜態修改的兩種方式 :
方式一 : 直接修改 APK 中的動態庫 , 然后進行重打包 ;
方式二 : 如果遇到不能進行重打包 , 還想要靜態注入的情況 , 可以修改 /data/app/包名/libs/ 目錄下的動態庫 , 這個動態庫可以進行修改 ;
《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀總結
以上是生活随笔為你收集整理的【Android 逆向】Android 进程代码注入原理 ( 注入本质 | 静态注入和动态注入 | 静态注入两种方式 | 修改动态库重打包 | 修改 /data/app/xx/libs 动态库 )的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【Android 逆向】Android
- 下一篇: 【Android 逆向】Android