大家帮帮忙?看看这是什么意思?
lamue 2007-05-30 10:32:26 #include "stdafx.h"
#include <Windows.h>
unsigned char BitSwapAsm[7] =
{
0x48, 0x8B, 0xC1, // mov rax, rcx
0x48, 0x0F, 0xC8, // bswap rax
0xC3 // retn
};
__int64 (*BitSwap)(__int64 Value) = (__int64 (*)(__int64)) (ULONG_PTR) BitSwapAsm;
int _tmain(int argc, _TCHAR* argv[])
{
//
// I have to change the page protection, otherwise the code would crash
//
DWORD dwOldProtect;
VirtualProtect(BitSwap, sizeof (BitSwapAsm), PAGE_EXECUTE_READWRITE, &dwOldProtect);
printf_s("%p\n", BitSwap(0xDDCCBBAA));
getchar();
}
BitSwapAsm是一个字符数组,BitSwap是一个 有一个__int64型的参数且返回值为__int64型的函数的指针。该指针指向BitSwapAsm字符数组。从它的注释来看其中BitSwap主要完成字符串的交换,但是不知道是怎么完成的?
0x48, 0x8B, 0xC1, // mov rax, rcx
0x48, 0x0F, 0xC8, // bswap rax
0xC3 // retn
这样就完成了?