文章目录

  • 一、Visual Studio 中创建 Makefile 项目
  • 二、配置 Makefile 文件
  • 三、配置 Android.mk
  • 四、配置 Application.mk
  • 五、主函数源码
  • 六、编译 NDK 项目

一、Visual Studio 中创建 Makefile 项目


在 Visual Studio 2019 欢迎界面中 , 选择 " 创建新项目 " ;

在 " 创建新项目 " 对话框中 , 选择 " 生成文件项目 " , 注意选择 " 自带生成系统来编译 C++ " 这个项目类型 , 不要选错了 ;

设置项目路径 :

设置 " 生成文件项目 " 的调试设置 ;

  • 生成命令行 : make -f Makefile.mk
  • 清除命令行 : make -f Makefile.mk clean
  • 重新生成命令行 : make -f Makefile.mk -B

如果 Windows 端没有 make 功能 , 参考 【开发环境】Windows 系统中使用 Makefile 构建脚本编译 C 程序 ( 下载并安装 TDM-GCC 编译器 | 配置环境变量 | 编译 Makefile 程序 ) 博客 , 安装 make 工具 ;

刚创建完项目后 , 项目是空的 ;

二、配置 Makefile 文件


如果 Windows 端没有 make 功能 , 参考 【开发环境】Windows 系统中使用 Makefile 构建脚本编译 C 程序 ( 下载并安装 TDM-GCC 编译器 | 配置环境变量 | 编译 Makefile 程序 ) 博客 , 安装 make 工具 ;

安装完毕后 , 将 D:\001_Develop\020_TDM-GCC-64\bin\mingw32-make.exe 文件 , 重命名为 make.exe , 或者复制一份重名为 make.exe , 就可以直接在命令行中使用 make 命令 ;

这是编译 NDK 项目的通用 Makefile 配置 : 使用前只需要修改 NDK 和 NDK_ROOT 中的自己的 NDK 即可 ;

NDK = D:/001_Develop/001_SDK/Sdk/ndk/android-ndk-r14b/ndk-build.cmd
NDK_ROOT = D:/001_Develop/001_SDK/Sdk/ndk/android-ndk-r14b
MAKE = "$(NDK_ROOT)/prebuilt/windows-x86_64/bin/make.exe"
BUILD_SCRIPT = "$(NDK_ROOT)/build/core/build-local.mk"
PROJ_PATH = NDK_PROJECT_PATH=.APP_SCRIPT = APP_BUILD_SCRIPT=./Android.mk NDK_APPLICATION_MK=./Application.mkBUILD_COMMAND = $(NDK) NDK_PROJECT_PATH=. $(APP_SCRIPT)
# D:/001_Develop/001_SDK/Sdk/ndk/android-ndk-r14b/ndk-build.cmd NDK_PROJECT_PATH=. APP_BUILD_SCRIPT=./Android.mk NDK_APPLICATION_MK=./Application.mk.PHONY:allall:$(NDK) $(PROJ_PATH) $(APP_SCRIPT)@echo done!clean:$(NDK) $(PROJ_PATH) $(APP_SCRIPT) clean@echo done!rebuild:$(NDK) $(PROJ_PATH) $(APP_SCRIPT) -B@echo done!

三、配置 Android.mk


Android.mk :

LOCAL_PATH               := $(call my-dir)
include                 $(CLEAR_VARS)
# 链接 log 日志库
LOCAL_LDLIBS            += -llog
# 编译可执行程序名称
LOCAL_MODULE            := hello
# 指定源码
LOCAL_SRC_FILES         := main.c
# 指定输出目录
# NDK_APP_DST_DIR           := ../Debug/$(TARGET_ARCH_ABI)
# 编译可执行程序
include                 $(BUILD_EXECUTABLE)

四、配置 Application.mk


Application.mk :

# 指定要编译的 CPUU 架构
APP_ABI                 := armeabi armeabi-v7a x86
# 指定用于此应用的 C++ 标准库
APP_STL                 := gnustl_static
# 指定编译的 Android 平台 , 一般是 Android 兼容的最低版本
APP_PLATFORM            := android-19

五、主函数源码


main.c 源码 :

#include <stdio.h>  int main(int argc, char** argv) {printf("Hello World");return 0;
}

六、编译 NDK 项目


右键点击 " 解决方案资源管理器 " , 在弹出的菜单中 , 选择 " 仅用于项目(J) -> 仅生成 VS_NDK_Makefile(B) " 选项 ;

编译结果 :

