{$CLEO}
11@ = 0
05F7: 0@ = label @lbl offset
05DF: write_memory 0x00689A5C size 4 value 0@ virtual_protect 1 //689A5C
05F8: 1@ = var 11@ offset
0@ += 2
05DF: write_memory 0@ size 4 value 1@ virtual_protect 0
while true
wait 0
if
11@ == 1
then
while true
wait 0
if and
$ONMISSION == 0
not Actor.Driving($PLAYER_ACTOR)
then
Break
end
end
05DF: write_memory 0x61D8F7 size 5 value 0x90 virtual_protect 1
05E1: call 0x61D8B0 num_params 1 pop 0 6
05DF: write_memory 0x61D8F7 size 1 value 0xE8 virtual_protect 1
05F5: call_scm_func @setMemOffset 3 memory 0x61D8F8 pointing_to 0x0061A690 virtual_protect 1
11@ = 0
end
end
:lbl
hex
C705 00000000 01000000 // MOV DWORD PTR DS:[00000000], 1
B8 C56B4500 // MOV EAX,00456BC5
FFE0 // JMP EAX
end
{
FUNCTIONS INCLUDED:
- getMemOffset
Type: GET
Description: Get the relative offset of a memory pointing to a specific address.
- setMemOffset
Type: GET
Description: Set a 4-byte relative offset of a memory pointing to a specific address with virtual protection.
}
:getMemOffset
{
Parameters:
Passed:
0@ - memory pointer
1@ - memory to point
Result:
1@ - memory offset
Example:
05F5: call_scm_func @getMemOffset 2 memory 0x0 pointing_to 0x0 store_to 1@
}
0@ += 0x4
000E: 1@ -= 0@
05F6: ret 1 1@
:setMemOffset
{
Parameters:
Passed:
0@ - memory pointer
1@ - memory to point
2@ - virtual protection
Result:
none
Example:
05F5: call_scm_func @setMemOffset 3 memory 0x0 pointing_to 0x0 virtual_protect 0
}
05F5: call_scm_func @getMemOffset 2 memory 0@ pointing_to 1@ store_to 3@
05DF: write_memory 0@ size 4 value 3@ virtual_protect 2@
05F6: ret 0