Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- static int ReadInt(lua_State *L)
- // memoryAddress, size, is_signed, virtual_protect
- {
- enum ARGUMENT_ORDER
- {
- ARGUMENT_POINTER = 1,
- ARGUMENT_SIZE,
- ARGUMENT_SIGN,
- ARGUMENT_VIRTUAL_PROTECT,
- };
- Script S(L, 0);
- void* address = (void*)S.GetInt(ARGUMENT_POINTER, false);
- if(address)
- {
- size_t size = S.GetInt(ARGUMENT_SIZE, 0);
- if (S.GetBool(ARGUMENT_VIRTUAL_PROTECT, false))
- UnprotectMemory(address, size);
- signed long int value;
- switch (size)
- {
- default:
- value = *(BYTE*)address;
- break;
- case sizeof(WORD):
- value = *(WORD*)address;
- break;
- case sizeof(DWORD):
- value = *(DWORD*)address;
- }
- if(S.GetBool(ARGUMENT_SIGN, false))
- {
- if(1 << ((size*8)-1) & value)
- value -= 1 << (size*8);
- }
- S.PushInt(value);
- }
- return 1;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement