首页 > 其他分享 >csapp二进制炸弹实验个人总结

csapp二进制炸弹实验个人总结

时间:2023-07-13 18:23:07浏览次数:41  
标签:... csapp 0x8 函数 二进制 理解 机器码 炸弹

2023/7/13完成了这个实验,算是我的第一次逆向实战,对我来说很有挑战性。总结如下:

1.对于汇编的熟练度,尤其是“层次”问题,mov 0x8(%rsp),%rax和lea 0x8(%rsp),%rax并不同;要注意某一个值本身是“地址”还是“数值”

2.理解机器码工作原理后,拓宽思路,经验+寻找新的方法

3.看待问题的视角。针对一连串的繁杂机器码,如果能够理解其用意,使用自然语言描述出来,就会变得十分清晰,比如“这一段代码频繁跳转,其实是个双层循环”,“这一段代码的意义就是通过...计算地址偏移并且存储”...熟悉特定的数据结构,比如链表的存储方式,一定的画图也有助于激发思路。

4.对于“条件”的理解感知,当理解某一部分代码完成那些操作之后,自己心里要清楚那些部分自己可以比较有把握的不用再考虑了,或者只有几个寄存器的值有影响,记住即可。在某个函数内部分析时如果找不到某个寄存器的值,有可能是作为输入参数,比如%rdi;如果用到标准函数,可以查找相关资料,理解参数顺序。(本次实践对sscanf的机器码实现机理有了更深入的理解)

5.大胆猜测作者的用意,比如从函数的名字上read_six_numbers猜测可能是将输入的字符性质数字转换为真正的二进制数字,通过string_length和strings_not_equal的名字和调用关系大致猜测函数作用和其参数意义。

标签:...,csapp,0x8,函数,二进制,理解,机器码,炸弹
From: https://www.cnblogs.com/dawnash1111/p/17551761.html

相关文章

  • 如何实现十六进制数转化为二进制 python的具体操作步骤
    十六进制数转化为二进制在计算机科学中,数字可以用不同的进制表示。其中,十六进制(hexadecimal)是一种非常常见的进制。在十六进制中,除了0-9的十个数字,还有A-F的六个字母,分别代表了十进制的10-15。而二进制(binary)是计算机中最常用的进制,因为计算机中的所有数据都是以二进制的形......
  • 二进制密码锁
     题解:1#include<bits/stdc++.h>2usingnamespacestd;34intmain()5{6stringinit,result;//要操作的,预期的7stringtemp;//记录当前状态8cin>>init>>result;9intn=init.length(),res=31;//最多加3......
  • CSAPP DataLab学习笔记
    1.bitXor/**bitXor-x^yusingonly~and&*Example:bitXor(4,5)=1*Legalops:~&*Maxops:14*Rating:1*/intbitXor(intx,inty){return2;}思路将异或的真值表写出来,再用&|~表示,最后化简代码intbitXor(intx,inty)......
  • HJ62 查找输入整数二进制中1的个数
    1.题目读题HJ62 查找输入整数二进制中1的个数 考查点 这道题的考查点可能有以下几个方面:二进制的基本知识,如二进制的表示、转换、运算等,以及负数的补码表示方法。位运算的技巧,如如何利用与、或、异或、左移、右移等操作来实现一些常见的功能,如判断某一位是否为1、清......
  • MySQL5.6.x二进制包升级到5.7.x
    #!/bin/bash#mysql数据库用户名myuser="root"#mysql数据库密码mypwd="123456"#数据库备份路径dbbakdir="/data/dbbak"#数据库目录datadir="/data/mysql"#系统mysql用户sysmysqluser="mysql"#系统mysql组sysmysqlgroup="mysql"#my......
  • CSAPP-Data Lab 思路记录
    >gcc-O1-Wall-m32-lm-obtestbits.cbtest.cdecl.ctests.c>Infileincludedfrombtest.c:16:0:>/usr/include/stdio.h:27:10:fatalerror:bits/libc-header-start.h:Nosuchfileordirectory>#include<bits/libc-header-start.h>>......
  • DAS二进制专项赛
    终究还是re✌更上流一些。卸载所有的前面555,又是一个月无所事事,还当了一回fw。爬回来学习一下专项赛的题目。笔者不是个铸币,比赛的时候一点也不会。easy-noteglibc-2.23的题目,UAF很明显,直接打_free_hook就行。当然打__malloc_hook,realloc调整栈帧也可。蒻纸笔者在比赛的时候......
  • 整数二进制奇数,偶数位的打印
    #include<stdio.h>voidPrint(intn){ inti=0; printf("偶数位:"); for(i=30;i>=0;i-=2) { printf("%d",(n>>i)&1); } printf("\n"); printf("奇数位:"); for(i=31;i>......
  • [渗透测试]—7.4 逆向工程和二进制破解技术
    在本章节中,我们将深入学习逆向工程和二进制破解技术。我们将尽量详细、通俗易懂地讲解,并提供尽可能多的实例。1.1逆向工程概述逆向工程是指从软件的二进制文件中提取信息,以了解其工作原理和设计思路的过程。逆向工程的主要目的是对软件进行分析、调试、修改等操作,以实现特定目......
  • 二进制转BCD8421码
    8421码是BCD码中最常用的编码,使用4位二进制表示十进制数0~9,即0000~1001。例如十进制数12转二进制为1100,转化为8421码为00010010(十进制为18),两个编码相减得6。二进制转8421的规则是≥10就加6,否则不加6进行校正。\[\begin{array}{r}10010B\\-1100B\\\hline0110B\end{array}......