文章目录

  • 一、Android 平台代码调试器代码
  • 二、Android.mk 构建脚本内容
  • 三、Application.mk 构建脚本内容
  • 四、正式编译
  • 五、博客资源

一、Android 平台代码调试器代码


将代码放在 Y:\002_WorkSpace\001_AS\HackTool 目录下 , 之后需要用到该路径 ;

二、Android.mk 构建脚本内容


Android.mk 构建脚本 更详细的配置方法 , 参考 https://developer.android.google.cn/ndk/guides/android_mk#tiv 文档 ;

完整的 Android.mk 构建脚本 : 每行配置都添加了详细注释 ;

# 代码调试器核心代码
JNI_SRC                 := HackTool.cpp main.cpp public.cpp Ptrace.cpp
# base 代码路径
BASE_SRC                := $(wildcard ./Base/*.cpp)
# json 代码路径
JSON_SRC                := $(wildcard ./Json/*.cpp)
# zlib 代码路径
ZLIB_SRC                := $(wildcard ./zlib/*.c) $(wildcard ./zlib/*.cpp)
# 当前路径
LOCAL_PATH              := $(call my-dir)
# 头文件路径
SRC_INCLUDES            += $(LOCAL_PATH)/zlib $(LOCAL_PATH)/json $(LOCAL_PATH)/base####libNative####
include                 $(CLEAR_VARS)
LOCAL_ARM_MODE          := arm
# 指定头文件路径
LOCAL_C_INCLUDES        += $(LOCAL_PATH) $(SRC_INCLUDES)
# 链接的动态库
LOCAL_LDLIBS            += -llog -latomic
# 指定代码依赖于特定 C++ 功能
LOCAL_CPPFLAGS          += -frtti -fexceptions -std=c++11 -DDEBUG -DTHUMB
# 静态块前后是有顺序的,前面的依赖后面的库
LOCAL_MODULE            := hacktool
# 指定代码路径
LOCAL_SRC_FILES         := $(JNI_SRC) $(JSON_SRC) $(ZLIB_SRC)
# 编译出来是一个可以在 Android 的 adb shell 命令行可执行的程序
include                 $(BUILD_EXECUTABLE)####libBridge####
include                 $(CLEAR_VARS)
# 指定链接库路径
LOCAL_LDLIBS            += -llog
# 指定编译模块名称
LOCAL_MODULE            := bridge
# 指定 C 代码路径
LOCAL_SRC_FILES         := bridge.c
#NDK_APP_DST_DIR            := ../Debug/$(TARGET_ARCH_ABI)
# 编译目标是动态库
include                 $(BUILD_SHARED_LIBRARY)

三、Application.mk 构建脚本内容


Application.mk 构建脚本编写 , 参考 https://developer.android.google.cn/ndk/guides/application_mk 博客 ;

Application.mk 构建脚本内容 : 每行配置都添加了详细注释 ;

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

四、正式编译


ndk-build 脚本的用法参考 https://developer.android.google.cn/ndk/guides/ndk-build 文档 ;

在 命令行中断 , 进入 Y:\002_WorkSpace\001_AS\HackTool 路径 , 这是 NDK 项目的存放路径 ;

执行

Y:/001_DevelopTools/002_Android_SDK/ndk/android-ndk-r14b-windows-x86_64/android-ndk-r14b/ndk-build.cmd NDK_PROJECT_PATH=. APP_BUILD_SCRIPT=./Android.mk NDK_APPLICATION_MK=./Application.mk

命令 , 编译 Android 平台的代码调试器 ;

其中 Y:/001_DevelopTools/002_Android_SDK/ndk/android-ndk-r14b-windows-x86_64/android-ndk-r14b/ndk-build.cmd 是 android-ndk-r14b 版本 ndk 的 ndk-build.cmd 编译工具 , 注意不要用错版本 ;

NDK_PROJECT_PATH=. 用于指定 NDK 项目的路径 , 一般都是在当前路径执行 ;

APP_BUILD_SCRIPT=./Android.mk 用于指定 Android.mk 构建脚本 ;

NDK_APPLICATION_MK=./Application.mk 用于指定 Application.mk 构建脚本 ;

命令行输出 :

Microsoft Windows [版本 10.0.19041.1288]
(c) Microsoft Corporation。保留所有权利。Y:\002_WorkSpace\001_AS\HackTool>Y:/001_DevelopTools/002_Android_SDK/ndk/android-ndk-r14b-windows-x86_64/android-ndk-r14b/ndk-build.cmd NDK_PROJECT_PATH=. APP_BUILD_SCRIPT=./Android.mk NDK_APPLICATION_MK=./Application.mk
[armeabi] Compile thumb  : bridge <= bridge.c
[armeabi] SharedLibrary  : libbridge.so
[armeabi] Install        : libbridge.so => libs/armeabi/libbridge.so
[armeabi] Compile++ arm  : hacktool <= HackTool.cpp
[armeabi] Compile++ arm  : hacktool <= main.cpp
[armeabi] Compile++ arm  : hacktool <= public.cpp
[armeabi] Compile++ arm  : hacktool <= Ptrace.cpp
[armeabi] Compile++ arm  : hacktool <= json_reader.cpp
[armeabi] Compile++ arm  : hacktool <= json_value.cpp
[armeabi] Compile++ arm  : hacktool <= json_writer.cpp
[armeabi] Compile arm    : hacktool <= adler32.c
[armeabi] Compile arm    : hacktool <= compress.c
[armeabi] Compile arm    : hacktool <= crc32.c
[armeabi] Compile arm    : hacktool <= deflate.c
[armeabi] Compile arm    : hacktool <= gzclose.c
[armeabi] Compile arm    : hacktool <= gzlib.c
[armeabi] Compile arm    : hacktool <= gzread.c
[armeabi] Compile arm    : hacktool <= gzwrite.c
[armeabi] Compile arm    : hacktool <= infback.c
[armeabi] Compile arm    : hacktool <= inffast.c
[armeabi] Compile arm    : hacktool <= inflate.c
[armeabi] Compile arm    : hacktool <= inftrees.c
[armeabi] Compile arm    : hacktool <= trees.c
[armeabi] Compile arm    : hacktool <= uncompr.c
[armeabi] Compile arm    : hacktool <= zutil.c
[armeabi] Compile++ arm  : hacktool <= Compressor.cpp
[armeabi] Executable     : hacktool
[armeabi] Install        : hacktool => libs/armeabi/hacktool
[armeabi-v7a] Compile thumb  : bridge <= bridge.c
[armeabi-v7a] SharedLibrary  : libbridge.so
[armeabi-v7a] Install        : libbridge.so => libs/armeabi-v7a/libbridge.so
[armeabi-v7a] Compile++ arm  : hacktool <= HackTool.cpp
[armeabi-v7a] Compile++ arm  : hacktool <= main.cpp
[armeabi-v7a] Compile++ arm  : hacktool <= public.cpp
[armeabi-v7a] Compile++ arm  : hacktool <= Ptrace.cpp
[armeabi-v7a] Compile++ arm  : hacktool <= json_reader.cpp
[armeabi-v7a] Compile++ arm  : hacktool <= json_value.cpp
[armeabi-v7a] Compile++ arm  : hacktool <= json_writer.cpp
[armeabi-v7a] Compile arm    : hacktool <= adler32.c
[armeabi-v7a] Compile arm    : hacktool <= compress.c
[armeabi-v7a] Compile arm    : hacktool <= crc32.c
[armeabi-v7a] Compile arm    : hacktool <= deflate.c
[armeabi-v7a] Compile arm    : hacktool <= gzclose.c
[armeabi-v7a] Compile arm    : hacktool <= gzlib.c
[armeabi-v7a] Compile arm    : hacktool <= gzread.c
[armeabi-v7a] Compile arm    : hacktool <= gzwrite.c
[armeabi-v7a] Compile arm    : hacktool <= infback.c
[armeabi-v7a] Compile arm    : hacktool <= inffast.c
[armeabi-v7a] Compile arm    : hacktool <= inflate.c
[armeabi-v7a] Compile arm    : hacktool <= inftrees.c
[armeabi-v7a] Compile arm    : hacktool <= trees.c
[armeabi-v7a] Compile arm    : hacktool <= uncompr.c
[armeabi-v7a] Compile arm    : hacktool <= zutil.c
[armeabi-v7a] Compile++ arm  : hacktool <= Compressor.cpp
[armeabi-v7a] Executable     : hacktool
[armeabi-v7a] Install        : hacktool => libs/armeabi-v7a/hacktool
[x86] Compile        : bridge <= bridge.c
[x86] SharedLibrary  : libbridge.so
[x86] Install        : libbridge.so => libs/x86/libbridge.so
[x86] Compile++      : hacktool <= HackTool.cpp
[x86] Compile++      : hacktool <= main.cpp
[x86] Compile++      : hacktool <= public.cpp
[x86] Compile++      : hacktool <= Ptrace.cpp
[x86] Compile++      : hacktool <= json_reader.cpp
[x86] Compile++      : hacktool <= json_value.cpp
[x86] Compile++      : hacktool <= json_writer.cpp
[x86] Compile        : hacktool <= adler32.c
[x86] Compile        : hacktool <= compress.c
[x86] Compile        : hacktool <= crc32.c
[x86] Compile        : hacktool <= deflate.c
[x86] Compile        : hacktool <= gzclose.c
[x86] Compile        : hacktool <= gzlib.c
[x86] Compile        : hacktool <= gzread.c
[x86] Compile        : hacktool <= gzwrite.c
[x86] Compile        : hacktool <= infback.c
[x86] Compile        : hacktool <= inffast.c
[x86] Compile        : hacktool <= inflate.c
[x86] Compile        : hacktool <= inftrees.c
[x86] Compile        : hacktool <= trees.c
[x86] Compile        : hacktool <= uncompr.c
[x86] Compile        : hacktool <= zutil.c
[x86] Compile++      : hacktool <= Compressor.cpp
[x86] Executable     : hacktool
[x86] Install        : hacktool => libs/x86/hacktoolY:\002_WorkSpace\001_AS\HackTool>

编译后 , 在 ndk 工程目录下生成了 libs 和 obj 目录 ;

libs 目录下是编译结果 , 分别表示不同 cpu 架构的编译结果 ;

Y:\002_WorkSpace\001_AS\HackTool\libs\x86\hacktool 是编译出来可以在 x86 手机 , 也就是电脑上的 Android 模拟器中 , 可以运行的 Android 代码调试器 程序 ;

五、博客资源


CSDN 下载 : https://download.csdn.net/download/han1202012/35933121

【Android 逆向】代码调试器开发 ( 使用 NDK 中的 ndk-build + Android.mk 编译 Android 平台的代码调试器可执行应用 )相关推荐

  1. 【Android 逆向】ART 脱壳 ( dex2oat 脱壳 | aosp 中搜索 dex2oat 源码 | dex2oat.cc#main 主函数源码 )

    文章目录 前言 一.搜索 dex2oat 源码 二.dex2oat.cc#main 主函数源码 前言 在 [Android 逆向]ART 脱壳 ( DexClassLoader 脱壳 | exec_u ...

  2. 【Android的从零单排开发日记】之入门篇(十六)——Android的动画效果

    什么是动画,动画的本质是通过连续不断地显示若干图像来产生"动"起来的效果.比如说一个移动的动画,就是在一定的时间段内,以恰当的速率(起码要12帧/秒以上,才会让人产生动起来的错觉) ...

  3. Android Studio在音视频开发进阶指南中的Mp3Encoder中遇到的问题

    增加C++中java曾调用Native代码中遇到的问题 主要的错误: 在对应的class文件的目录下,执行下面的命令生成JNI接口文件 javah -jni com.phuket.tour.studi ...

  4. 基于NDK、C++、FFmpeg的android视频播放器开发实战-夏曹俊-专题视频课程

    基于NDK.C++.FFmpeg的android视频播放器开发实战-1796人已学习 课程介绍         课程包含了对流媒体(拉流)的播放,演示了播放rtmp的香港卫视,支持rtsp摄像头和ht ...

  5. Android视频播放器开发—— 探究MediaPlayer

    概述 之前在公司都是做金融和博彩相关的app,很少接触到视频播放类的应用开发,趁最近比较闲,想逐步学习相关的知识,给自己增加点视频类app开发的经验,也希望读者能够从我个人的学习当中得到一些启发. 一 ...

  6. 【Android 逆向】arm 汇编 ( 使用 IDA 解析 arm 架构的动态库文件 | 使用 IDA 打开 arm 动态库文件 | 切换 IDA 中汇编代码显示样式 )

    文章目录 一.使用 IDA 打开 arm 动态库文件 二.切换 IDA 中汇编代码显示样式 一.使用 IDA 打开 arm 动态库文件 分析 Android SDK 中的 arm 架构的动态库 , 动 ...

  7. Android逆向与病毒分析

    本文由同程旅游安全团队对内移动安全培训的PPT整理而来,面向对象为对移动安全感兴趣的研发同事,所以讲的有些宽泛.介绍了入门Android逆向需要掌握的一些知识点, 通过简单的几个案例讲解Android ...

  8. 基于Android的手机安全卫士的开发

    基于Android的手机安全卫士的开发 开发环境 处理器:Intel® Core™ i5-5200U CPU 2.20GHz 内存:4GB 硬盘:500GB 操作系统:Windows 7中文版,64位 ...

  9. 教我兄弟学Android逆向

    作者论坛****账号:会飞的丑小鸭 课程导航: <教我兄弟学Android逆向01 编写第一个Android程序> <教我兄弟学Android逆向02 破解第一个Android程序 ...

最新文章

  1. 打通多个视觉任务的全能Backbone:HRNet
  2. 【C语言学习】《C Primer Plus》第5章 运算符、表达式和语句
  3. Kali Linux 2020.1快速修改root用户密码
  4. Entity Freamwork 6连接PostgreSql数据库
  5. boost::remove_copy_if相关的测试程序
  6. 知乎 开源机器学习_使用开源数据和机器学习预测海洋温度
  7. A Survey on Knowledge Graph-Based Recommender Systems 知识图谱提升推荐系统准确性与可解释性ArXiv 2020
  8. C#串口通信工作笔记0001---上位机开发_嵌入式_串口助手_收发数据开发
  9. php 正则 修饰符,php 正则修饰符
  10. 反向题在测试问卷信效度_关于调查问卷的信度和效度检验
  11. 聊天机器人-基于QQ聊天记录训练
  12. 禁止搜索引擎收录网站内容,百度,谷歌,所有等...
  13. 国外最流行的Bootstrap后台管理模板
  14. 2019 杭电多校第6场 HDU - 6638 Snowy Smile 线段树 最大子段和
  15. 2.模仿小米通讯录的快速索引demo
  16. Android 9 ServerManger源码分析
  17. shell 中的括号(小括号,花括号)
  18. 互联网让中国零售业弯道超车:近创新比黑科技重要
  19. 参加孤尽老师DIY班一期的主要收获
  20. 2014年音视频即时通讯市场的割据

热门文章

  1. 第二步 (仅供参考) sencha touch + PhoneGap(cordova 2.9 及其以下版本) 使用 adt eclipse进行打包...
  2. 面向接口编程详解(一)—— 思想基础
  3. 冲动当机立断(2006-01-19 16:58:32)(新浪)
  4. [转载] 什么时候应该使用 ==?什么时候应该使用 Equals?
  5. Tensorflow--Debug
  6. 线性可分 与线性不可分
  7. 信息安全复习2关于网络安全
  8. 在用数据绑定的时候我为什么不能把焦点移出(Tab out)我的控件?(译)
  9. 关于js私钥加密公钥解密的问题
  10. 【onethink1.0】HTML模板获取前台和后台当前登录用户名