2021-04-06 字节 xor加密 汇编指令举例 堆栈

本文介绍了字节XOR加密原理,强调了加密的可逆性,并探讨了32位与64位计算机的内存地址限制。接着,讲解了汇编语言中的mov指令,包括读写内存值及地址的方法,以及堆栈的工作机制,特别是ESP和EBP寄存器的作用。最后,提到了在逆向工程中如何避免使用push和pop,以及REP指令在存储操作中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

字节 xor加密

1个字节 0~FF 即0~255 即0~11111111

原文件 xor 密钥 = 加密文件

加密文件再次 xor 密钥 = 原文件

32位计算机的内存地址: 0~FF FF FF FF

              (FF FF FF FF +1) /1024 /1024/1024 = 4 (GB) 所以32位机的内存容量是4GB   XP系统内存就是4G 最大寻址宽度

64位计算机的内存地址:0~FF FF FF FF FF FF FF FF

 

汇编指令举例

mov eax, dword ptr ds:[0x123abc]

dword 双字 即4字节 0~ FF FF FF FF

ptr 表示是一个地址

ds 表示此地址的内容是一个数据

[0x123abc]自己写地址练习时有一个小技巧,照着ESP 附近的写不会越界

这句话的意思是把 0x1323abc里的值 赋给eax

以上是读的过程

以下是写

mov dword ptr ds:[123abc],87654321

将87654321写入 内存123abc中

以下是把地址读入,而不是把地址内容读入

lea ecx.dword ptr ds:[0x123abc]

 

以下两种方法是等价的

方法1       mov eax, dword ptr ds:[0x123abc]

方法2       mov ecx, 0x123abc

                mov eax, dword ptr ds:[ecx]

 在逆向时 我们更多的时候看到的是方法2 而不是方法1直接从数字地址中读取

 

堆栈 就是一块内存,存储临时变量

栈顶 ESP 栈底 EBP

堆栈对于程序员来说是透明的,对于逆向来讲却是关键的

push和pop只会影响ESP不会影响EBP

代码注入时 经常用mov等变形方式代替push pop,以避开push pop这两个关键字

 

REP 重复操作 (STOS 将eax的值存储到EDI指定的内存单元中)

mov eax,12345678

mov ecx,2         ecx决定了rep重复的次数

lea edi,dword ptr ss:[esp]  将edi定位到栈顶

rep stos dword ptr es:[edi]       stos将会执行两次 并且每执行完一次, edi会自动+4或者-4 取决于D flag位(direction)

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值