Android 逆向Android 逆向通用工具开发 ( Android 平台运行的 cmd 程序类型 | Android 平台运行的 cmd 程序编译选项 | 编译 cmd 可执行程序 )(代码片段

Posted 韩曙亮

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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_INCLUDESY:/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 平台运行的 cmd 程序类型 | Android 平台运行的 cmd 程序编译选项 | 编译 cmd 可执行程序 )(代码片段的主要内容,如果未能解决你的问题,请参考以下文章

Android 逆向Android 逆向通用工具开发 ( adb forward 网络端口重定向命令 | PC 端逆向程序主函数分析 )

Android 逆向Android 逆向通用工具开发 ( Windows 平台运行的控制台应用程序类型 | 编译 Windows 平台运行的 Android 逆向程序 )

Android 逆向Android 逆向通用工具开发 ( PC 端工程分析 | 网络初始化操作 | PC 端工程核心业务逻辑 )

Android 逆向Android 逆向通用工具开发 ( 静态库项目中的网络操作核心类 CNetwork 分析 )

Android 逆向Android 逆向通用工具开发 ( Android 端远程命令工具 | Android 端可执行程序的 main 函数操作 | TCP 协议服务器建立 | 接收客户端数据 )(代

Android 逆向Android 逆向通用工具开发 ( PC 端工具 hacktool 启动 main 函数分析 | hacktool 工程中的核心类 HackCommand 分析 )