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 函数 三 | 等待远程函数执行完毕 | 寄存器获取返回值 )(代