大端序:内存地址低位存储数据的高位、内存地址高位存储数据的低位
小端序:内存地址高位存储数据的高位、内存地址低位存储数据的低位
采用大端序保存多字节数据非常直观,它常用于大型UNIX服务器的RISC系列的CPU中。此外,网络协议中也经常采用大端序方式。了解这些,对从事x86系列应用程序的开发人员以及代码逆向分析人员具有非常重要的意义,因为通过网络传输应用程序使用数据时,往往都需要修改字节序。
代码
#include "windows.h"
BYTE b = 0x12;
WORD w = 0x1234;
DWORD dw = 0x12345678;
char str[] = "abcde";
int main(int argc, char *argv[])
{
BYTE lb = b;
WORD lw = w;
DWORD ldw = dw;
char *lstr = str;
return 0;
}
直接goto到401000 main()
函数处
全局变量b、W、dw、str的地址分别为413880、413888、413884、41388c。下面通过OllyDbg的数据窗口来分别查看它们所在的内存区域
可以发现变量w的数据采用小段存储