Android 逆向Android 进程注入工具开发 ( Visual Studio 开发 Android NDK 应用 | VS 自带的 Android 平台应用创建与配置 )
Posted 韩曙亮
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android 逆向Android 进程注入工具开发 ( Visual Studio 开发 Android NDK 应用 | VS 自带的 Android 平台应用创建与配置 )相关的知识,希望对你有一定的参考价值。
文章目录
一、Visual Studio 安装 " 使用 C++ 的移动开发 "
使用 Visual Studio 2019 开发环境 , 参考 【Visual Studio】Visual Studio 2019 社区版 CMake开发环境安装 ( 下载 | 安装相关组件 | 创建编译执行项目 | 错误处理 ) 博客 ;
在 Visual Studio Installer 中 , 安装 " 使用 C++ 的移动开发 " ;
等待安装完成 ;
二、Visual Studio 中创建 " 动态共享库(android) " 类型应用
在 Visual Studio 2019 欢迎界面 选择 " 创建新项目 " ,
在 创建新项目 对话框中 , 选择 " 动态共享库(Android) " 类型的项目 ;
设置项目的存放路径 ;
下面是创建项目时 , 自动生成的代码 ; 所有代码都在 extern "C" {}
包裹中 , 是以标准 C 格式导出 ;
#include "VS_NDK_Demo.h"
#define LOGI(...) ((void)__android_log_print(ANDROID_LOG_INFO, "VS_NDK_Demo", __VA_ARGS__))
#define LOGW(...) ((void)__android_log_print(ANDROID_LOG_WARN, "VS_NDK_Demo", __VA_ARGS__))
extern "C" {
/*此简单函数返回平台 ABI,此动态本地库为此平台 ABI 进行编译。*/
const char * VS_NDK_Demo::getPlatformABI()
{
#if defined(__arm__)
#if defined(__ARM_ARCH_7A__) // 64 位 arm
#if defined(__ARM_NEON__) // 64 位 arm
#define ABI "armeabi-v7a/NEON"
#else
#define ABI "armeabi-v7a" // 32 位 arm
#endif
#else
#define ABI "armeabi"
#endif
#elif defined(__i386__) // x86 架构
#define ABI "x86"
#else
#define ABI "unknown"
#endif
LOGI("This dynamic shared library is compiled with ABI: %s", ABI);
return "This native library is compiled with ABI: %s" ABI ".";
}
void VS_NDK_Demo()
{
}
VS_NDK_Demo::VS_NDK_Demo()
{
}
VS_NDK_Demo::~VS_NDK_Demo()
{
}
}
三、设置编译选项
右键点击 " 解决方案资源管理器 " , 在弹出的菜单中 , 选择 " 属性 " 设置 ;
设置预处理器 :
设置预编译头文件 :
预编译头文件是一些常用的头文件 : pch.h 内容如下 ;
#include <jni.h>
#include <errno.h>
#include <string.h>
#include <unistd.h>
#include <sys/resource.h>
#include <android/log.h>
四、生成 ARM 架构 SO 动态库
生成动态库 : 右键点击 " 解决方案资源管理器 " , 在弹出的菜单中 , 选择 " 仅用于项目(J) -> 仅生成 VS_NDK_Demo(B) " 选项 ;
生成动态库结果 : 生成的动态库导出到了 D:\\002_Project\\006_Visual_Studio\\VS_NDK_Demo\\VS_NDK_Demo\\ARM\\Debug\\libVS_NDK_Demo.so 路径中 ; 项目的目录是 D:\\002_Project\\006_Visual_Studio\\VS_NDK_Demo\\VS_NDK_Demo ;
五、生成 x86 架构 SO 动态库
上面导出的 ARM 架构的动态库 , 可以选择 x86 架构 , 再次编译 ; 可选择的架构有 ARM , ARM64 , x86 , x64 ;
以上是关于Android 逆向Android 进程注入工具开发 ( Visual Studio 开发 Android NDK 应用 | VS 自带的 Android 平台应用创建与配置 )的主要内容,如果未能解决你的问题,请参考以下文章
Android 逆向Android 进程注入工具开发 ( 编译注入工具 | 编译结果文件说明 | 注入过程说明 )
Android 逆向Android 进程注入工具开发 ( 远程调用总结 | 远程调用注意事项 )
Android 逆向Android 进程注入工具开发 ( SO 进程注入环境及 root 权限获取 | 进程注入时序分析 )
Android 逆向Android 进程注入工具开发 ( 注入代码分析 | 调试进程 ATTACH 附着目标进程 | 读取目标函数寄存器值并存档 )
Android 逆向Android 进程注入工具开发 ( 远程调用 | x86 架构的返回值获取 | arm 架构远程调用 )
Android 逆向Android 进程注入工具开发 ( 注入代码分析 | 远程调用 目标进程中 libc.so 动态库中的 mmap 函数 三 | 等待远程函数执行完毕 | 寄存器获取返回值 )(代