【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 脚本编译 ;


image.png


查看 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/tool
Y:\002_WorkSpace\001_AS\magic3.1.3\magic>


image.png


编译结果如下 :


image.png




目录
相关文章
|
9天前
|
监控
MASM32写的免费软件“ProcView/系统进程监控” V1.4.4003 说明和下载
MASM32写的免费软件“ProcView/系统进程监控” V1.4.4003 说明和下载
|
10天前
|
消息中间件 Android开发 索引
Android面试高频知识点(4) 详解Activity的启动流程
讲解Activity的启动流程了,Activity的启动流程相对复杂一下,涉及到了Activity中的生命周期方法,涉及到了Android体系的CS模式,涉及到了Android中进程通讯Binder机制等等, 首先介绍一下Activity,这里引用一下Android guide中对Activity的介绍:
25 4
|
20天前
|
监控 Ubuntu API
Python脚本监控Ubuntu系统进程内存的实现方式
通过这种方法,我们可以很容易地监控Ubuntu系统中进程的内存使用情况,对于性能分析和资源管理具有很大的帮助。这只是 `psutil`库功能的冰山一角,`psutil`还能够提供更多关于系统和进程的详细信息,强烈推荐进一步探索这个强大的库。
29 1
|
28天前
|
安全 开发者 Python
揭秘Python IPC:进程间的秘密对话,让你的系统编程更上一层楼
【9月更文挑战第8天】在系统编程中,进程间通信(IPC)是实现多进程协作的关键技术。IPC机制如管道、队列、共享内存和套接字,使进程能在独立内存空间中共享信息,提升系统并发性和灵活性。Python提供了丰富的IPC工具,如`multiprocessing.Pipe()`和`multiprocessing.Queue()`,简化了进程间通信的实现。本文将从理论到实践,详细介绍各种IPC机制的特点和应用场景,帮助开发者构建高效、可靠的多进程应用。掌握Python IPC,让系统编程更加得心应手。
23 4
|
8天前
|
监控 API
【原创】用Delphi编写系统进程监控程序
【原创】用Delphi编写系统进程监控程序
|
2月前
|
开发工具 Android开发
解决Android运行出现NDK at /Library/Android/sdk/ndk-bundle did not have a source.properties file
解决Android运行出现NDK at /Library/Android/sdk/ndk-bundle did not have a source.properties file
141 4
解决Android运行出现NDK at /Library/Android/sdk/ndk-bundle did not have a source.properties file
|
10天前
|
Android开发 开发者
Android面试之Activity启动流程简述
每个Android开发者都熟悉的Activity,但你是否了解它的启动流程呢?本文将带你深入了解。启动流程涉及四个关键角色:Launcher进程、SystemServer的AMS、应用程序的ActivityThread及Zygote进程。核心在于AMS与ActivityThread间的通信。文章详细解析了从Launcher启动Activity的过程,包括通过AIDL获取AMS、Zygote进程启动以及ActivityThread与AMS的通信机制。接着介绍了如何创建Application及Activity的具体步骤。整体流程清晰明了,帮助你更深入理解Activity的工作原理。
16 0
|
2月前
|
Android开发
我的Android进阶修炼:安卓启动流程之init(1)
本文深入分析了Android系统中的init进程,包括其源码结构、主要功能以及启动流程的详细注解,旨在帮助读者理解init作为用户空间的1号进程在Android启动过程中的关键作用。
32 1
|
2月前
|
Linux Python
在Linux中,如何查找系统中占用CPU最高的进程?
在Linux中,如何查找系统中占用CPU最高的进程?
|
2月前
|
Linux
在Linux中,如何查看系统上运行的进程?
在Linux中,如何查看系统上运行的进程?

相关实验场景

更多
下一篇
无影云桌面