跳至主要内容

小端序

特征

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
//一般出现一个字节向左移动0位时候,基本为小端序

//以0xGame 2025 Week4的一个小部分为例
v10 = &v50;
while (1) {
v11 = inputCopy;
n32 = 0;
v13 = 0;
while (1) {
v14 = inputFirst << n32;
n32 += 8;
++v11;
v13 |= v14;
if (n32 == 32) break;
inputFirst = *v11;
}
inputCopy += 4;
*v10++ = v13;
if (&v56 == inputCopy) break;
inputFirst = *inputCopy;
}

//出现了左移0位,8、32、4等关键词
  • 小端序是以四个字节倒序过来,也就是讲读入的字符转化为一个个32位的整数。
  • 读取的字符在内存中以ACSII码的形式储存,小端序也是讲这些个ACSII码,四个为一组,倒叙过来,组成一个32位整数
1
2
73 6A 6E 66  
s j n f
  • 小端序拼接
  • 0x66 6E 6A 73
  • 32 位整数
  • 0x666E6A73

后面接什么

  • 后面一般会接MD5、部分SHA、TEA/XXTEA加密

解开的脚本

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
import struct

data = [
0x666E6A73,
0x646C736B,
0x726E666E
]

result = b''

for x in data:
result += struct.pack('<I', x) # < = 小端,I = uint32

print(result.decode('ascii'))

关于本文

由 GuQing 撰写,采用 CC BY-NC 4.0 许可协议。

#Note_For_Reverse