【Android 逆向】逆向修改游戏应用 ( 分析应用结构 | 定位动态库位置 | 定位动态库中的修改点 | 修改动态库 | 重打包 )
文章目錄
- 一、應(yīng)用結(jié)構(gòu)分析
- 二、定位動態(tài)庫位置
- 三、定位動態(tài)庫中的修改點
- 四、修改動態(tài)庫
- 五、重打包
一、應(yīng)用結(jié)構(gòu)分析
分析上一篇博客 【Android 逆向】逆向修改游戲應(yīng)用 ( APK 解析工具 | 解包 -> 分析 -> 重打包 -> 簽名 流程 ) 解包后的文件 ;
在 lib 目錄下 , 有 armeabi-v7a 和 x86 兩個 CPU 架構(gòu)的動態(tài)庫 ;
一般情況下 , 逆向都在模擬器中進(jìn)行 , 模擬器中可以拿到 root 權(quán)限 , 并且權(quán)限管理沒有真機那么嚴(yán)格 , 這里推薦刪除 armeabi-v7a 架構(gòu)的動態(tài)庫 ;
此外 , 該應(yīng)用檢測出了 Unity3D 引擎 , 那么該應(yīng)用的核心邏輯都在 Unity3D 中 , 如果要修改應(yīng)用 , 需要修改 U3D 對應(yīng)的動態(tài)庫文件 ;
二、定位動態(tài)庫位置
Unity3D 引擎對應(yīng)的資源都在 apk\unpack\Game\assets\bin\Data 目錄下 ,
動態(tài)庫資源都在 apk\unpack\Game\assets\bin\Data\Managed 目錄中 , 如果要修改程序的邏輯 , 都在 C# 代碼編譯的 dll 動態(tài)庫中 ; 本應(yīng)用的相關(guān)邏輯是在 Assembly-CSharp.dll 中 ;
三、定位動態(tài)庫中的修改點
使用 32 位的 IDA 打開上述 Assembly-CSharp.dll 文件 , 將下面紅色矩形框中的 sub 減法運算 , 修改為 add 加法運算 ;
選中這個 sub 指令 ,
點擊 Hex View-1 面板 , 發(fā)現(xiàn) sub 對應(yīng)的二進(jìn)制數(shù)據(jù)是 59 ;
將其修改為 add , 就需要知道 add 對應(yīng)的二進(jìn)制數(shù)據(jù)是多少 , IDA View-A 中選中 add , 然后查看 Hex View-1 中的二進(jìn)制數(shù)據(jù) :
add 操作對應(yīng)二進(jìn)制數(shù)據(jù) 58 ;
這里修改時 , 將 0x354A6 字節(jié)的 59 修改為 58 ;
四、修改動態(tài)庫
使用二進(jìn)制查看工具 , Ctrl + G 快捷鍵 , 跳轉(zhuǎn)到 0x354A6 位置 , 發(fā)現(xiàn)值為 59 ;
直接選中后 , 編輯該值即可 ;
五、重打包
將修改后的動態(tài)庫放回原來的位置 ;
刪除 sing 和 repack 目錄 ;
繼續(xù)執(zhí)行程序 , 會在檢查當(dāng)前 " 解包 -> 分析 -> 重打包 -> 簽名 " 流程 , 執(zhí)行了哪些部分 , 發(fā)現(xiàn) 解包 , 分析 完成 , 重打包 和 簽名沒有完成 , 執(zhí)行程序后 , 會自動進(jìn)行后續(xù) 重打包 和 簽名操作 ;
執(zhí)行完畢后的 apk/sign/Game.apk 就是重打包后簽名的文件 , 可以執(zhí)行該 APK 文件 , 驗證修改是否生效 ;
總結(jié)
以上是生活随笔為你收集整理的【Android 逆向】逆向修改游戏应用 ( 分析应用结构 | 定位动态库位置 | 定位动态库中的修改点 | 修改动态库 | 重打包 )的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【Android 逆向】逆向修改游戏应用
- 下一篇: 【Android 逆向】ptrace 函