您现在的位置是:首页» windows系统» 零基础逆向学习系统教程,逆向学习笔记

零基础逆向学习系统教程,逆向学习笔记

2024-07-13 05:42:44
本内容由系统网小编为大家分享,Windows系统安装教程、办公系统、软件怎么使用、软件使用教程、办公软件攻略等信息。滴水逆向一:信息以冠状保存在计算机中。为简化演示文稿,计算机以十六进制数字显示二进制数字,八位数二进制数值作为一字节,这是系

本内容由系统网小编为大家分享,Windows系统安装教程、办公系统、软件怎么使用、软件使用教程、办公软件攻略等信息。

滴水逆向

一:

信息以冠状保存在计算机中。为简化演示文稿,计算机以十六进制数字显示二进制数字,八位数二进制数值作为一字节,这是系统操作的基本单位,系统通常使用两个十六进制数字作为字节。

PE 文件结构 : PE 文件结构是用于 Windows 操作的可执行文档的格式。 它指定程序起始位置、 数据存储地点 以及应用程序所在位置 。

十六进制 3c 的十进制转换为 60, 表示60 后的四字节是32位位数信息的起点, 但不是程序函数的起点 。

这是起步地

一个字节(8比特)的八个二进制和一个字(16比特)或两个字(字)(32比特)的十六个字(16比特)或两个字(字)(32比特)是通用计算机单元。

Windows 操作系统的数据存储状态位于顶部, 所有人都看到一个二进制数字序列, 例如 E800, 这在 Windows 中实际上是 00E8 。

PE结构图

二:

​ 逻辑运算:在计算机中所有的运算都是采用逻辑位运算(与、或、异或、非、左移<<)

也可使用逻辑算法加密数据。

数据储存地点:登记册和内存

登记册是存储重现CPU数据的地方。然而,由于CPU主要用于计算,因此,登记册的内存有些有限。但是读取速度很快,因此,CPU将处理的数据或程序往往储存在登记册中。内存相比起寄存器,存储量更大,阅读速度将因此减慢。也没那么贵。

​ 内存

内存单元宽度为8位数,可以存储8位数的二进制值或内存单元格字节。

1 kb 等于 1024 字节 1Mb=1024Kb 1Gb=1024Mb

​ 内存的读写

​ 堆栈:

堆叠的精髓就是记忆 Rears 用于持有临时变量,其中间结果由函数传输。

顶级位置由ESP保存,底级位置由EBP保存。

将数据推到仓库( 回收): 推 0X 12345678, 帕地的流行数据: popp eax。 坑的底部保持不变, 但顶部变化( 垫上的数据结构特性) 。

EIP 注册: CPU 正在运行的地点 。

呼叫指令: 跳过 EIP 指针到目标位置, 并堆叠当前命令的下一行, 在返回当前命令之前协助执行跳跃 。

因为每个命令对应相应的字节的十六进制机器代码, 系统可以根据当前地址加上命令大小来计算下一个命令的位置, 而呼叫可以将其放置在堆叠上 。

三:

为了更好地了解数据变化的过程,油漆堆叠。

突飞猛进之后,首先做的是 推前的材料, 它被保存在现场, 类似于休息。

本地变量存储在堆叠中, 如果不回收, 则会留在堆叠中。 函数是一个本地变量 。

去除的函数创建了两个本地变量, 这两个变量都是通过从0时开始到10时结束的循环在堆叠中保存的, 这样缓冲区就能溢出, [ESP+4] 。

进制-0与1:

进化的精髓是任何符号代表数据,从一个角度看,数据被视为加密。

集中度在二进制和十六进制转换中。 输入的计算要重复检查: 例如, 八进制数字会打印为表格。 因此二加二等于二, 二等于二等于二加二。

数据宽度:

计算机中的数据因硬件限值而限制长度(称为数据宽度),任何宽度大于最大宽度的数据都被销毁。

​ 逻辑运算:CPU进行运算的本质。或:or |;与: and &;异或: xor ^;非:not !;

概括:计算机存储中位数(二进制和十六进制),操作计算机的数量(逻辑)。

通用发件人:

寄存器 编号(二进制) 编号(十进制)
32位 16位 8位
EAX AX AL 000 0
ECX CX CL 001 1
EDX DX DL 010 2
EBX BX BL 011 3
ESP SP AH 100 4
EBP BP CH 101 5
ESI SI DH 110 6
EDI DI BH 111 7

了解记忆结构:

不同数字发送器可以储存不同大小的数据,提高使用效率,以八位数和八位数的低位结束。

必须完成的MOV行动的数量以及源码行动的数量必须满足。启动复制源代码操作到目标操作 。

一. 来源业务包括即时号码、通用发送器、分段发送器和存储器。

二. 行动的目标数目可以是共同登记册、部分登记册或记忆单位。

三. 操作的数量必须是相同的宽度。

四点,无论是源头还是目的地操作 都不能同时作为记忆单位

必须指出,在将数据写入地址时,必须说明书面数据的规模。

​ 数据运算:

​ 逻辑运算:

