ida pro调试android原生程序,一、使用AndroidStudio搭建NDK环境二、使用IDAPro调试原生程序.PDF...

一、使用AndroidStudio搭建NDK环境二、使用IDAPro调试原生程序.PDF

一、使用Android Studio 搭建NDK 环境

在Android Studio 2.2 以前的版本需要手动配置NDK 环境,项目中需要手动添加

和修改,显得略微繁琐。而在Android Studio 2.2 以后,在创建项目时,可以勾选

Include C++ support 可选框,剩下的由程序自动构建项目,坐享其成。

在搭建NDK 环境,本文不再赘述,可以参考下边两篇知乎的文章:

·《Android Studio 第一个NDK 例子》

/p/3e9f3055d7a6

·《Android Studio 2.2 更方便地创建JNI 项目-CMake》

/p/4eefb16d83e3

二、使用IDA Pro 调试原生程序

源代码请转至文章最后一部分 (第五部分)

1.首先创建一个Android 原生程序,这需要在一个Android 工程的基础上创建,

(可以用Android Studio 创建一个 Empty Activity )。如图,我在一个名为

HelloWorld 的工程的根目录下,创建一个j ni 文件夹,里边有两个文件,而libs

是由后边ndk-build 命令生成的:

·Android.mk (源码参见最后)

ndk-build 使用Android.mk 和Application.mk 作为脚本文件,其中,

Application.mk 文件是可选的。Android.mk 文件是工程的编译脚本,告知编译

系统关于源文件的一些信息,描述了编译原生程序所需的编译选项、头文件、

源文件等等。Application.mk 文件用来描述原生程序本身使用到的一些特性,如

原生程序支持的ARM 硬件指令集、STL 支持等。

·whileCycle.c (源码参见最后)

包含两个子函数的C 程序,内容是while 循环结构语句。用于生成Android 原生

可执行程序。

2.进入命令行,cd 进入j ni 目录,输入

ndk-build

在libs 里边生成适应于不同平台的原生可执行程序

3.此处我采用夜神安卓模拟器,将 armeabi 文件夹中的 whileCycle 拷贝入

/mnt/shared/Other ,还有IDA Pro 中的android_server 和android_server_nonpie 也

拷贝入同一目录下,其中 nonpie 版本用于 Android 4.4 及以下,pie 版本用于

Android 5.0 (L)及以上的版本。

4.在命令行下执行以下命令

adb shell

加上可执行权限

chmod 755 /mnt/shared/Other/whileCycle

chmod 755 /mnt/shared/Other/android_server

chmod 755 /mnt/shared/Other/android_server_nonpie

根据Android 版本的情况启动android_server ,此处启动的是nonpie 版本

/mnt/shared/Other/android_server_nonpie

由图可知,程序提示调试服务器已经启动,并且监听了23946 端口。

打开另一个命令窗口,执行以下命令进行端口转发

adb forward tcp:23946 tcp:23946

5.执行后,启动IDA Pro ,点击菜单栏 “Debugger->Run->Remote

ArmLinux/Android debugger ”,打开调试程序对话框。根据可执行文件的路径,

在Application 栏和Directory 栏输入相应的信息,在Hostname 栏输入localhost

或者,Port 自动选择为23946,如下图所示。

6.设置完成后,点击OK ,则进入调试界面

三、使用IDA Pro 调试Android 原生动态链接库

1.编写 Android 程序javac2.apk (源码请参见第五部分),要求其实现如下功能:

点击 “Chang

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值