ndk-gdb调试Native可执行程序

前言:linux

使用NDK编译的可执行程序的调试步骤整理android

一、编译调试版本shell

1.一、Application.mk中增长
APP_OPTIM := debug

1.二、编译增长DEBUG选项
$ndk-build NDK_DEBUG=1
$ndk-build NDK_PROJECT_PATH=.  NDK_APPLICATION_MK=./Application.mk APP_BUILD_SCRIPT=./Android.mk

二、将生成目录下的gdbserver拷贝到手机上windows

#拷贝gdbserver
$adb push libs/armeabi-v7a/gdbserver /data/local/tmp

#给权限
$adb shell "chmod 777 /data/local/tmp/gdbserver"

#拷贝可执行程序
$adb push libs/armeabi-v7a/expolit /data/local/tmp

#分配权限
$adb shell "chmod 777 /data/local/tmp/expolit"

三、手机终端启动gdbserverbash

3.一、
$adb shell
$cd /data/local/tmp
#启动gdbserver,端口号1234,expolit为要启动的可执行文件
$./gdbserver :1234 expolit

3.二、转发端口
$adb forward tcp:1234 tcp:1234

四、主机端链接调试tcp

#切换到jni的上层目录
$cd {jni-dir}

#链接gdb
$D:\android-ndk-r10e\android-ndk-r10e\toolchains\arm-linux-androideabi-4.9\prebuilt\windows-x86_64\bin\arm-linux-androideabi-gdb.exe

#设置符号路径
(gdb)set solib-search-path obj/local/armeabi-v7a
#强制加载带符号的可执行文件 
(gdb)file obj/local/armeabi-v7a/expolit
#链接远程gdb服务
(gdb)target remote :1234
(gdb) bt
#0  init_payloads () at jni/exploit.c:95
#1  0xb6fe557c in main (argc=1, argv=0xbeac5aa4, env=0xbeac5aac) at jni/exploit.c:294

最后enjoy debuging....ide

相关文章
相关标签/搜索