当前位置: 首页 > news >正文

企业网站建设湖南岚鸿庞各庄网站建设公司

企业网站建设湖南岚鸿,庞各庄网站建设公司,网站开发人员需要去做原型吗,90设计是免费下载吗#x1f4cb; 前言 ​#x1f308;个人主页#xff1a;Sarapines Programmer#x1f525; 系列专栏#xff1a;《斯坦福大学之CSAPP》⏰诗赋清音#xff1a;桃花灼灼春风暖#xff0c;心随乐曲扬徐徐。 苦尽甘来梦未阑#xff0c;岁月长河任舟游。 ​ #x1f389;欢迎… 前言 ​个人主页Sarapines Programmer 系列专栏《斯坦福大学之CSAPP》⏰诗赋清音桃花灼灼春风暖心随乐曲扬徐徐。 苦尽甘来梦未阑岁月长河任舟游。 ​  欢迎大家关注点赞收藏⭐️留言  作者留言 欢迎来到我的【CSAPP】炸弹实验室这里是探索计算机系统世界的秘境我的学习笔记博客为你打开CSAPP的炸弹之门。在这里我不仅分享计算机系统的基础知识和高级技巧还有着涉猎实用技术和项目经验的爆炸药水。无论你是初学者还是计算机大师这个实验室会为你施展出神秘的学习魔法帮助你在CSAPP的炸弹领域中踏上一场惊险之旅。准备好了吗跟着我让我们一起解除那些迷人的炸弹代码揭示计算机系统的神奇面纱 目录 前言 1. CSAPP与Bomb简介 1.1 CSAPP 1.2 Bomb 2. bomb 2.1 实验环境 2.2 实验过程 2.3 phase_1 2.4 实验结果 2.5 实验体会 总结  1. CSAPP与Bomb简介 1.1 CSAPP 《CSAPP》是指计算机系统基础课程的经典教材《Computer Systems: A Programmers Perspective》由Randal E. Bryant和David R. OHallaron编写。该书的主要目标是帮助深入理解计算机系统的工作原理包括硬件和软件的相互关系其涵盖了计算机体系结构、汇编语言、操作系统、计算机网络等主题旨在培养学生系统级编程和分析的能力。 1.2 Bomb Bomb实验 是与CSAPP教材相关的一项编程实验。它是一种反汇编和逆向工程任务旨在教授如何分析和解决复杂的程序问题。Bomb实验的目标是解开一系列的炸弹每个炸弹都有不同的解锁方法需要分析程序的汇编代码理解其工作原理并找到正确的输入来解除炸弹。这个实验教授了计算机系统的底层知识包括汇编语言和程序执行的原理。 CSAPP BombLab实验解决源码亲测有效 2. bomb 2.1 实验环境 VMware Workstation虚拟机环境下的Ubuntu 64位。 2.2 实验过程 实验准备阶段首先需要使用ubuntu联网环境跳转到链接下载实验所需的bomblabBomblab源文件 下载bomblab压缩包并输入 tar –xvf bomb.tar 进行解压缩进入该目录所有文件如下所示 在终端输入 sudo apt-get install gdb 安装调试器。基本用法参考下图 实验过程阶段 “Binary bombs”是一个可在Linux系统上运行的C程序它由6个不同的阶段phase1~phase6组成。在每个阶段程序会要求输入一个特定的字符串。如果输入的字符串符合程序的预期输入那么这个阶段的炸弹就会被“解除”否则炸弹就会“爆炸”并输出“BOOM!!!”的提示信息。实验的目的是尽可能多地解除这些炸弹的阶段。 每个炸弹阶段考察了机器级语言程序的一个不同方面难度逐级递增 * 阶段1字符串比较 * 阶段2循环 * 阶段3条件/分支 * 阶段4递归调用和栈 * 阶段5指针 * 阶段6链表/指针/结构 在炸弹拆除任务中还存在一个隐藏阶段。然而只有在第四个阶段解决后添加特定的字符串后该隐藏阶段才会出现。为了完成任务需要使用gdb调试器和objdump反汇编炸弹的可执行文件然后单步跟踪每个阶段的机器代码理解每个汇编语言的行为或作用。这将帮助“推断”出拆除炸弹所需的目标字符串。为了调试可以在每个阶段的开始代码前和引爆炸弹的函数前设置断点。 在终端输入 objdump -d bomb bomb.asm 得到bomb的反汇编文件bomb.asm如下所示。 2.3 phase_1 phase_1是一个二进制炸弹需要输入一个字符串作为密码才能解除炸弹否则炸弹会爆炸。 进入反汇编文件bomb.asm vim bomb.asm 在未插入处输入下列指令以查找phase_1的位置。 /phase_1 分析反汇编代码的phase_1部分内容如下 1.Sub $0x8,%rsp含义是把将栈顶指针%rsp向下移动8个字节相当于在栈顶分配8个字节的空间。这通常用于在程序中为局部变量或者函数参数分配空间。由于栈是向下生长的这条指令会将栈顶指针减去8使得栈顶指针指向的位置向下移动8个字节。 2.mov $0x402400,%esi将立即数0x402400移动到寄存器%esi中。在汇编语言中%esi是通用寄存器之一用于存储指针或者数据,这条指令的作用是将0x402400这个数值存储到%esi寄存器中以便在后续的指令中使用。 3.callq 401338 strings_not_equal将strings_not_equal函数调用的返回地址压入栈中并跳转到strings_not_equal函数的起始地址开始执行。在strings_not_equal函数执行完成后执行流程会返回到该指令之后的下一条指令继续执行程序。 4.test %eax,%eax将寄存器%eax中的值与自身进行按位与运算并更新标志寄存器的状态该指令执行的结果会影响标志寄存器中的零标志ZF和符号标志SF的状态这两个标志是CPU用于判断运算结果是否为零或者是否为负数的标志。 如果%eax的值为零则ZF标志将被设置为1否则将设置为0如果%eax的值为负数则SF标志将被设置为1否则将设置为0。 test %eax, %eax经常用于条件分支的判断例如在判断%eax是否为0的时候可以使用test %eax, %eax指令来判断。如果ZF标志被设置为1则说明%eax等于0否则%eax不等于0。 5.je 400ef7 phase_10x17根据前面cmp指令的比较结果如果两个字符串相等那么跳转到phase_1 0x17地址处继续执行。如果两个字符串不相等则不会跳转继续执行下一条指令。在该程序中phase_1 0x17地址处是程序正常执行的下一条指令也就是当输入的字符串正确时程序会继续执行下去否则会引爆炸弹程序结束。 6.callq  40143a explode_bomb:调用explode_bomb函数发生爆炸。 7.add $0x8,%rsp: 将栈指针寄存器 %rsp 的值加上常量值 0x8以释放栈上的8个字节空间。在程序执行过程中栈指针寄存器 %rsp 会随着程序的运行而不断变化当需要释放栈上的空间时就需要执行这条指令来调整栈指针的值以释放相应的空间。 8.retq: 从函数中返回。 分析发现phase_1函数调用了函数strings_not_equal。在该函数被调用之前程序将用户输入的字符串作为第一个参数传递给了strings_not_equal函数。这个字符串是用户在运行程序时输入的它将作为密码来解除炸弹。这个字符串保存在%eax寄存器中因此可以推断程序会将用户输入的字符串作为第一个参数传递给strings_not_equal函数。 查看strings_not_equal函数的实现该函数会将两个字符串进行比较并返回比较结果。在反汇编代码中可以看到调用strcmp函数的汇编指令。strcmp函数返回0表示两个字符串相等否则它们不相等。因此可以得出结论strings_not_equal函数返回一个非零值表示两个字符串不相等返回0表示两个字符串相等。 根据汇编代码中的操作可以发现password字符串保存在了内存地址0x402400处需要将该地址中的字符串作为比较的第二个参数传递给strings_not_equal函数故可以得出当比较结果为0时程序不会引爆炸弹只需要输入password字符串即可解除炸弹。 打开终端输入 gdb bomb 在gdb输入 print (char*)0x402400 结果返回得到密钥“Border relations with Canada have never been better.”。 在终端输入 ./bomb 填入phase_1返回的密钥 Border relations with Canada have never been better. 结果显示phase_1通关。 综上所述解决phase_1的过程是分析反汇编代码找到password字符串的位置并将该字符串与输入的字符串进行比较。如果比较结果为0则炸弹解除否则炸弹会爆炸。 该循环根据输入数将链表中对应的第输入数个结点的地址复制到 0x20(%rsp) 开始的栈中 2.4 实验结果 以上代码均存储在bomb_idea.txt文件中每行代表对应的关卡各阶段密钥如下所示 在终端输入 ./bomb result.txt 显示全部通关。 2.5 实验体会 挑战解密阶段 在CSAPP的BombLab实验中我迎接了解密阶段Phase_1的挑战。通过逆向工程和深入分析程序逻辑我成功解开了这个阶段的谜题。这一过程锻炼了我的逻辑思维和逆向分析能力。 实践与应用 实验过程中我将理论知识与实际应用相结合。掌握了汇编语言和程序设计的基本原理后我能够灵活应用这些知识通过程序攻击的手段成功完成解密任务深刻理解了理论知识在实践中的价值。 启发与收获 解密Phase_1不仅是一次实验更是一次深度思考和学术启发的过程。通过这个实验我不仅获得了对计算机系统底层原理的更深层次理解同时也培养了解决问题的实际技能为将来的学术和职业发展奠定了坚实基础。 总结  计算机系统的世界如同一座未被揭示奥秘的古老迷宫引领你勇敢踏入计算机科学的神秘领域。CSAPP的Bomblab实验便是这场独特的学习冒险从基本概念到底层实现逐步揭示更深层次的计算机系统内核、汇编语言和数据结构的奥秘。 渴望挑战计算机系统中的安全学习路径和掌握底层系统编程的技术不妨点击下方链接一同探讨更多计算机科学的奇迹吧。我们推出引领趋势的 计算机科学专栏《斯坦福大学之CSAPP》旨在深度探索计算机系统中安全编程技术的实际应用和创新。
http://www.zqtcl.cn/news/209703/

