高级玩家

- 贡献度
- 2
- 金元
- 2482
- 积分
- 256
- 精华
- 0
- 注册时间
- 2012-6-2
|
类型先选2byte,然后在它上面右键选择 Define new custom(Auto Assembler)
把下面的脚本全部覆盖进去然后确定,能看到搜索类型里多了一个2byte_bswap 的反序搜索类型。
以后就可以直接输入看到的数值,修改也可以直接输入想要的数值,脚本会自动完成转换。
alloc(ConvertRoutine,1024)
alloc(ConvertBackRoutine,1024)
alloc(TypeName,256)
alloc(ByteSize,4)
alloc(UsesFloat,1)
alloc(CallMethod,1)
TypeName:
db '2byte_bswap',0
ByteSize:
dd 2
UsesFloat:
db 0
CallMethod:
db 1
ConvertRoutine:
[64-bit]
mov eax,[rcx]
bswap eax
shr eax,10
ret
[/64-bit]
[32-bit]
push ebp
mov ebp,esp
mov eax,[ebp+8]
mov eax,[eax]
bswap eax
shr eax,10
pop ebp
ret
[/32-bit]
ConvertBackRoutine:
[64-bit]
xchg cl,ch
mov [r8],cx
ret
[/64-bit]
[32-bit]
push ebp
mov ebp,esp
push eax
push ebx
mov eax,[ebp+8]
mov ebx,[ebp+10]
xchg al,ah
mov [ebx],ax
pop ebx
pop eax
pop ebp
ret
[/32-bit]
4byte反序类型添加也是同样的方法,先选择4byte,然后右键Define new custome(Auto Assembler)
复制这些进去,确定。
alloc(ConvertRoutine,1024)
alloc(ConvertBackRoutine,1024)
alloc(TypeName,256)
alloc(ByteSize,4)
alloc(UsesFloat,1)
alloc(CallMethod,1)
TypeName:
db '4byte_bswap',0
ByteSize:
dd 4
UsesFloat:
db 0
CallMethod:
db 0
ConvertRoutine:
[64-bit]
mov eax,[rcx]
bswap eax
ret
[/64-bit]
[32-bit]
push ebp
mov ebp,esp
mov eax,[ebp+8]
mov eax,[eax]
bswap eax
pop ebp
ret
[/32-bit]
ConvertBackRoutine:
[64-bit]
bswap ecx
mov [r8],ecx
ret
[/64-bit]
[32-bit]
push ebp
mov ebp,esp
push eax
push ebx
mov eax,[ebp+8]
mov ebx,[ebp+10]
bswap eax
mov [ebx],eax
pop ebx
pop eax
pop ebp
ret
[/32-bit] |
|