LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) LOCAL_MODULE := main LOCAL_SRC_FILES := main.s include $(BUILD_EXECUTABLE)
APP_ABI := armeabi APP_PIE := true
.arch armv7a .text .align 2 .global main .type main, %function main: .code 32 @保存環境 STMFD SP!, {LR} @獲取CPSR寄存器狀態 MRS R1, CPSR @設置CPSR寄存器狀態 @僅能夠設置的標誌位有:N Z C V Q MVN R2, #0 MSR CPSR_cxsf, R2 @恢復環境 LDMFD SP!, {PC}
ndk-build
#makefile all: adb push ./libs/armeabi/main /data/local/tmp adb shell chmod 777 /data/local/tmp/main adb shell /data/local/tmp/main
若以前沒有推送過android_server到手機,請添加推薦android_server部分,這裏我將android_server拷貝到了程序文件目錄。android
adb push ./libs/armeabi/android_server /data/local/tmp adb shell chmod 777 /data/local/tmp/android_server
> adb shell $ su # /data/local/tmp/android_server
> adb forward tcp:23946 tcp:23946
設置調試信息shell
菜單欄Debugger,選擇tcp
設置Process options函數
若有必要,設置斷點位置在OEP處ui
ida快捷鍵F9開始調試,3d
定位main函數調試
若是你的ida定位到了.text代碼段,code
向下找,找到第一個BL調用,按F4執行到這一行,server
觀察R2寄存器的值,R2寄存器的值就是main函數地址,blog
按g,輸入R2的值,就跳轉到了main函數,若是沒解析,按C轉爲代碼。
接下來,F2/F7/F8調試便可。