相关文章:

  • 极速网站建设定制价格微信公众号运营助手
  • .net制作网站开发教程在线修图编辑器
  • 哪些网站可以做详情页聊城高新区建设局网站
  • 湖南网站优化代运营山东建设厅证件查询网址
  • 以百度云做网站空间浙江外贸网站建设
  • 南通网站建设推广专家wordpress 信息流 主题
  • 网站培训机构有哪些大学生做企业网站
  • 网站培训班有哪些课程做的好的大学生旅行有哪些网站好
  • 昌江县住房和城乡建设局网站佛山建设网站制作
  • 做网站 图片 文件夹 放哪儿北京模板网站建设
  • 网站制作公司哪家正规注册工程公司名称大全
  • 佛山微信网站建设哪家好做电商讲师课程的网站
  • 泰州城乡建设网站深圳logo设计公司哪家好
  • 东阳网站建设yw81wordpress登录注册页面梅花
  • 网站备案 厦门福州企业网站开发
  • 全国中小企业网站域名注册服务机构
  • 微信网站怎么做下载附件wordpress 代码执行
  • 5050众筹网站开发福州餐饮网站建设
  • 北京国家建设部网站网站备案需要去哪里
  • 廊坊哪里能够做网站网站改版影响
  • 比较好的源码网站手机网站支付如何制作
  • 深圳做网站哪个公司好重庆工程造价信息2021
  • 做电商宠物带哪个网站最好最近一周的重大新闻
  • 做网站难度李沧网站建设电话
  • 六安建设网站网站图片最大尺寸是多少
  • 手机建网站步骤软件优速网站建设
  • 导购网站如何做免费推广用wordpress开发网站模板
  • 建立网站 英语wordpress字体加载
  • 株洲网站建设和制作wordpress 瑞课教育
  • 网站开发培训什么淘宝客网站备案