Android NDK靜態(tài)注冊 動態(tài)注冊:
Android NDK靜態(tài)注冊 動態(tài)注冊_so靜態(tài)注冊不安全嘛_Codeooo的博客-CSDN博客
1.?如何編譯原生程序
????????Application.mk(ARM硬件指令集/工程編譯腳本/stl支持等)
????????Android.mk(編譯選項/頭文件/源文件及依賴庫等)
????????local_path(call my-dir)
????????include $(clear_vars)
????????local_arm_mode:= arm指令模式
????????local_module:=模塊名稱
????????local_src_files:=源文件
????????build_executable(可執(zhí)行文件)
????????build_shared_library(動態(tài)鏈接庫)
????????build_static_library(靜態(tài)鏈接庫))
2.?原生程序的啟動流程
????????原生程序的入口函數(shù)??
????????動態(tài)庫的加載/程序參數(shù)argc和argv的初始化
????????靜態(tài)鏈接/動態(tài)鏈接(動態(tài)鏈接程序/動態(tài)鏈接庫)
????????靜態(tài)鏈接(crtbedin_static.o/crend_android.o)
????????動態(tài)鏈接(crtbegin_dynamic.o/crtend_android.o/加載 器 (system/bin/linker))
????????靜態(tài)鏈接程序在啟動時不需要額外的加載其他的動態(tài)庫 (init/adbd/linker)
????????靜態(tài)鏈接與動態(tài)鏈接程序的入口函數(shù)相同,動態(tài)鏈接程序 在執(zhí)行入口函數(shù)前需要通過linker進行額外的初始化
main函數(shù)究竟何時被執(zhí)行
????????靜態(tài)鏈接(libc_init_static)/動態(tài)鏈接程序 (libc_init_dynamic)
3.?原生C++程序逆向分析
????????C++類的逆向
????????C++中的類可以理解為C語言中的結(jié)構(gòu)體,每一個成員變 量就是一個結(jié)構(gòu)字段,每一個成員函數(shù)的代碼都被優(yōu)化到 了類的外部,它們不占據(jù)存儲空間
????????Android NDK對C++特性的支持(app_stl)
????????system
????????gabi++(rtti)=>gabi++_static/gabi_shared
????????stlport(rtti/stl)=>stlport_static/stlport_shared
????????gnustl(c++異常/rtti/stl)=>gnustl_static/gnustl_shared
4.?Android NDK JNI API逆向分析
????????Android NDK提供了那些函數(shù)
????????Linux C/C++
????????Android NDK<=>JNI接口<=>java
????????JNINativeInterfasce(jni本地接口)
????????JNIInvokeInterface(jni調(diào)用接口)
移植/保護核心代碼
如何靜態(tài)分析Android NDK程序文章來源:http://www.zghlxwxcb.cn/news/detail-593391.html
?????file=>load file=>parse c header file=>jni.h=>structures文章來源地址http://www.zghlxwxcb.cn/news/detail-593391.html
到了這里,關(guān)于Android NDK介紹 Android NDK靜態(tài)注冊 動態(tài)注冊:的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!