ARM Linux下搭建IDA Pro远程调试环境

最近逆向一个ARM架构下的linux可执行文件,因为静态分析获取到的信息有限,所以打算搭建个ARM Linux下的IDA Pro远程调试服务端。

折腾了一段时间,最终总算是搭建成功了!

 

简述下环境参数:

  • CPU: Cortex A53 * 4
  • 内存: 2GiB
  • 系统环境:Ubuntu 16.04 for ARM64
  • 内核版本:GNU/Linux 4.4.103 aarch64

 

IDA Pro针对特定软件环境的远程调试服务端程序,可以在IDA Pro安装目录下的dbgsrv目录下找到,因为我需要调试的环境是基于ARM架构的Linux,所以这里采用armlinux_server这个程序。

 

先把远程调试服务端(armlinux_server)复制到目标板的文件系统中(不是armuclinux_server哦,uclinux是实时操作系统)。

然后为其加上可执行权限并运行:

然而终端提示:

出现这个错误的原因是因为可执行程序所依赖的库系统未找到。

我们可以执行以下命令查看可执行程序所依赖那些共享库:

终端输出如下:

可见依赖的共享库,都是gcc自己的库,可能是因为我的系统是ARM64的,程序是32位的,并且系统没有32位GCC的运行库,才导致程序运行失败。

好在是ubuntu,直接apt搜索下相关的软件包:

匹配的结果很多,这里就不展示了,我选了个4.9 的GCC,用apt安装:

安装完成不代表系统就知道有这个库了,还需要做一些配置,这时可以看看/usr目录下有没有相关目录:

终端输出:

切换到arm-linux-gnueabihf目录下再看看:

lib目录就是我们真正关心的东西,记录lib目录的绝对路径,然后去编辑系统共享库配置文件:

以上命令只是在/etc/ld.so.conf.d目录下新建了一个arm-linux-gnueabihf.conf文件,内容为/usr/arm-linux-gnueabihf/lib

然后记得更新系统共享库配置:

接着尝试运行远程调试服务端:

终端还是提示:

这里我被卡了很久,后来在网上找到个方法:

以上命令会把可执行文件的.interp段的内容显示出来,终端输出如下:

可以看出是个绝对路径,那么我们试试把刚才安装的库做个符号链接到这个绝对位置,再运行服务端试试:

执行后输出如下:

至此,成功配置好并启动了IDA Pro的远程调试服务端。

Print Friendly, PDF & Email

留下评论

18 − 3 =

*

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据

%d 博主赞过: