easyre第七周网安

easyre

将下载好的文件拖入exeinfo中,进行查壳发现是64位系统,且无壳e47e2078b2574c57b8a9c6eb0cce3cf0.png

 

拖入64位ida中,shift+f12检索字符串,用ctrl+f搜索,可以直接看到 flag{this_Is_a_EaSyRe}71d46e3cbd6b4d13a8e0e155832c76d2.pngReverse 1

用exeinfo查看可知为64位

使用IDA64查看exe文件,使用Shift+F12直接查看字符串得到有关信息

双击flag有关信息查看字符串,使用Ctrl+X进入程序框图,再使用Tab查看伪代码并进行分析

双击Str2查看Str2的值,将代码中的ASCII转成字符\n\n将字符o转换成字符0,得到flag。4c1d83df05a541b4ae501f6a8dabb471.pngReverse2

解压得到exe文件使用exeinfope查看到exe为64位。

用ida打开使用Shift+F12查看字符串找到关键信息,进入伪代码部分和flag存储位置

可以看到flag为关键字,并且进行了替换,双击flag进入分析。

可以发现是将‘i’和‘r’替换为‘1’,得到flag,flag{hackling_fol_fun}374f7d777b08479a91e322539d20790f.png

82c5f5107c6c42dfbae4eb09e3fac00a.png 

1b5ba5a24994489ab92bd03635122538.png 

 

字节与端序

1.机器字长,是指CPU一次能处理数据的位数,通常与CPU的寄存器位数有关。

2.指令字长,计算机指令字的位数。指令字长取决于从操作码的长度、操作数地址的长度和操作数地址的个数。不同的指令的字长是不同的。

3.存储字长,是一个存储单元存储一串二进制代码(存储字),这串二进制代码的位数称为存储字长。

4.数据字长:计算机数据存储所占用的位数。

通常早期计算机:存储字长 = 指令字长 = 数据字长。故访问一次便可取一条指令或一个数据,随着计算机应用范围的不断扩大,三者可能各不相同,但它们必须是字节的整数倍。

端序

大端:数据的高字节储存在内存的低地址中,低字节储存在内存的高地址中。小端:数据的低字节储存在内存的低地址中,高字节储存在内存的高地址中。

汇编指令\nadd指令\nadd 寄存器,数据 例:add ax,8\nadd 寄存器,寄存器 例:add ax,bx\nadd 寄存器,内存单元 例:add ax,[0]\nadd 内存单元,寄存器 例:add [0],ax\nsub指令\nsub 寄存器,数据 例:sub ax,8\nsub 寄存器,寄存器 例:sub ax,bx\nsub 寄存器,内存单元 例:sub ax,[0]\nsub 内存单元,寄存器 例:sub [0],ax\nmul乘法指令

两个相乘的数,或者全为8位,或者全为16位;若为8位,一个默认放置于AL中,另一个置于8位寄存器或内存单元中,结果默认放置于AX中;

若为16位,一个默认放置于AX中,另一个置于16位寄存器或内存单元中,结果高位默认置于DX,低位置于AX;

无符号数乘法指令: mul 通用寄存器/内存单元\n有符号数乘法指令: imul 通用寄存器/内存单元\ndiv除法指令

【在除号前面的是被除数,除号后面的是除数。】

除法分为8位和16位的运算,有被除数和除数

除数: 有8位和16位两种,在一个寄存器或内存单元中

被除数: 默认放置在AX或DX和AX中,除数为8位,被除数为16位,默认在AX中放置;

若除数为16位,被除数为32位,在DX和AX中放置,DX存放高16位,AX存放低16位;

结果: 如果除数为8位,则AL存储除法操作的商,AH存储除法操作的余数

如果除数为16位,则AX存储除法操作的商,DX存储除法操作的余数

无符号数除法指令: div 通用寄存器/内存单元\n有符号数除法指令: idiv 通用寄存器/内存单元

inc(自增)(即C语言++)\n只有一个操作数:寄存器或存储单元

对操作数加1(增量)再将结果返回原处,用于计数器和地址指针的调整

push 寄存器:将一个寄存器中的数据入栈

push 段寄存器:将一个段寄存器中的数据入栈

push 内存单元:将一个内存单元处的字入栈

CMP(比较)

cmp相当于是sub指令,不保存结果,仅对相应标志寄存器进行修改。

Test

作用与and指令相似,进行逻辑于运算,但不会保存结果,Test命令的两个操作数不会被改变。运算结果在设置过相关标记位后会被丢弃,仅对标志寄存器【ZF】进行修改

pop 寄存器:用一个寄存器接受出栈的数据。

pop 段寄存器:用一个段寄存器接受出栈的数据

pop 内存单元:出栈,用一个内存字单元接收出栈的数据

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zhangya7

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值