BUUCTF逆向题

第一题

解压缩文件后放到IDA即可

第二题

先解压缩放到IDA里面并查找字符串

查看伪代码

 

第三题

 查看代码

waitpid(pid, &stat_loc, 0);
else
for ( i = 0; i <= strlen(&flag); ++i )
if ( *(&flag + i)=='i' l| *(&flag+ i)=='r')
*(&flag +i)= '1';
printf("input the flag:");
isoc99_scanf("%20s", s2);
if ( Istrcmp(&flag, s2) )
return puts("this is the right flag!");
else
return puts("wrong flag!");

flag{hack1ng_fo1_fun}

 字
字是表示计算机自然数据单位的术语,在某个特定计算机中,字是其用来一次性处理事务的一个固定长度的位( bit )组,在现代计算机中,一个字等于两个字节( Byte )等于8位( bit )。
字长
1.机器字长,是指 CPU 一次能处理数据的位数,通常与 CPU 的寄存器位数有关。
2.指令字长,计算机指令字的位数。指令字长取决于从操作码的长度、操作数地址的长度和操作数地址的个数。不同的指令的字长是不同的。
3.存储字长,是一个存储单元存储一串二进制代码(存储字),这串二进制代码的位数称为存储字长。4.数据字长:计算机数据存储所占用的位数。
通常早期计算机:存储字长=指令字长=数据字长。故访问一次便可取一条指令或一个数据,随着计算机应用范围的不断扩大,三者可能各不相同,但它们必须是字节的整数倍。
端序
大端:数据的高字节储存在内存的低地址中,低字节储存在内存的高地址中。
小端:数据的低字节储存在内存的低地址中,高字节储存在内存的高地址中。
寄存器
寄存器是中央处理器内的组成部份。它跟 CPU 有关。寄存器是有限存贮容量的高速存贮部件,它们可用来暂存指令、数据和位址。在中央处理器的控制部件中,包含的寄存器有指令寄存器( IR )和程序计数器( PC )。在中央处理器的算术及逻辑部件中,包含的寄存器有累加器( ACC )。

堆内存则是用于分配程序中动态数据结构的内存空间,它的生命周期不由程序的函数调用栈管理,因此堆空间通常会被程序员直接管理。

栈是一种后进先出( LIFO )的数据结构,在计算机中具有重要的作用。程序在运行时,会将栈用来存储函数的调用栈、内存的分配操作、表达式求值的临时变量以及与程序中的控制流相关的数据。每当程序执行函数调用、变量声明或其他类型的操作时,都会在栈中添加一个栈帧( Stack Frame ),也即是称为堆栈帧,用于存储函数的执行环境。
栈是一种高效的内存结构,用于存放基础数据类型和引用类型的变量,大大简化内存的管理,提高了程序的执行效率。
堆空间则为程序提供了极为灵活的空间分配和管理手段,既可以手动管理,也可以交由垃圾回收机制自动管理,带来了很大的方便。

  • 8
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值