内存中的数据格式,非常反直觉。在16位以上的数据中,每16位(两位16进制数)为一组,低位在低地址,高位在高地址。而内存中读取数据的顺序又多是从低位读取到高位。所以会出现如下情况:
16进制数
0x12345678
在计算机从低位到高位的读取方式来看,实际的数据应为
78 56 34 12
这其实在某一种程度上对于Pwn利用是有好处的。就比如,在覆盖地址是,由于计算机写入的顺序为从低地址往高地址写,就导致我们覆盖的时候只需要覆盖低地址,而不需要覆盖高地址。
内存中的数据格式,非常反直觉。在16位以上的数据中,每16位(两位16进制数)为一组,低位在低地址,高位在高地址。而内存中读取数据的顺序又多是从低位读取到高位。所以会出现如下情况:
16进制数
0x12345678
在计算机从低位到高位的读取方式来看,实际的数据应为
78 56 34 12
这其实在某一种程度上对于Pwn利用是有好处的。就比如,在覆盖地址是,由于计算机写入的顺序为从低地址往高地址写,就导致我们覆盖的时候只需要覆盖低地址,而不需要覆盖高地址。