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