Перейти к содержанию

Другие варианты кода


Рекомендуемые сообщения

Какие есть другие варианты этого кода, не уверен что сделал все правильно:)

[ENABLE]
//code from here to '[DISABLE]' will be used to enable the cheat
alloc(newmem,2048) //2kb should be enough
alloc(ThisIsMy,100)
label(returnhere)
label(originalcode)
label(exit)

ThisIsMy:
mov [esp+28],(float)0
fcomp dword ptr [esp+28]
fnstsw ax
jmp returnhere

newmem: //this is allocated memory, you have read,write,execute access
//place your code here

originalcode:
push eax
mov eax,[gta3.exe+4F609C]
cmp esi,eax
pop eax
je ThisIsMy
fcomp dword ptr [esp+28]
fnstsw ax

exit:
jmp returnhere

"gta3.exe"+151C05:
jmp newmem
nop
returnhere:




[DISABLE]
//code from here till the end of the code will be used to disable the cheat
dealloc(newmem)
"gta3.exe"+151C05:
fcomp dword ptr [esp+28]
fnstsw ax
//Alt: db D8 5C 24 28 DF E0

Ссылка на комментарий
Поделиться на другие сайты

dealloc(newmem) - уничтожение выделенной памяти нужно делать после восстановления оригинальных инструкций, ибо есть вероятность вылета, если, как у тебя написано, делать это до восстановления оригинального кода. Далее, для ThisIsMy необязательно выделять память. Достаточно прописать эту метку в выделенной памяти newmem.

Ссылка на комментарий
Поделиться на другие сайты

Я думаю, что так лучше:


[ENABLE]
alloc(newmem,2048)
label(originalcode)
label(returnhere)

newmem:
cmp esi,[gta3.exe+4F609C]
jne originalcode

mov [esp+28],(float)0
originalcode:
fcomp dword ptr [esp+28]
fnstsw ax
jmp returnhere

"gta3.exe"+151C05:
jmp newmem
nop
returnhere:

[DISABLE]
"gta3.exe"+151C05:
fcomp dword ptr [esp+28]
fnstsw ax

dealloc(newmem)

Ссылка на комментарий
Поделиться на другие сайты

×
×
  • Создать...

Важная информация

Находясь на нашем сайте, Вы автоматически соглашаетесь соблюдать наши Условия использования.