Android 逆向Android 进程注入工具开发 ( 编译注入工具 | 编译结果文件说明 | 注入过程说明 )

Posted 韩曙亮

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android 逆向Android 进程注入工具开发 ( 编译注入工具 | 编译结果文件说明 | 注入过程说明 )相关的知识,希望对你有一定的参考价值。





一、编译注入工具



在 Visual Studio 2019 中打开了一个 " 生成文件项目 " , 该项目就是注入项目 ; 参考 【Android 逆向】修改运行中的 Android 进程的内存数据 ( Android 系统中调试器进程内存流程 | 编译内存调试动态库以及调试程序 ) 博客 ;

编译该项目 ,

生成结果如下 :

已启动生成…
1>------ 已启动生成: 项目: magic, 配置: Debug Win32 ------
1>[x86] Compile        : bridge <= bridge.c
1>[x86] SharedLibrary  : libbridge.so
1>[x86] Install        : libbridge.so => ../Debug/x86/libbridge.so
1>[x86] Compile++      : cmd <= command.cpp
1>[x86] Compile++      : cmd <= json_reader.cpp
1>[x86] Compile++      : cmd <= json_value.cpp
1>[x86] Compile++      : cmd <= json_writer.cpp
1>[x86] Executable     : cmd
1>[x86] Install        : cmd => ../Debug/x86/cmd
1>[x86] Compile        : tool <= main.c
1>[x86] Executable     : tool
1>[x86] Install        : tool => ../Debug/x86/tool
========== 生成: 成功 1 个,失败 0 个,最新 0 个,跳过 0==========









二、编译结果文件说明



编译完成后的编译结果有

  • tool 可执行文件
  • cmd 可执行文件
  • libbridge.so 动态库

上述文件都是在 PC 电脑上的 x86 架构的 android 模拟器上运行的相关文件 , 具体就是 雷电模拟器 3.75 版本 ;


使用上述工具调试 Android 进程参考如下博客 :





三、注入过程说明



将所有文件拷贝到 Android 模拟器的 /data/system/debug/ 目录下 , 然后赋予 777 权限 ;

执行

tool 2222

命令 , 即可 attach 调试 进程号 PID 为 2222 的 进程 ;

根据 PID , 一定能在 /proc/2222/mmaps 文件中找到该进程 每个 so 动态库的运行地址 , 尤其是 libc.so 动态库的地址 ;


先远程注入 libbridge.so 动态库 , 然后远程调用 libbridge.so 中的 load 函数 , 将真正的 libnative.so 加载到目标进程中 ;

使用修改寄存器的方法 强行加载 libbridge.so 动态库 , 会影响目标进程的布局 , 因此这个动态库越小越好 , 并且 使用完毕后 , 马上关闭该动态库 , libbridge.so 动态库只起一个敲门的作用 , libnative.so 加载完成后 , 直接将 libbridge.so 动态库干掉 , 过河拆桥 ;

上述操作同时 , 恢复 寄存器 和 栈内存 的值 ;

以上是关于Android 逆向Android 进程注入工具开发 ( 编译注入工具 | 编译结果文件说明 | 注入过程说明 )的主要内容,如果未能解决你的问题,请参考以下文章

Android 逆向Android 进程注入工具开发 ( 编译注入工具 | 编译结果文件说明 | 注入过程说明 )

Android 逆向Android 进程注入工具开发 ( 远程调用总结 | 远程调用注意事项 )

Android 逆向Android 进程注入工具开发 ( SO 进程注入环境及 root 权限获取 | 进程注入时序分析 )

Android 逆向Android 进程注入工具开发 ( 注入代码分析 | 调试进程 ATTACH 附着目标进程 | 读取目标函数寄存器值并存档 )

Android 逆向Android 进程注入工具开发 ( 远程调用 | x86 架构的返回值获取 | arm 架构远程调用 )

Android 逆向Android 进程注入工具开发 ( 注入代码分析 | 远程调用 目标进程中 libc.so 动态库中的 mmap 函数 三 | 等待远程函数执行完毕 | 寄存器获取返回值 )(代