日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

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

發布時間:2025/6/17 Android 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【Android 逆向】代码调试器开发 ( 使用 NDK 中的 ndk-build + Android.mk 编译 Android 平台的代码调试器可执行应用 ) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

  • 一、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 平台的代码调试器可执行应用 )的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。