【Android 逆向】修改运行中的 Android 进程的内存数据 ( Android 系统中调试器进程内存流程 | 编译内存调试动态库以及调试程序 )
生活随笔
收集整理的這篇文章主要介紹了
【Android 逆向】修改运行中的 Android 进程的内存数据 ( Android 系统中调试器进程内存流程 | 编译内存调试动态库以及调试程序 )
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
文章目錄
- 一、Android 系統中調試器進程內存流程
- 二、編譯內存調試動態庫以及調試程序
- 三、博客資源
一、Android 系統中調試器進程內存流程
修改游戲運行中的內存 , 游戲運行之后 , 游戲進程肯定有對應的內存空間 ;
使用 注入工具 將 一個 libnative.so 動態庫 , 注入到游戲運行進程對應的內存中 , 注入成功后 , 在運行內存中就存在了該 libnative.so 動態庫 ;
libnative.so 動態庫的作用是 跨進程接收 外部 另外一個進程 cmd 的指令 , cmd 會告知 libnative.so 動態庫 , 要搜索以及修改內存的細節 , 如要搜索什么特征的內存 , 以及修改指定內存地址的指定數據 ;
具體的工作流程 :
- 通過 IDA 內存分析工具找到要修改的代碼特征 ;
- 使用 cmd 工具遠程通知 注入到 被調試進程中的 libnative.so 動態庫 ;
- libnative.so 動態庫 搜索 代碼特征 , 并返回內存地址 ;
- 使用 cmd 工具向 libnative.so 動態庫 發送修改 指定內存 的指定 n 字節數據 ;
二、編譯內存調試動態庫以及調試程序
下面是涉及的調試程序 ;
該程序使用 ndk-build 腳本編譯 ;
查看 Android.mk 構建腳本 :
LOCAL_PATH := $(call my-dir) ####tool#### include $(CLEAR_VARS) # 鏈接 log 日志庫 LOCAL_LDLIBS += -llog # 編譯可執行程序名稱 LOCAL_MODULE := tool # 指定源碼 LOCAL_SRC_FILES := main.c # 指定輸出目錄 NDK_APP_DST_DIR := ../Debug/$(TARGET_ARCH_ABI) # 編譯可執行程序 include $(BUILD_EXECUTABLE)####libBridge#### include $(CLEAR_VARS) # 鏈接 log 日志庫 LOCAL_LDLIBS += -llog # 編譯動態庫名稱 libbridge.so LOCAL_MODULE := bridge # 指定源碼 LOCAL_SRC_FILES := bridge.c # 指定輸出目錄 NDK_APP_DST_DIR := ../Debug/$(TARGET_ARCH_ABI) # 編譯動態庫 include $(BUILD_SHARED_LIBRARY)####command#### include $(CLEAR_VARS) # 鏈接 log 日志庫 LOCAL_LDLIBS += -llog LOCAL_CPPFLAGS += -std=c++11 LOCAL_CPP_FEATURES += rtti exceptions # 編譯可執行程序名稱 LOCAL_MODULE := cmd # 指定頭文件 LOCAL_C_INCLUDES += json LOCAL_C_INCLUDES += Y:/001_DevelopTools/002_Android_SDK/ndk/android-ndk-r14b-windows-x86_64/android-ndk-r14b/platforms/android-19/arch-x86/usr/include # 指定源碼 LOCAL_SRC_FILES := command.cpp json/json_reader.cpp json/json_value.cpp json/json_writer.cpp # 指定輸出目錄 NDK_APP_DST_DIR := ../Debug/$(TARGET_ARCH_ABI) # 編譯可執行程序 include $(BUILD_EXECUTABLE)在上述 NDK 工程中 , 編譯了 2 個可執行程序 , 分別是 cmd 和 tool ;
編譯了 1 個動態庫 , 是 libbridge.so ;
編譯命令 : 進入 Y:\002_WorkSpace\001_AS\magic3.1.3\magic 目錄 , 執行如下命令 ;
Y:/001_DevelopTools/002_Android_SDK/ndk/android-ndk-r14b-windows-x86_64/android-ndk-r14b/ndk-build.cmd NDK_PROJECT_PATH=. APP_BUILD_SCRIPT=./Android.mk NDK_APPLICATION_MK=./Application.mk命令行輸出 :
Microsoft Windows [版本 10.0.19041.1288] (c) Microsoft Corporation。保留所有權利。Y:\002_WorkSpace\001_AS\magic3.1.3\magic>Y:/001_DevelopTools/002_Android_SDK/ndk/android-ndk-r14b-windows-x86_64/android-ndk-r14b/ndk-build.cmd NDK_PROJECT_PATH=. APP_BUILD_SCRIPT=./Android.mk NDK_APPLICATION_MK=./Application.mk [x86] Compile : bridge <= bridge.c [x86] SharedLibrary : libbridge.so [x86] Install : libbridge.so => ../Debug/x86/libbridge.so [x86] Compile++ : cmd <= command.cpp [x86] Compile++ : cmd <= json_reader.cpp [x86] Compile++ : cmd <= json_value.cpp [x86] Compile++ : cmd <= json_writer.cpp [x86] Executable : cmd [x86] Install : cmd => ../Debug/x86/cmd [x86] Compile : tool <= main.c [x86] Executable : tool [x86] Install : tool => ../Debug/x86/toolY:\002_WorkSpace\001_AS\magic3.1.3\magic>編譯結果如下 :
三、博客資源
下載地址 : https://download.csdn.net/download/han1202012/35905718
總結
以上是生活随笔為你收集整理的【Android 逆向】修改运行中的 Android 进程的内存数据 ( Android 系统中调试器进程内存流程 | 编译内存调试动态库以及调试程序 )的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【Android 逆向】代码调试器开发
- 下一篇: 【Android 逆向】修改运行中的 A