Stage 222222 —— ****拆除“二进制炸弹”程序
简介
一、文件
bomb.c:代码框架,bomb主程序即main函数,没有细节。
bomb: bomb的可执行程序。linux下的可执行程序,需要0或1个命令行参数。
二、bomb.c文件
L34’'
FILE *infile; --------------- 变量:“从外部文件输入到终端”
L35’'
argc,argv 用命令行编译程序时有用。
主函数main中变量(int argc,char *argv[ ])的含义
argc: 整数,用来统计运行程序时送给main函数的命令行参数的个数
argv[ ]: 指针数组,用来存放指向字符串参数的指针,每一个元素指向一个参数
即:argv 的元素个数是argc,存放指向每一个参数的指针
argv[0] 指向程序运行的全路径名(包括路径 eg:“F:/VC/Ex1/Debug/Ex1.exe”)
argv[1] 指向在DOS命令行中执行程序名后的第一个字符串
argv[2] 指向执行程序名后的第二个字符串
…
argv[argc]为NULL。
L43’'
大致看懂了。
三、工具:objdump命令
objdump命令是Linux下的反汇编目标文件或者可执行文件的命令
实例:
1)显示文件头信息
objdump -f test
2)显示Section Header信息
objdump -h test
3)显示全部Header信息
objdump -x test
4)显示全部Header信息,并显示对应的十六进制文件代码
objdump -s test
5)输出目标文件的符号表
objdump -t obj
6)输出目标文件的所有段概述
objdump -h obj
7)反汇编test中的需要执行指令的那些section
objdump -d test
8)反汇编test中的所有section
objdump -D test
9)反汇编出源码(指定section)
objdump -Slj .text obj
10)对任意二进制文件进行反汇编
objdump -D -b binary -m i386 a.bin
11)将bomb的汇编代码写入asm.txt中:
objdump –d bomb > asm.txt
【更多:】
https://www.aliyun.com/jiaocheng/104464.html
https://blog.****.net/beyondioi/article/details/7796414
(哈哈哈哈哈。
四、工具:gdb调试器
GDB是GNU开源组织发布的一个强大的UNIX下的程序调试工具,GDB主要可帮助工程师完成下面4个方面的功能:
启动程序,可以按照工程师自定义的要求随心所欲的运行程序。
让被调试的程序在工程师指定的断点处停住,断点可以是条件表达式。
当程序被停住时,可以检查此时程序中所发生的事,并追索上文。
动态地改变程序的执行环境。
实例:
注1:需要调试的程序在编译的时候要加 -g 选项,程序才能进行调试
注2:以下所有命令都可以简写首字母,例:info break ==> i b 除特殊声明外
#gdb program // 进入调试模式
#list file.c:fanction // 显示file.c文件中的fanction函数
#break file.c:fanction // 在file.c文件中的fanction函数处打一个断点
#break file.c:100 // 在file.c文件中的第100行打一个断点
#info break // 查看所有断点
#delete break num // 删除断点号为 num 的断点
#run // 开始运行程序
#bt // 显示程序的栈
#watch expr // 监视 expr 变量,(每次运行到变量处就会打印变量的值)(watch 不能简写)
#print expr // 打印处 expr 变量的值,(当前运行函数中的变量)
#c // 继续运行程序
#next // 单步运行
#quit // 退出调试
https://blog.****.net/yvhqbat/article/details/51393313
https://www.cnblogs.com/mingcaoyouxin/p/4225619.html
拆炸弹
一、Phase1:字符串比较
read_line(); ------输入一个字符串,如果正确,这个phase的bomb就会被解除。