教学网站模板下载企业网站设计北京

diannao/2026/1/18 22:10:35/文章来源:
教学网站模板下载,企业网站设计北京,咨询公司管理制度,网站建设费用无形资产如何摊销参考资料 Guide to Faster, Less Frustrating Debugging 什么情况下会使用gbd 需要逆向ELF文件时(掌握gdb的使用#xff0c;是二进制安全的基本功)开发程序时#xff0c;程序执行结果不符合预期 动态调试ELF文件可以使用另外一种方法#xff1a;IDA的远程linux动态调试。个… 参考资料 Guide to Faster, Less Frustrating Debugging 什么情况下会使用gbd 需要逆向ELF文件时(掌握gdb的使用是二进制安全的基本功)开发程序时程序执行结果不符合预期 动态调试ELF文件可以使用另外一种方法IDA的远程linux动态调试。个人觉得使用ida调试更为方便因为ida是图形化界面那么可以使用鼠标交互比如通过鼠标光标确定打断点的位置等等。而且IDA具有反编译功能对初学者较为友好。 为什么使用gbd呢 调试程序时我们可能习惯使用printf , cout函数直接将变量打印在控制台上。如果用printf作为调试的主要方式好处是这种做法确实方便但以下缺点也会大大影响调试的进度(以及个人心情) printf一个变量后发现那个变量的值是正确的需要继续printf其他变量大量的printf会将编写的代码变得惨不忍睹在测试完后还需要将编写的printf删除掉如果我们要检查一个结构体变量有没有符合预期使用printf将这个变量的所有属性打印出来十分繁琐。(虽然我更喜欢用IDE自带的调试功能观察2333) 所以我个人认为在编写程序时可以适当使用printf作为调试的手段但如果太过依赖它反而会事倍功半 接下来说一下gbd的好处 需要掌握的命令少和markdown一样熟练使用了就能转换成自己的肌肉记忆。具有一个调试器应该有的功能如可以显示运行程序的寄存器运行时栈堆支持反汇编等等 (虽然使用体验确实比不上支持图形化的调试器2333) 常用命令 知乎GDB使用详解 介绍一下打断点的方式 b functionName: 在函数的入口处添加断点b line: 在文件的第line行添加断点b *adderess 在某一个地址添加断点 解下来以csapp的第二个lab为例讲解pwngdb的使用 这篇博客假设大家已经有汇编语言基础因此我不会花很多篇幅在汇编语句讲解上 我之所以使用pwngdb是因为之前做ctf pwn题目时配置好了。pwngdb比起原版的gdb新增了一些独有的指令尤其是在堆的方面。 csapp lab的网页 https://csapp.cs.cmu.edu/3e/labs.html 分析整个程序的流程如下 输入disassemble main观察main函数反汇编的结果 0x0000000000400e2d 141: call 0x400b10 putsplt0x0000000000400e32 146: call 0x40149e read_line0x0000000000400e37 151: mov rdi,rax0x0000000000400e3a 154: call 0x400ee0 phase_10x0000000000400e3f 159: call 0x4015c4 phase_defused0x0000000000400e44 164: mov edi,0x4023a80x0000000000400e49 169: call 0x400b10 putsplt0x0000000000400e4e 174: call 0x40149e read_line0x0000000000400e53 179: mov rdi,rax0x0000000000400e56 182: call 0x400efc phase_20x0000000000400e5b 187: call 0x4015c4 phase_defused0x0000000000400e60 192: mov edi,0x4022ed0x0000000000400e65 197: call 0x400b10 putsplt0x0000000000400e6a 202: call 0x40149e read_line0x0000000000400e6f 207: mov rdi,rax0x0000000000400e72 210: call 0x400f43 phase_30x0000000000400e77 215: call 0x4015c4 phase_defused0x0000000000400e7c 220: mov edi,0x40230b0x0000000000400e81 225: call 0x400b10 putsplt0x0000000000400e86 230: call 0x40149e read_line0x0000000000400e8b 235: mov rdi,rax0x0000000000400e8e 238: call 0x40100c phase_40x0000000000400e93 243: call 0x4015c4 phase_defused0x0000000000400e98 248: mov edi,0x4023d80x0000000000400e9d 253: call 0x400b10 putsplt0x0000000000400ea2 258: call 0x40149e read_line0x0000000000400ea7 263: mov rdi,rax0x0000000000400eaa 266: call 0x401062 phase_50x0000000000400eaf 271: call 0x4015c4 phase_defused0x0000000000400eb4 276: mov edi,0x40231a0x0000000000400eb9 281: call 0x400b10 putsplt0x0000000000400ebe 286: call 0x40149e read_line0x0000000000400ec3 291: mov rdi,rax0x0000000000400ec6 294: call 0x4010f4 phase_60x0000000000400ecb 299: call 0x4015c4 phase_defused一般来说函数的返回值会放在eax寄存器中。所以以下的代码 0x0000000000400e32 146: call 0x40149e read_line0x0000000000400e37 151: mov rdi,rax0x0000000000400e3a 154: call 0x400ee0 phase_1read_line读取的字符串先放在rax寄存器中再经过mov rdi,rax 放在rdi寄存器中。 接下来分析第一关卡 b phase_1打下断点r运行程序。接着输入一串字符串为了表示方便我称其为input。 按下s 程序单步运行结果如下图。 在上面的截图中程序被蓝色的横线分为了三个区域 最上面的是寄存器区域用于显示各个寄存器的值。寄存器有很多作用比如数据可以存储在寄存器里数据也可以通过寄存器在函数之间传递。高级语言中的if , while等等功能都可以通过汇编语言实现这需要使用到寄存器比如将数据与寄存器中的值进行比较如果小于就进行跳转命令等等。中间区域是反汇编区域这是程序的运行代码。绿色箭头表示程序当前位置。最下面的区域是栈区。栈区存放函数的参数返回地址局部变量等等内容 如果使用gdb按下s的时候可能不会跳出这么多内容 可以使用以下命令打印寄存器的值 info registers或者是 i r要打印栈的内容和栈帧信息可以执行以下命令 info frame或者是 i f继续单步执行。 这段代码告诉我们传入strings_not_equal的参数是什么 一个参数是我们输入的input字符串 。 另一个参数是程序自带的字符串Border relations with Canada have never been better. 解释一下rdi: 0x003780 - 0x333231 0x003780 表示rdi寄存器指向内存地址 0x333231 表示这段地址里存放的值 123 是0x333231 ascii码对应的字符 按下s ,分析strings_not_equal函数的代码 0x401338 strings_not_equal push r120x40133a strings_not_equal2 push rbp0x40133b strings_not_equal3 push rbx0x40133c strings_not_equal4 mov rbx, rdi0x40133f strings_not_equal7 mov rbp, rsi0x401342 strings_not_equal10 call string_length string_length0x401347 strings_not_equal15 mov r12d, eax0x40134a strings_not_equal18 mov rdi, rbp0x40134d strings_not_equal21 call string_length string_length0x401352 strings_not_equal26 mov edx, 10x401357 strings_not_equal31 cmp r12d, eax这段代码调用string_length函数用于取得字符串的长度。接着使用cmp r12d , eax比较两个传入字符串的长度。如果长度一样那么第一关就过了。 接下来验证我们的想法 分别在0x401342 和0x40134d添加临时断点tb *0x401342 tb *0x40134d。然后按下c 运行到断点。按下n让函数执行完毕观察rax 寄存器的值 第一个string_length函数执行完毕的寄存器页面 第二个string_lenth函数执行完毕的寄存器页面 按下r重新运行。输入字符串Border relations with Canada have never been better. 这样关卡1就通过了。 使用gdb是熟能生巧的过程只要多练就能掌握这个软件的使用 照例meme时间 当导师发现你没有在规定时间内完成任务时 be like↓ 摸了一周鱼的我 be like↓ 不多说了要赶紧完成java web的管理系统和qt的文件编辑器了

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/90559.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

网站正在建设中页面 英文诚信网站认证必需做吗

说明此时有两个客户端在连接此数据库&#xff0c;此时不能删除数据库。 如果确定要强制删除此数据库&#xff0c;那么执行如下命令&#xff1a; SELECT pg_terminate_backend(pg_stat_activity.pid) FROM pg_stat_activity WHERE datname‘VolteAna3G’ AND pid<>pg_ba…

扫码进入网站如何做做视频比较好的理财网站

文章目录 项目介绍主要功能截图:部分代码展示设计总结项目获取方式🍅 作者主页:超级无敌暴龙战士塔塔开 🍅 简介:Java领域优质创作者🏆、 简历模板、学习资料、面试题库【关注我,都给你】 🍅文末获取源码联系🍅 项目介绍 基于SpringBoot的校园生活服务平台,java…

网站备案 价格建行个人账户查询

目录 [LitCTF 2023]PHP是世界上最好的语言&#xff01;&#xff01; [LitCTF 2023]Vim yyds [羊城杯 2020]easycon [LitCTF 2023]PHP是世界上最好的语言&#xff01;&#xff01; 无参&#xff0c;根据题目提示看看php能否执行——返回1执行成功 用system()函数调用、执行ls …

怎么制作网站店铺wordpress照片加水印

为了方便日常运维写的一段简单脚本&#xff0c;用于集中获取服务器操作系统、CPU、内存使用、负载、硬盘使用、网络信息。 脚本比较简单&#xff0c;就不解释了&#xff0c;有兴趣的朋友请自行查看。 #!/bin/bash##Name:system_info#Ver:1.0#Author:lykyl###程序说明:#获取服务…

安全邮箱注册网站网站建设高校

花园管家是做什么的 一、工作内容职责&#xff1a; 1.管理花园内的活动和工作&#xff0c;协调各方资源&#xff0c;确保活动的顺利进行&#xff1b; 2.提供优质的客户服务和接待工作&#xff0c;解决客户问题&#xff0c;处理投诉&#xff0c;提高客户满意度&#xff1b; …

南山区网站建设公司网站详细报价

接口测试背景和必要性 接口测试是测试系统组件间接口&#xff08;API&#xff09;的一种测试&#xff0c;主要用于检测内部与外部系统、内部子系统之间的交互质量&#xff0c;其测试重点是检查数据交换、传递的准确性&#xff0c;控制和交互管理过程&#xff0c;以及系统间相互…

电商后台管理网站模板哪里查询网站备案

直方图 cv2.calcHist(images,channels,mask,histSize,ranges) images: 原图像图像格式为 uint8 或 float32。当传入函数时应 用中括号 [] 括来例如[img]channels: 同样用中括号括来它会告函数我们统幅图 像的直方图。如果入图像是灰度图它的值就是 [0]如果是彩色图像 的传入的…

网站外链分析工具wordpress迁hexo

序 本篇是杂谈以及准备工作&#xff08;此处应无掌声&#xff09; 暂时不管iOS&#xff08;因为开发hello world都要年费&#xff09; 软件&#xff1a; Visual Studio 2019&#xff08;含Android SDK和NDK编译器等&#xff09; OpenCV 这是一个女仆级的系列文章&#xf…

经营范围 网站建设广州 环保 凡人网站建设

文章目录 1 orm连接Mysql1.1 安装第三方模块1.2 ORM1.2.1、创建数据库1.2.2、Django连接数据库1.2.3、django操作表1.2.4、创建和修改表结构1.2.5、增删改查1.2.5.1 增加数据1.2.5.2 删除数据1.2.5.3 获取数据1.2.5.4 修改数据 1 orm连接Mysql Django为了使操作数据库更加简单…

搜索建站网如何做好网络营销推广

转载自 Java调用exe阻塞 今天遇到了个奇怪的问题&#xff0c;用VC写了个小程序&#xff0c;编译成exe文件&#xff0c;然后用Java去调&#xff0c;居然卡住不运行了。如果双击这个exe程序&#xff0c;单独让它运行&#xff0c;是可以的&#xff0c;那么为什么用Java调用就不好…

企业需求做网站在哪儿交易wordpress水滴

随着科技的进步&#xff0c;单反相机成为了摄影爱好者和专业摄影师的必备工具。而在选择单反相机存储介质时&#xff0c;CF卡和SD卡成为了两种常见的选择。它们各有优缺点&#xff0c;适用于不同的摄影需求和场景。本文将深入探讨单反相机使用SD卡还是CF卡的问题&#xff0c;并…

建设网站的作用及意义百度推广登录

免责声明&#xff1a;内容仅供学习参考&#xff0c;请合法利用知识&#xff0c;禁止进行违法犯罪活动&#xff01; 内容参考于&#xff1a; 易锦网校会员专享课 上一个内容&#xff1a;8.WEB渗透测试-Linux基础知识-Linux基础操作&#xff08;二&#xff09;-CSDN博客 用户管…

普通网站和门户网站的区别网页线上开发制作

假设你要创建一个新的Git存储库并进行一些基本操作。以下是一个简单的入门实例&#xff1a; 1. **初始化仓库&#xff1a;** bash git init 2. **添加文件&#xff1a;** 创建一个新文件&#xff0c;比如 example.txt&#xff0c;并将其添加到暂存区&#xff1a…

企业网络推广网站建设网站开发源程序

文章目录 Collection接口继承树Collection接口及方法判断删除其它 Iterator(迭代器)接口迭代器的执行原理 foreach循环Collection子接口1&#xff1a;ListList接口特点List接口方法List接口主要实现类&#xff1a;ArrayListList的实现类之二&#xff1a;LinkedListList的实现类…

美食网站开发与研究 论文如何升级wordpress

日本最大的证券公司之一野村证券首席数字官马修汉普森&#xff0c;在Quant Conference上发表讲话&#xff1a;“用Excel的人越来越少&#xff0c;大家都在码Python代码。”甚至直接说&#xff1a;“Python已经取代了Excel。”实际上&#xff0c;Python的应用领域极为广泛&#…

快速仿站网站建设怎么建设域名和网站

一、文件系统概述 1.1、先来聊一聊“磁盘” 在讲解文件系统之前&#xff0c;我觉得有必要先聊一下“磁盘”&#xff0c;因为我觉得如果弄懂了磁盘的存储原理&#xff0c;大家可能更容易理解文件系统是怎么管理数据的&#xff0c;并且理解计算机是怎么将磁盘抽象到文件系统的。…

工程承包去哪个网站做一个小程序的步骤

在这篇简短的文章中&#xff0c;我将重点介绍与在任务流中创建新记录的一种非常常见的方法有关的一个小陷阱。 让我们考虑一个简单的任务流示例&#xff0c;该任务流创建一个新的VO行&#xff0c;如果用户单击“确定”按钮&#xff0c;则在页面片段上显示该行并提交事务&#…

企业网站营销的优缺点及案例网站上传图片不成功

序列动态规划 一、意义二、例题1. 最长上升子序列2. 合唱队形&#xff08;加强版&#xff09;3. 公共子序列4. 编辑距离 一、意义 动态规划&#xff08;dynamic programming&#xff09;&#xff0c;将一个目标大问题“大事化小&#xff0c;小事化了”&#xff0c;分成很多的子…

怎样建立自己的网站房地产销售头像

比如有两个标签&#xff1a; 按 Ctrl o 会直接跳转到上一次打开的文件&#xff0c;这样可能不够直观&#xff0c;可以用 :ls 进行查看buff&#xff0c;如下&#xff1a; 可以看到 %a 的是当前正在编辑的 # 是按 Ctrl o 会跳转到的 当然也可以用 这种命令进行跳转&#xff1…