【Android 逆向】Android 逆向通用工具开发 ( Android 平台运行的 cmd 程序类型 | Android 平台运行的 cmd 程序编译选项 | 编译 cmd 可执行程序 )
一、Android 平台运行的 cmd 程序类型
Android 平台运行的 cmd 程序 , 该项目工程的程序类型是 " 生成文件项目 ( Android ) " ;
Visual Studio 2019 默认没有该选项 , 需要使用 Visual Studio Installer 安装
① 进入 Visual Studio Installer , 选择 " 修改 " 选项 ;
② 选择 " 使用 C++ 的移动开发 " 开发库 , 安装该开发库 ;
二、Android 平台运行的 cmd 程序编译选项
MobileGameModify 源码中的 remote 就是在 Android 平台上运行的远程程序 ;
该程序是 " 生成文件项目 ( Android ) " , 通过配置的 Android.mk 和 Application.mk 进行编译 ;
Application.mk 编译配置 :
# 设置编译的架构 , 这里在 PC 上的雷电模拟器 3.75 上运行肯定是 x86 架构
APP_ABI := x86
# 如果要在 ARM 真机上运行 , 设置 armeabi-v7a armeabi , 注意寄存器相关逻辑需要兼容
APP_STL := gnustl_static
# 最小支持版本
APP_PLATFORM := android-19
Android.mk 编译配置 :
LOCAL_PATH := $(call my-dir)
TINYXML := tinyxml/tinystr.cpp tinyxml/tinyxml.cpp tinyxml/tinyxmlerror.cpp tinyxml/tinyxmlparser.cpp
JSONCPP := json/json_reader.cpp json/json_value.cpp json/json_writer.cpp
####command####
include $(CLEAR_VARS)
# 链接其它库 文件
LOCAL_LDLIBS += -llog
# 指定 C++ 编译选项
LOCAL_CPPFLAGS += -std=c++11
# 指定使用的 C++ 特性
LOCAL_CPP_FEATURES += rtti exceptions
# 指定编译
LOCAL_MODULE := cmd
# 指定头文件查找路径
LOCAL_C_INCLUDES += .
LOCAL_C_INCLUDES += json
LOCAL_C_INCLUDES += tinyxml
# 此处必须设置自己电脑上的 SDK 地址
# 注意 : 版本必须是 android-ndk-r14b
LOCAL_C_INCLUDES += Y:/001_DevelopTools/002_Android_SDK/ndk/android-ndk-r14b-windows-x86_64/android-ndk-r14b/platforms/android-19/arch-x86/usr/include
# 指定源文件
LOCAL_SRC_FILES := main.cpp $(JSONCPP) $(TINYXML)
# 指定编译结果输出路径
NDK_APP_DST_DIR := ../Debug/$(TARGET_ARCH_ABI)
# 指定编译结果是 Android 平台上的可执行文件
include $(BUILD_EXECUTABLE)
在上面需要根据自己的 NDK 路径配置 C 头文件的查找路径 LOCAL_C_INCLUDES
为 Y:/001_DevelopTools/002_Android_SDK/ndk/android-ndk-r14b-windows-x86_64/android-ndk-r14b/platforms/android-19/arch-x86/usr/include
, 这里需要配置 android-ndk-r14b 版本的 NDK , 尽量配置的一样 , 肯定能编译通过 , 使用其它版本不保证编译通过 ;
右键点击该解决方案 , 选择 " 属性 " 选项 ,
在 NMake 面板中配置几个命令 :
-
生成命令行 :
"Y:\001_DevelopTools\002_Android_SDK\ndk\android-ndk-r14b-windows-x86_64\android-ndk-r14b\build\ndk-build.cmd" NDK_PROJECT_PATH=. APP_BUILD_SCRIPT=Android.mk NDK_APPLICATION_MK=Application.mk
-
"全部重新生成" 命令行 :
"Y:\001_DevelopTools\002_Android_SDK\ndk\android-ndk-r14b-windows-x86_64\android-ndk-r14b\build\ndk-build.cmd" NDK_PROJECT_PATH=. APP_BUILD_SCRIPT=Android.mk NDK_APPLICATION_MK=Application.mk -B
-
"清除" 命令行 :
"Y:\001_DevelopTools\002_Android_SDK\ndk\android-ndk-r14b-windows-x86_64\android-ndk-r14b\build\ndk-build.cmd" NDK_PROJECT_PATH=. APP_BUILD_SCRIPT=Android.mk NDK_APPLICATION_MK=Application.mk clean
三、编译 Android 平台的 cmd 可执行程序
右键点击 解决方案 , 选择 " 仅用于项目 / 仅生成 remote " 选项 , 即可开始编译 cmd 可执行程序 ;
编译结果 :
1>------ 已启动生成: 项目: remote, 配置: Debug Win32 ------
1>[x86] Compile++ : cmd <= main.cpp
1>[x86] Compile++ : cmd <= json_reader.cpp
1>[x86] Compile++ : cmd <= json_value.cpp
1>[x86] Compile++ : cmd <= json_writer.cpp
1>[x86] Compile++ : cmd <= tinystr.cpp
1>[x86] Compile++ : cmd <= tinyxml.cpp
1>[x86] Compile++ : cmd <= tinyxmlerror.cpp
1>[x86] Compile++ : cmd <= tinyxmlparser.cpp
1>[x86] Executable : cmd
1>[x86] Install : cmd => ../Debug/x86/cmd
========== 生成: 成功 1 个,失败 0 个,最新 0 个,跳过 0 个 ==========
在 Y:\002_WorkSpace\002_VS\MobileGameModify\Debug\x86
路径下生成 cmd 可执行程序 , 该程序可以在 Android 平台执行 ;
相关文章
- 代码加密 android,Android 开发怎样做代码加密或混淆「建议收藏」
- android 的hook技术,Android Native Hook技术(一)
- strictmode android,Android中的StrictMode
- android逆向工具/命令
- android 安装p12证书,如何在Android中使用p12证书(客户端证书)
- Android定时器Timer简单使用「建议收藏」
- android toast 自定义时间,Android 自定义 Toast 显示时间「建议收藏」
- Android 编译_android线程
- Android保存图片到相册(适配android 10以下及以上)
- Android 图形架构之一 ——概述
- android scaleanimation动画,Android 动画之ScaleAnimation应用详解「建议收藏」
- Android修改字体_android设置字体样式
- 【Android NDK 开发】JNI 方法解析 ( 字符串数组参数传递 | 字符串遍历 | 类型强转 | Java 字符串与 C 字符串转换 | 字符串释放 )
- 【Android 逆向】IDA 工具使用 ( 函数窗口 Function window | 创建引用图 Xrefs graph to | 创建调用图 Xrefs graph from )
- 【Android 逆向】Android 进程注入工具开发 ( 远程进程注入动态库文件操作 | 注入动态库 加载 业务动态库 | 业务动态库启动 | pthread_create 线程开发 )
- 【Android 逆向】Android 逆向通用工具开发 ( Windows 平台运行的控制台应用程序类型 | 编译 Windows 平台运行的 Android 逆向程序 )
- 【Android 命令行工具】Android 命令行工具简介 ( 官方文档 | SDK 命令行工具 | SDK 构建工具 | SDK 平台工具 | 模拟器工具 | Jetifier 工具 )
- 【Android Gradle 插件】Gradle 依赖管理 ⑥ ( dependencies 依赖查找路径 | dependencies 依赖冲突 | dependencies 依赖库层级分析 )
- Android Camera原理之拍照流程zsl优化方案
- Android TextView图文混合编排详解手机开发
- Android Volley网络通信框架的使用(一):Volley的简单用法详解手机开发
- android安装应用程序工具类详解编程语言
- Hijacker:一款All-in-One型的Android端WiFi破解工具
- Android使用Pull方法解析XML文件的方法
- 使用python编写批量卸载手机中安装的android应用脚本