计算机系统二
文章平均质量分 82
CodeReaper
这个作者很懒,什么都没留下…
展开
-
Chapter 2 信息的表示和处理
文章目录整数表示整数编码无符号数有符号数有符号数和无符号数的转换整数表示整数编码无符号数相当于只有正数,用U来表达二进制位模式转换为无符号数:B2U(X)=∑i=0w−1xi⋅2iB 2 U(X)=\sum_{i=0}^{w-1} x_{i} \cdot 2^{i}B2U(X)=∑i=0w−1xi⋅2i即按照权值将二进制数转换为十进制数无符号数转换为二进制位模式:U2Bw(x) = Bw(x),即将x由当前进制转换为二进制位模式,如U2B4(12)=1100。有符号数若符号位为0则原创 2021-06-27 23:11:49 · 171 阅读 · 1 评论 -
计系二实验四,缓冲区溢出攻击实验
文章目录一、实验内容二、实验过程步骤1 返回到smoke()步骤2 返回到fizz()并准备相应参数步骤3 返回到bang()且修改global_value一、实验内容本实验设计为一个黑客利用缓冲区溢出技术进行攻击的游戏。我们仅给黑客(同学)提供一个二进制可执行文件bufbomb和部分函数的C代码,不提供每个关卡的源代码。程序运行中有3个关卡,每个关卡需要用户输入正确的缓冲区内容,否则无法通过关卡!要求同学查看各关卡的要求,运用GDB调试工具和objdump反汇编工具,通过分析汇编代码和相应的栈帧结构原创 2021-06-04 12:38:05 · 4443 阅读 · 0 评论 -
使用gdb对可执行文件进行汇编指令级单步调试
先在gdb中使用下面的语句使其能打印出下一条要执行的汇编代码:(gdb) set disassemble-next-line on然后先是程序停在一个断点上,之后可以使用si和ni进行单步调试,其中si相当于step into,而ni相当于step over。下面是一个具体的例子:可以看出,使用ni指令可以按照每条汇编指令进行单步调试,而使用si也是同理。参考博客:https://blog.csdn.net/pjy19960808/article/details/51500830?locat原创 2021-06-03 18:24:05 · 5408 阅读 · 0 评论 -
计系二实验三,bomb_64反汇编实验
目录bomb_64反汇编实验一、实验介绍bomb_64反汇编实验一、实验介绍本实验设计为一个黑客拆解二进制炸弹的游戏。我们仅给黑客(同学)提供一个二进制可执行文件bomb_64和主函数所在的源程序bomb.c,不提供每个关卡的源代码。程序运行中有6个关卡(6个phase),每个关卡需要用户输入正确的字符串或数字才能通关,否则会引爆炸弹(打印出一条错误信息,并导致评分下降)!要求同学运用GDB调试工具和objdump反汇编工具,通过分析汇编代码,找到在每个phase程序段中,引导程序跳转到“explo原创 2021-04-17 23:46:50 · 1298 阅读 · 2 评论 -
Chapter 3 程序的机器级表示(下)
Chapter 3下目录Chapter 3 程序的机器级表示(下)一、控制代码1.条件码2.跳转Chapter 3 程序的机器级表示(下)一、控制代码1.条件码影响标志位的指令总结:算术和逻辑指令(见右图)会设置标志位;leal/leaq指令是计算地址,不影响标志位;逻辑操作,CF=0和OF=0;移位操作以最后一个移出的位设置CF,OF=0;INC/DEC设置OF和ZF,不设置CFCMP类似于SUB,但比较指令只设置标志TEST指令对标志位影响和AND相同规律:如果需要比较原创 2021-04-16 00:50:41 · 200 阅读 · 0 评论 -
Chapter 3 程序的机器级表示(上)
Chapter 3 目录Chapter 3 程序的机器级表示数据的存储(基本寄存器)数据的访问练习题数据传送指令算术与逻辑操作Chapter 3 程序的机器级表示数据的存储(基本寄存器)32位机器64位机器规律:寄存器名为三位时,①开头为r 代表8字节(64位),②开头为e 代表4字节(32位)当寄存器名为两位时,③后缀为l 代表1字节(8位),④其余都为2字节(16位)rdi和rsi分别是函数调用时保存的第一个和第二个参数rax通常保存返回值数据的访问源操作数:立即数、寄原创 2021-04-15 23:33:01 · 128 阅读 · 0 评论