内存和内存之间的差异 :

登记册设在CPU内,运行迅速,但费用较高。 记忆相当缓慢,但可以以更低的成本做更多的工作。 内存和内存之间没有根本的区别,它们都是数据储存的容器,本该是大型的。 EAX、ECX、EDX、EBX、ESP、EBP、ESI和EDI是登记册中最常用的。 女 女 女 女 女 女 女 女 女 女 女 女 女 女 女 女 现有的记录和档案管理数量巨大。不能给每个记忆单位一个独有的名称 。所以用编号来代替,计算机处理器为32或64位元。根据许多文献,3z-bit计算机是以发射机的宽度(32比特)命名的。是不准确的,因为登记簿包含的条目远超过32个。要找到地址,处理数字取决于公共汽车的宽度。有32条电线

一般而言,32位元处理器只能接受4GB地址号码,尽管可以用一段地址加一个抵消地址加以扩大。

内存地址—堆栈:

堆叠区域的地址号码是每四个字节一个,在堆叠中,8位数16位数是一个字节,虽然在记忆中,每个地址号码是一个字节。

mov r,m:这相当于将地址发送到登记册。

mov r,dword ptr ds:[r/m]:这是地址分配给登记册的价值。

lea r, dword ptr ds:[r/m]:提供登记簿

阅读和弹出的唯一区别是,顶尖手指是否已经改变。

EFLAG 注册(EFLAGS):

在签名登记簿上,代表另有一份声明,EFL 202(0010010)是一对要检查的。

1. CF(航行旗)输入号:如果计算的最高值产生条目或借项,值为1或0。

这是宽度+1 高度。

100 00 - 010 00 00 = 010 00 00 在这里,CF值为零。

这里是CF100 -1001=11

2. Pf (Paracy Flag):计算结果中使用奇号PE表示整数“ 1” 的奇号。

如果数字“ 1” 是偶数整数, PE 值为 1 或 0 。

3. 辅助承运旗旗

看看有没有四、八 或十六个步骤 一个一分AF 什么都没有

4. ZF(零旗):用零符号ZF表示计算结果是否为零。

如果结果为零,则值为一;否则,值为零。在确定计算结果是否再次为零时使用该标记。

5. 符号SF(标志旗):符号SF用来表示计算结果,这是计算结果中最高的。

6. 溢出表示(流出旗)表示符号数加减少计算的结果是否溢出。

如果计算结果超过可用当前位数表示的范围,则称为溢出,而OF值定为1。 否则,OF值被重置为0。

C-bit 溢出是无符号的溢出。 O-over 是一个溢出的象征性溢出 。

没有迹象,没有迹象,也没有溢出。 没有表示溢出,没有表示溢出。 未签名、未分配、象征性溢出 到处没有单一的符号

ADC 指令:吸引更多人

不能同时使用ADC R/M、R/M/IMM作为内存。

两个给定整数的总和是ADD。除了给定的两个整数数量外,ADC是该项目的一个重要捐助者。C(职等)地位的价值也将包括在内。必须使用ADC命令。这是因为如果整数大于微处理器可以添加的位数,就要分开来加,高字节的结果取决于下方字节是否添加到上方字节。

例如,如果一个八位数的CPU一次只能处理一个字节,

如果我们同时乘以两个16位整数, 我们得到: 00110101 1101010 + 0010100 011

然后乘以1101010乘以01101 011,0011

目前,C国定为1国,其次是ADC+00110101和0010100以及C国(现为1国);

既然是0101010,就是0101010011

扣减扣减:SBB指令

内存格式: SBB R/M、R/M/IMM不能同时使用。

XCHG 指令:数据交换

R/M/IMM不能与XCHG R/M同时是记录和记录管理。

两者的通信数据宽度相同。

MOVS 命令用于在内存和内存之间移动数据 。

它很可能是正方向的一串字符串的重复。

DF(方向旗):一旦完成MOVS,确定ESI和EDI的开发方向。

DF+零减1。增减由变动量决定。

STOS 指令:将 AL/AX/EAX 值保存在[EDI]指定的内存单元中。

DF还确定实施后EDI值的旅行方向。同样的DF+0,减1。

REP 指令:在重复字符串请求时,使用计数保管人(ECX)指令中标明的次数。

JCC:

jmp 指令: 将 EIP 登记册中的指针移动到下一个命令( 移动 IP 指针以便 CPU 执行相应的指令) 。

如果跳跃位置从当前点位置小于128字节, 将会有一个 SHORT 。

JUM 仅修改 EIP 的值; 登记簿和书架均不修改 。

调用命令: 以与 jmp 函数相同的方式更改 EIP 指针 。

调用和 jmp 之间的区别在于调用将地址插入到堆栈中。

返回地址:呼叫命令计算向当前位置命令提供的字节,+当前命令的字节返回地址。

要返回地址,请与呼叫指挥部一起使用后方指挥中心。

退栈操作

将两个动作与 cmp 命令比较 。

cmp R/M,R/M/IMM是命令格式。

