问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

怎样反汇编bzImage

发布网友 发布时间:2022-04-26 16:03

我来回答

1个回答

热心网友 时间:2023-10-13 09:10

具体步骤如下:
#! /bin/sh
set -x
#
# 一般gzip压缩包的magic值为0x8b1f后跟0x0008,或者0x0808。
# 这里就是要找出这个偏移。
# 119116,就是这个偏移,这个偏移在不同的bzImage里是不同的,所以,这里需要手动调整一下。
# 解压后的文件即vmlinux.bin
od -h -A d bzImage | grep --color -m 3 -A 1 -i 8b1f
dd if=bzImage bs=1 skip=11916 | gunzip > vmlinux.bin
# 调用我写的一个python脚本,生成gnu linker script。
./genlds.py > vmlinux.elf.lds
# 构造 ELF 信息,结果文件为vmlinux.elf
ld -m elf_x86_64 --format binary --oformat elf64-x86-64 -T vmlinux.elf.lds vmlinux.bin -o vmlinux.elf
# 如果是32位系统,可以用以下命令
#ld -m elf_i386 --format binary --oformat elf32-i386 -T vmlinux.elf.lds vmlinux.bin -o vmlinux.elf
# 删除在上一步生成的多余符号。
objcopy --strip-symbol _binary_vmlinux_bin_start --strip-symbol _binary_vmlinux_bin_end --strip-symbol _binary_vmlinux_bin_size vmlinux.elf
# 设置 .text section标志,否则objmp -d不能正常工作,只能用objmp -D。
objcopy --set-section-flag .text=alloc,readonly,code vmlinux.elf
# 以后只是出于验证目的。
# 以schele函数作为一个样本,检查在vmlinux.elf文件里是不是包括了正确的偏移。
grep --color "[tT] schele$" System.map
readelf -s vmlinux.elf | grep " schele$" --color
genlds.py内容如下:
#! /usr/bin/python
import sys
#将 形如 fffffff8989 的字符串转换为数字形式。
def to_no(hexstr):
ret = 0
start = -1
len_hexstr = len(hexstr)
while start>=-len_hexstr:
c = hexstr[start]
if c in "0123456789":
n = ord(c) - ord('0')
elif c in "abcdef":
n = ord(c) - ord('a') + 0xa
elif c in "ABCDEF":
n = ord(c) - ord('A') + 0xa
ret |= long(n((-start-1)*4))
start -= 1
return ret
# 计算addr-base
def sym_offset(addr, base):
if base == "missing-base":
return "missing-offset"
addr = to_no(addr)
base = to_no(base)
return hex(int(addr-base))
lines = file("System.map").readlines()
result=""
# 求.text的开始地址
base="missing-base"
for line in lines:
line = line.strip()
addr, type, sym = line.split(" ")
if type in "tT":
if sym in ("startup_64", "startup_32"):
base = addr
break
# 生成lds中的符号行。
for line in lines:
line = line.strip()
addr, type, sym = line.split(" ")
if type in "tT":
offset = sym_offset(addr, base)
result+="\t%s = %s; /* orig: 0x%s */\n" % (sym, offset, addr)
# 生成需要的脚本
template="""
OUTPUT_FORMAT("elf64-x86-64", "elf64-x86-64", "elf64-x86-64")
OUTPUT_ARCH(i386:x86-64)
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
ef英语哪个好 EF英孚英语培训怎么样? 英孚英语好不好 EF英孚教育到底好不好 大佬们,麦芒7和荣耀10那个值得入手?2500以下的机子还有啥好推荐的么... 介绍几款2500元以前的手机 像素一定要高 其他的不做要求 近期想入手一部安卓手机,价格2200到2500左右…买HTC desire Z还是 三星... 笔记本忘记开机密码怎么办急死了 笔记本电脑屏幕开机锁忘记密码 怎么办?急死了 华硕笔记本电脑开机密码忘记了怎样找回?系统是Windows 7旗舰版... 梦见爱人不远千里看望自己‘梦见另外一个女人也对自己好’最后爱人准备离开,自己抱着她极力挽留她醒来还 请教tomcat5.5配置MagickImage的问题 梦见死去的婆婆抱棺材板朵在哭? 除了酷狗,还有没有可以免费下载歌曲的软件? 京华彩钢板质量排第几位 Magick++中的 Image.h中的 image 类型可以接受什么样的图片呢?jpg类型的可以吗? 周公解梦梦到死去的婆婆在我面前流泪 机房装修用彩钢板 一下三个品牌 :林德纳 格满林 阿姆斯壮 哪个好? 荣耀Magic3至臻版拍照体验:多主摄“底”气十足 梦见在远方的爱人回来了,已两年没回来了,这个梦有什么暗示吗? 梦见死去的婆婆哭,打电话找人伺候 机房彩钢板品牌、规格以及安装工艺 西安彩钢板厂家推荐 图片图像处理软件 有哪些?最好20种以上! 梦见爱恋一个人,在一起见面了我的梦是什么意思? perl Image::magick将postscript格式转换为jpg格式 彩钢板的厂家国内哪家好 一张120×90的图片,程序等比压缩生成的新图片怎样不失真? 彩钢夹芯板品牌较好的有哪些 php 图像处理库除了GD库开有什么~呢? 机房彩钢板厂家盘点 什么彩钢板最好? 彩钢专用漆哪个牌子好? 梦见抱着己过世的婆婆我痛哭 梦见死去的婆婆活着哭泣对说话 岩棉彩钢板价格是多少 型号有哪些 看看我的梦 梦见想死去的婆婆我哭的很伤心然后婆婆魂魄就出来了? 就我们已知的彩钢板型号有哪些呢? 我想知道机房用的彩钢板一般用哪种的,有什么品牌的? 彩钢板都有哪些型号?如果我想做个屋面用什么型号呢? 梦见去世的婆婆在哭 什么牌子的岩棉夹芯板好 死神的试练1.2的攻略 死神的试炼的的秘籍 死神的试练攻略 死神的试练2的完全攻略 死神的试练2正式版攻略 死神的试练 狩矢 死神的试炼2秘籍是什么?