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调试便可。