您好我正在探索一些事情,并希望扩展我对编程内容的了解。
我在不同的地方看过像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,xor,bytes等的知识吗? Thanksi
答案 0 :(得分:1)
这些是数字,就像你熟悉的那样: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的幂。
这样想。计算机以二进制工作,如果你有四位(BINary DIgits),你会写1001
之类的东西。很简单。但是使用一个十六进制数字,您可以一次紧凑地写入4位。
原因是从0000
到1111
有四种位的16种可能组合。我们所做的就是将这16个组合映射到十六进制系统的16位数字上。因此,十六进制中的0 =二进制中的0,而十六进制中的A =二进制中的1010
(十进制中的= 10)。
这种紧凑性是经常使用十六进制的原因。一个字节(8位)可以用两个十六进制数字表示。由于计算机存储器始终按字节或字节的倍数进行寻址,因此可以使用十六进制轻松表示存储器地址。同样,许多与计算相关的数量,例如数据量,通常也是字节的倍数。
0x
是一个前缀,用于指定后面的数字是十六进制的。这是必要的,因为一些十六进制数字看起来就像十进制数字,例如32。
另一个你可能会看到的是八进制系统。除了前缀只是一个0
之外,上述所有相同的概念都适用。哪个八进制,你可以紧凑地写3位而不是4位。
希望这有帮助!