用hexdump从嵌入式Linux设备中提取二进制文件

手上有一台设备希望从中提取一个ELF到本地做逆向工程,设备只开放了一个COM口用于访问U-Boot和Linux Shell,BusyBox里可用的命令少得可怜,tftp、minicom也全部阉割。手头暂时没有直接拆flash读rootfs的工具,不过好在/usr/bin里还留了一个hexdump可以转储二进制文件。

hexdump本身只有转储功能,不能将转储之后的数据还原成二进制文件。
目标:将hexdump转储的十六进制文本还原为原始的二进制文件。

$ hexdump -v -e '16/1 "%02x " "\n"' ca-app

其中:
-v 表示输出时不要省略重复的行。默认情况下,如果有连续相同的数据行,hexdump 会省略这些行,只显示一行,并在其后用一个星号 (*) 表示省略。使用 -v 参数后,会显示所有行。

直接运行命令即可在控制台输出转储后的二进制文件:

7f 45 4c 46 01 01 01 00 00 00 00 00 00 00 00 00
03 00 08 00 01 00 00 00 80 8e 00 00 34 00 00 00
54 85 04 00 07 10 00 00 34 00 20 00 0a 00 28 00
20 00 1f 00 06 00 00 00 34 00 00 00 34 00 00 00
34 00 00 00 40 01 00 00 40 01 00 00 04 00 00 00
04 00 00 00 03 00 00 00 74 01 00 00 74 01 00 00
74 01 00 00 0d 00 00 00 0d 00 00 00 04 00 00 00
...

串口控制台将输出的内容保存到文本文件ca-app.hex。

在Ubuntu中使用xxd即可将转储的内容还原为二进制文件。

$ xxd -r -p ca-app.hex ca-app

验证:

1、使用IDA加载还原后的文件可正常进行逆向工程。

用hexdump从嵌入式Linux设备中提取二进制文件插图

2、再次运行hexdump转储还原后的文件,内容相同。

7f 45 4c 46 01 01 01 00 00 00 00 00 00 00 00 00
03 00 08 00 01 00 00 00 80 8e 00 00 34 00 00 00
54 85 04 00 07 10 00 00 34 00 20 00 0a 00 28 00
20 00 1f 00 06 00 00 00 34 00 00 00 34 00 00 00
34 00 00 00 40 01 00 00 40 01 00 00 04 00 00 00
04 00 00 00 03 00 00 00 74 01 00 00 74 01 00 00
74 01 00 00 0d 00 00 00 0d 00 00 00 04 00 00 00
...
暂无评论

发送评论 编辑评论


|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