【Android 逆向】Android 进程注入工具开发 ( Visual Studio 开发 Android NDK 应用 | 使用 Makefile 构建 Android 平台 NDK 应用 )相关推荐

  1. 【Android 逆向】Android 进程注入工具开发 ( Visual Studio 开发 Android NDK 应用 | Visual Studio 中 SDK 和 NDK 安装位置 )

    文章目录 一.Visual Studio 中安装 " 使用 C++ 的移动开发 " 开发库 二.Visual Studio 中安装的 Android SDK 和 NDK 位置 三. ...

  2. 【Android 逆向】Android 进程注入工具开发 ( Visual Studio 开发 Android NDK 应用 | VS 自带的 Android 平台应用创建与配置 )

    文章目录 一.Visual Studio 安装 " 使用 C++ 的移动开发 " 二.Visual Studio 中创建 " 动态共享库(Android) " ...

  3. 【Android 逆向】Android 进程注入工具开发 ( 总结 | 源码编译 | 逆向环境搭建使用 | 使用进程注入工具进行逆向操作 ) ★★★

    文章目录 一.Android 进程注入工具开发系列博客 二.Android 进程注入工具 源码下载编译 三.逆向环境搭建 四.使用注入工具进行逆向操作 1.获取远程进程号 2.注入工具准备 3.注入动 ...

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

    文章目录 一.编译注入工具 二.编译结果文件说明 三.注入过程说明 一.编译注入工具 在 Visual Studio 2019 中打开了一个 " 生成文件项目 " , 该项目就是注 ...

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

    文章目录 前言 一.x86 架构的返回值获取 二.ARM 架构远程调用 前言 在之前的博客 [Android 逆向]Android 进程注入工具开发 ( 注入代码分析 | 获取 远程 目标进程 中的 ...

  6. 【Android 逆向】Android 进程注入工具开发 ( 注入代码分析 | 注入工具收尾操作 | 关闭注入的动态库 | 恢复寄存器 | 脱离远程调试附着 )

    文章目录 一.dlclose 函数简介 二.关闭注入的 libbridge.so 动态库 三.恢复寄存器 四.脱离远程调试附着 一.dlclose 函数简介 dlclose 函数的作用是 卸载一个 指 ...

  7. 【Android 逆向】Android 进程注入工具开发 ( 注入代码分析 | 获取注入的 libbridge.so 动态库中的 load 函数地址 并 通过 远程调用 执行该函数 )

    文章目录 一.dlsym 函数简介 二.获取 目标进程 linker 中的 dlsym 函数地址 三.远程调用 目标进程 linker 中的 dlsym 函数 获取 注入的 libbridge.so ...

  8. 【Android 逆向】Android 进程注入工具开发 ( 注入代码分析 | 获取 linker 中的 dlopen 函数地址 并 通过 远程调用 执行该函数 )

    文章目录 一.dlopen 函数简介 二.获取 目标进程 linker 中的 dlopen 函数地址 三.远程调用 目标进程 linker 中的 dlopen 函数 一.dlopen 函数简介 dlo ...

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

    文章目录 前言 一.等待远程进程 mmap 函数执行完毕 二.从寄存器中获取进程返回值 三.博客资源 前言 前置博客 : [Android 逆向]Android 进程注入工具开发 ( 注入代码分析 | ...

最新文章

  1. java开发培训好学习吗?难度大不大?
  2. mysql 存储过程月单拆天单_为部门整理的mysql_db使用军规
  3. (转)Android 常用 adb 命令总结
  4. 音视频技术开发周刊 83期
  5. PAT_B_1029 旧键盘
  6. 查询成绩最好的前两名_一级建造师成绩查询前这几件事很重要
  7. 第十节: 利用SQLServer实现Quartz的持久化和双机热备的集群模式
  8. java 聊天室界面_java图形界面聊天室简版
  9. 拓扑排序---AOV图
  10. 现代大学英语精读第二版(第六册)学习笔记(原文及全文翻译)——3 - What Is News?(新闻是什么?)
  11. 新人爬虫学习_爬取腾讯招聘信息
  12. php的chunk_split,php函数chunk_split详解
  13. 关于小码哥kylin
  14. 论华为云的气质与修养
  15. 视频播放器(AVPlayer)
  16. 江南爱软装十大品牌 提升格调的软装种类
  17. 教你作一份高水准的简历
  18. MacBookPro 2015电池召回
  19. 绝对经典的原理定理理论原则效应法则
  20. 使用matlab部分分式展开

热门文章

  1. java多线程 ThreadPoolExecutor 策略的坑
  2. CPU性能监控之一------CPU架构
  3. 【转】Bresenham快速画直线算法
  4. HTTP 协议详解--转
  5. 挑出IIS日志里某一文件的请求次数
  6. pythonweb框架Flask学习笔记05-简单登陆
  7. [HTML]增加input标签的multiple属性上传的文件数
  8. Request库的安装与使用
  9. 陈鑫136201010502
  10. 以系统最高权限运行软件