首页
社区
课程
招聘
[原创]ARM Linux下搭建IDA Pro远程调试环境
发表于: 2018-1-28 00:55 26827

[原创]ARM Linux下搭建IDA Pro远程调试环境

bxc 活跃值
6
2018-1-28 00:55
26827

原文发在我的blog: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。


[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

上传的附件:
收藏
免费 5
支持
分享
最新回复 (12)
雪    币: 3416
活跃值: (2104)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
不错不错,来围观下
2018-1-28 02:10
0
雪    币: 22
活跃值: (139)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
这篇文章发的太及时了,正想要
2018-1-28 10:25
0
雪    币: 4
活跃值: (24)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4

如果只是要armlinuxserver能运行,可以使用一个更简便的方法。

/bin/ls中通常也使用与armlinuxserver相同的库。

如下:

#########

# ./ls 为从目标系统中复制出来的ls, 因为我的目标系统中没有 file指令,懒得安装。

#########


很显然上面这两个库只是命令方式的不同。此时只用在目标系统中做一个链接即可:

ln -s  /lib/ld-linux-armhf.so.3  /lib/ld-linux.so.3 

然后就可以愉快的 ./armlinuxserver 了。




2018-4-26 13:36
0
雪    币: 7048
活跃值: (3527)
能力值: ( LV12,RANK:340 )
在线值:
发帖
回帖
粉丝
5
binsjb 如果只是要armlinuxserver能运行,可以使用一个更简便的方法。/bin/ls中通常也使用与armlinuxserver相同的库。如下:###### ...
感谢分享经验~~~
2018-5-1 21:04
0
雪    币: 165
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
那怎么让armlinux_server跑在路由器固件环境下呢?可写的只有/tmp目录
2018-5-28 14:57
0
雪    币: 7048
活跃值: (3527)
能力值: ( LV12,RANK:340 )
在线值:
发帖
回帖
粉丝
7
Zander 那怎么让armlinux_server跑在路由器固件环境下呢?可写的只有/tmp目录
有基本运行库,/tmp也可以运行啊。
2018-5-29 08:29
0
雪    币: 639
活跃值: (1192)
能力值: ( LV2,RANK:15 )
在线值:
发帖
回帖
粉丝
8
那么如果,armlinux_server  这个  32位的程序都能允许起来,是不是说,其他32位的程序也能允许起来呢?
2018-6-13 15:25
0
雪    币: 639
活跃值: (1192)
能力值: ( LV2,RANK:15 )
在线值:
发帖
回帖
粉丝
9
做了很多测试后,我这边的系统还是提示:
bash  ./armlinu_server  :cannot  execut  binary  file:  Exec  format  error
估计应该是因为模拟器,不是开发板的关系吧?

你这是开发板吧,用的是什么板的?
最后于 2018-6-13 17:05 被qqwawzymu编辑 ,原因:
2018-6-13 15:38
0
雪    币: 7048
活跃值: (3527)
能力值: ( LV12,RANK:340 )
在线值:
发帖
回帖
粉丝
10
qqwawzymu 做了很多测试后,我这边的系统还是提示:bash  ./armlinu_server  :cannot  execut  bina ...
firefly的RK3328板子,tb有
2018-6-13 17:37
0
雪    币: 3099
活跃值: (2172)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
11
如果有 ldd 命令,是不是可以直接用 下面的命令直接查询依赖的库文件 ? 
ldd ./armlinux_server
2020-8-6 15:29
0
雪    币: 50
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
12

请问一下,我也是在ubuntu arm64里面折腾,ubuntu20.04.5 把armlinux_server跑起来后, ida 64-bit远程调试会报"incompatible debugging server address size is 4 bytes expected at least 8",ida 32-bit 远程调试会报Cannot debug a 64bit process with the 32bit debugger server, sorry


请问您知道原因,以及解决办法吗?感谢




最后于 2023-3-6 10:22 被wx_杨洋阳编辑 ,原因:
2023-3-6 09:25
0
雪    币: 7048
活跃值: (3527)
能力值: ( LV12,RANK:340 )
在线值:
发帖
回帖
粉丝
13
wx_杨洋阳 请问一下,我也是在ubuntu arm64里面折腾,ubuntu20.04.5 把armlinux_server跑起来后, ida 64-bit远程调试会报& ...
是不是armlinux_server跟IDA的版本对不上? 很久没搞这个了.
2023-3-9 10:31
0
游客
登录 | 注册 方可回帖
返回
//