实际上,它相当于小组委员会的命令,但减法结构不保留在最初行动数目中。

仅仅减法的结果就影响到零符号位置,当两个操作相同时,0符号位置为1;奇怪的标志同样是1。

除了比较存款人价值的大小外,您还可以比较内存和登记簿的大小。然而,这些数字是一样的。

对两个操作也进行了试验,但只有两个数值进行和运行,结果没有保存,只有适当的标记得到修改。

以下命令格式可供使用:测试R/M、R/M/IMM。

通常用来测试登记簿是否等于0。

​ 一些小指令:

JCC指令 中文含义 英文原意 检查符号位 典型C应用
JZ/JE 如果值为 0, 跳跃; 如果值相等, 跳跃 。 jump if zero;jump if equal ZF=1 if (i == j);if (i == 0);
JNZ/JNE 如果不是零,跳,跳,跳,跳,跳,跳,跳,跳,跳,跳,跳,跳,跳,跳,跳,跳,跳,跳,跳,跳,跳,跳,跳,跳,跳,跳,跳,跳,跳,跳,跳,跳,跳,跳,跳,跳,跳,跳,跳,跳,跳,跳,跳 jump if not zero;jump if not equal ZF=0 if (i != j);if (i != 0);
JS 若为负则跳转 jump if sign SF=1 if (i < 0);
JNS 若为正则跳转 jump if not sign SF=0 if (i > 0);
JP/JPE 如果一个发生的次数是偶数,跳跃。 jump if Parity (Even) PF=1 (null)
JNP/JPO 如果一个人来的数字是奇数, 抓住机会。 jump if not parity (odd) PF=0 (null)
JO 若溢出则跳转 jump if overflow OF=1 (null)
JNO 若无溢出则跳转 jump if not overflow OF=0 (null)
JC/JB/JNAE 如果位数插入, 跳; 如果在下面, 跳; 如果不高于等数, 跳 jump if carry;jump if below;jump if not above equal CF=1 if (i < j);
JNC/JNB/JAE 如果没有进入,就跳;没有更低的,就跳;高于或等于,就跳; jump if not carry;jump if not below;jump if above equal CF=0 if (i >= j);
JBE/JNA 如果低于等值,跳跃;如果不高,跳跃。 jump if below equal;jump if not above ZF=1或CF=1 if (i <= j);
JNBE/JA 如果不低于等值,跳跃;如果更多,跳跃。 jump if not below equal;jump if above ZF=0或CF=0 if (i > j);
JL/JNGE 如果它小于或等于,跳跃;如果它大于或等于,跳跃。 jump if less;jump if not greater equal SF != OF if (si < sj);
JNL/JGE 如果不是少于,跳跃;如果大于或等于,跳跃; jump if not less;jump if greater equal SF = OF if (si >= sj);
JLE/JNG 如果它小于或等于,跳跃;如果它不大于,跳跃。 jump if less equal;jump if not greater 或ZF=1 离开或ZF=1 if (si <= sj);
JNLE/JG 如果它不小于或等于,跳跃;如果它更大,跳跃。 jump if not less equal;jump if greater ZF=0和SF=0F if(si>sj)

堆栈图:

堆栈图:

ctrl+g: 转到输入的目标地址 F2:当选择地址时,按 F2 键以建立断点。 F8: 跳过呼叫命令( 单步) 调试 F7:一步调试,而不是跳过调用命令(逐步)

堆栈图分析步骤:

第1步:操作前堆叠地点通过观察登记册确定(ESP、EBP、EIP)。步骤2:一步一步地调试,观察屋顶和地板的变化,确定缩进或出口是否有价值。第三步是重复第一步和第二步。

函数:计算机的函数,这是计划的一部分或者,作为次级程序,它还为固定计算功能提供了一个出入境点。所谓的入口,是函数所具备的一组参数。我们可以从这扇门进去用子程序替换函数的参数值。供计算机处理,所谓出口,是函数计算的结果,也称为返回值在计算机求得之后,回到申请表上 窗口堆叠 :1. 先进和逆向; 2. 延伸至下地址堆叠平衡:窗口堆叠,是一块普通的内存,除其他外,它主要用于储存临时数据和参数。想象一下窗口中的堆叠是一个公开的书箱, 与一个人使用一个盒子的功能。函数在执行的时候,会用到这个书箱,里面有很多数据 里面有很多数据然而,当你的书用光了, 记住把它们带走。否则会乱的,也就是说,你放进去几本书,我们要带几本书一起走这个就是堆栈平衡.

XTw.com.Cn系统网专业应用软件下载教程,免费windows10系统,win11,办公软件,OA办公系统,OA软件,办公自动化软件,开源系统,移动办公软件等信息,解决一体化的办公方案。

免责声明:本文中引用的各种信息及资料(包括但不限于文字、数据、图表及超链接等)均来源于该信息及资料的相关主体(包括但不限于公司、媒体、协会等机构)的官方网站或公开发表的信息。内容仅供参考使用,不准确地方联系删除处理!

联系邮箱:773537036@qq.com