“0x15000 字节”是什么意思,这个 0x123 是什么类型的编码?

What does this mean like "0x15000 bytes", what type of encoding is this 0x123?

你好,我目前正在探索一些东西,想扩展我对编程知识的了解。 我在不同的地方看到过这样的东西 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.

顺便说一下,有人可以为我提供一本很好的教程或电子书来学习更多关于 shellcode、异或、字节等的知识吗? 谢谢

这些都是数字,就像您所熟悉的: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 位。

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

这种紧凑性是十六进制被如此频繁使用的原因。一个字节(八位)可以用两个十六进制数字表示。由于计算机内存总是按字节或字节的倍数寻址,因此内存地址很容易用十六进制表示。同样,许多与计算相关的量,例如数据量,通常也是字节的倍数。

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

您可能会看到的另一个是八进制系统。上述所有相同的概念都适用,只是前缀只是一个 0。还有哪个八进制,可以紧凑的写3位而不是4位。

希望对您有所帮助!