【Android 逆向】Android 进程注入工具开发 ( Visual Studio 开发 Android NDK 应用 | VS 自带的 Android 平台应用创建与配置 )
文章目录
- 一、Visual Studio 安装 " 使用 C++ 的移动开发 "
- 二、Visual Studio 中创建 " 动态共享库(Android) " 类型应用
- 三、设置编译选项
- 四、生成 ARM 架构 SO 动态库
- 五、生成 x86 架构 SO 动态库
一、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"#endifLOGI("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 进程注入工具开发 ( Visual Studio 开发 Android NDK 应用 | Visual Studio 中 SDK 和 NDK 安装位置 )
文章目录 一.Visual Studio 中安装 " 使用 C++ 的移动开发 " 开发库 二.Visual Studio 中安装的 Android SDK 和 NDK 位置 三. ...
- 【Android 逆向】Android 进程注入工具开发 ( Visual Studio 开发 Android NDK 应用 | 使用 Makefile 构建 Android 平台 NDK 应用 )
文章目录 一.Visual Studio 中创建 Makefile 项目 二.配置 Makefile 文件 三.配置 Android.mk 四.配置 Application.mk 五.主函数源码 六. ...
- 【Android 逆向】Android 进程注入工具开发 ( 总结 | 源码编译 | 逆向环境搭建使用 | 使用进程注入工具进行逆向操作 ) ★★★
文章目录 一.Android 进程注入工具开发系列博客 二.Android 进程注入工具 源码下载编译 三.逆向环境搭建 四.使用注入工具进行逆向操作 1.获取远程进程号 2.注入工具准备 3.注入动 ...
- 【Android 逆向】Android 进程注入工具开发 ( 编译注入工具 | 编译结果文件说明 | 注入过程说明 )
文章目录 一.编译注入工具 二.编译结果文件说明 三.注入过程说明 一.编译注入工具 在 Visual Studio 2019 中打开了一个 " 生成文件项目 " , 该项目就是注 ...
- 【Android 逆向】Android 进程注入工具开发 ( 远程调用 | x86 架构的返回值获取 | arm 架构远程调用 )
文章目录 前言 一.x86 架构的返回值获取 二.ARM 架构远程调用 前言 在之前的博客 [Android 逆向]Android 进程注入工具开发 ( 注入代码分析 | 获取 远程 目标进程 中的 ...
- 【Android 逆向】Android 进程注入工具开发 ( 注入代码分析 | 注入工具收尾操作 | 关闭注入的动态库 | 恢复寄存器 | 脱离远程调试附着 )
文章目录 一.dlclose 函数简介 二.关闭注入的 libbridge.so 动态库 三.恢复寄存器 四.脱离远程调试附着 一.dlclose 函数简介 dlclose 函数的作用是 卸载一个 指 ...
- 【Android 逆向】Android 进程注入工具开发 ( 注入代码分析 | 获取注入的 libbridge.so 动态库中的 load 函数地址 并 通过 远程调用 执行该函数 )
文章目录 一.dlsym 函数简介 二.获取 目标进程 linker 中的 dlsym 函数地址 三.远程调用 目标进程 linker 中的 dlsym 函数 获取 注入的 libbridge.so ...
- 【Android 逆向】Android 进程注入工具开发 ( 注入代码分析 | 获取 linker 中的 dlopen 函数地址 并 通过 远程调用 执行该函数 )
文章目录 一.dlopen 函数简介 二.获取 目标进程 linker 中的 dlopen 函数地址 三.远程调用 目标进程 linker 中的 dlopen 函数 一.dlopen 函数简介 dlo ...
- 【Android 逆向】Android 进程注入工具开发 ( 注入代码分析 | 远程调用 目标进程中 libc.so 动态库中的 mmap 函数 三 | 等待远程函数执行完毕 | 寄存器获取返回值 )
文章目录 前言 一.等待远程进程 mmap 函数执行完毕 二.从寄存器中获取进程返回值 三.博客资源 前言 前置博客 : [Android 逆向]Android 进程注入工具开发 ( 注入代码分析 | ...
最新文章
- Docker Buildx插件
- HG522-C 刷Openwrt记录
- java应用中spring自动注入_java-Spring Security会自动过滤注入吗?
- [原] XAF How to Edit multiple objects in a ListViewAndDetailView
- [react] react中setState的第二个参数作用是什么呢?
- 【Keras】从两个实际任务掌握图像分类
- python vb 哪个好学_最难学的七大编程语言,VB 第一,Python垫底,看你学的排第几...
- [转]《帮我买个单》
- yum 安装vsftp_CentOS 8.1 配置vsftp和yum
- 产品选型“神器” TIA Selection Tools 之选择 S7-1500T 全程详解
- 自己怎么制作搞笑动态表情包?小妙招分享给你
- win7 正在配置 请勿关闭计算机,怎么办Win7开机显示正在配置Windows Update请勿关机...
- python之路day3_python之路:day3
- 梯度下降法and随机梯度下降法
- 注意: 如何解决Windows Server 2008 R2 EFI启动模式安装2019年8月更新KB4512486 KB4512506 KB4512514后自动进入修复模式,无法正常启动问题!!!
- php判断pad访问,JS判断是否手机或pad访问实现方法
- supervisor启动进程时报错“gave up: monitor entered FATAL state, too many start retries too quickly”
- 【无标题】使用Ping命令制作的批量Ping工具,可对指定Ip进行ping测试,并将结果记录到txt文件
- 编程和数学基础不佳如何入门人工智能?
- LAMP PHP介绍