理解程序运行.docVIP

  • 45
  • 0
  • 约1.69千字
  • 约 9页
  • 2019-12-01 发布于天津
  • 举报
北京理工大学网络信息安全课程 理解程序运行 使用 本文档以通关方式撰写,完成一关进入下一关,请将需要填写的内容写在空白处。 概述 这个文档用来帮助大家理解程序运行原理。 GATE 1 基础环境 请安装32位CentOS 操作系统,安装版本6.6 安装后以root用户执行: yum install gcc yum install gdb 静态二进制分析 使用linux命令 date. 启动控制台窗口,输入如下命令。 date date --date=”4 hours ago” date --date=”2 years ago” +%Y%m%d date 程序在Linux操作系统的什么位置?你用什么指令找到的该位置? (这里是“空白处”) 简要介绍一下objdump 的功能. 在控制台输入如下指令,用找到的地址替换指令中的{loc},简要解释你看到的内容。 objdump -d {loc}/date | less GATE 2 输入如下指令,比较该指令与之前指令在输出上的区别,解释-xtrds 的功能. objdump -xtrds {loc}/date | less 在控制台输入如下命令,将输出复制到空白处. objdump -xtrds {loc}/date | grep bugs GATE 3 将 date 文件拷贝到你自己的目录中,用vim打开文件(也可以用其他工具),输入如下命令: :%s/bugs/dogs/g #注:进入vim后,使用shift+ :,然后输入本行内容(首个:不需要输入) 该命令将date文件中的bugs字符串替换成dogs字符串,保存后退出( shift + : 然后输入wq),然后输入如下命令 ./date –help 解释你看到的输出。 课后熟悉使用vim工具(或其他编辑工具,建议使用十六进制编辑器)对该程序进行其他更有意思的修改,请将课后完成的内容填写在下面的空白处。(此处为必须完成的内容) (必做内容) GATE 4 另外一个有用工具是readelf. ELF是Linux系统的目标文件格式,相当于windows系统中的PE格式。依次执行如下命令,在空白处依次解释各命令的基本功能: readelf -l {loc}/date readelf -S {loc}/date readelf -W -s {loc}/date readelf -x 16 {loc}/date GATE 5 使用 gdb 在命令行输入如下命令: gdb (gdb) help 利用这个help命令了解gdb的使用,例如:help running。 请把你做过的练习(只保留命令)填写在空白处。 (必做内容) GATE 6 分析程序 在控制台输入如下命令: gdb date (gdb) run (gdb) quit 再输入如下命令,体会该工具的作用: gdb date (gdb) set args “--help” (gdb) break __libc_start_main (gdb) run (gdb) frame (gdb) bt (gdb) info frame (gdb) info registers (gdb) x /16xw $esp 探索更多寄存器内容。对于代码和堆栈位置,你有何发现? GATE 7 尝试如下内容: gdb date (gdb) set args “--help” (gdb) maintenance info sections 记录.rodata 段的起始地址 (gdb) break __libc_start_main (gdb) run (gdb) x/20s {.rodata address} 记录字符串 “GNU coreutils”的真实地址, {start} (gdb) set *{start} = 0x554c4200 (gdb) c 上述代码做了些什么?你能否做类似修改证明你理解上述指令含义?请将你的解释和可能的修改写在下面。 GATE 8 下课了。

文档评论(0)

1亿VIP精品文档

相关文档