您好,我目前正在探索一些东西,并想扩展我对编程知识的了解。
我在不同的地方见过类似0x555的东西,我只需要知道它的用途是什么?

我使用Python程序分析文件,得到了此信息,如果有人也解释这意味着什么,那将很好。

# Found start marker of lengthh 7
# Found start marker at offset: 0x42413
# Found end marker of length 7
# Found end marker at offset: 0x57413
# Found decoy document end marker at offset: 0x5CC1A
# Grabbing 0x15000 bytes for payload decryption...
        .. decrypting payload
# Grabbing 0x5800 bytes for decoy decryption..
        .. decrypting decoy
# Processing complete.


顺便说一句,有人可以给我提供一个很好的教程或电子书,以了解有关Shellcodes,xor,bytes等的更多信息吗?
感恩节

最佳答案

这些就是数字,就像您熟悉的:1、2、3等。

但是它们用十六进制而不是十进制表示。在十进制中,我们有10个数字:0、1、2、3、4、5、6、7、8和9。在十六进制中,我们有16个数字。前10个与前面列出的相同。六个新的是A,B,C,D,E和F。

这意味着以十进制表示的是... 8、9、10、11 ...,而以十六进制表示的是... 8、9,A,B...。而以十六进制表示是。 ..E,F,10、11,当用小数表示时,我们可以算出... 14、15、16、17 ...

使用十六进制的原因是因为16与10不同,它是2的幂,而计算机喜欢2的幂。

这样想吧。计算机以二进制工作,如果您有四个位(二进制数字),您将编写类似1001的内容。很简单。但是,只要使用一个十六进制数字,就可以一次紧凑地写入4位。

原因是从00001111的四位共有16种可能的组合。我们所做的只是将这十六种组合映射到十六进制系统的十六位数字上。因此,十六进制中的0 =二进制中的0,而十六进制中的A =二进制中的1010(十进制= 10)。

这种紧凑性是为什么经常使用十六进制的原因。一个字节(八位)可以用两个十六进制数字表示。由于计算机内存始终以字节或字节的倍数寻址,因此可以使用十六进制轻松表示内存地址。同样,许多与计算有关的量,例如数据量,通常也都是字节的倍数。

0x是前缀,用于指定其后的数字为十六进制。这是必需的,因为某些十六进制数字看起来就像十进制数字,例如32。

您可能会看到的另一个是八进制系统。除了前缀只是单个0以外,上面所有相同的概念都适用。在哪个八进制数中,您可以紧凑地写3位而不是4位。

希望这可以帮助!

09-25 16:28