Гость KoBRaAndrey Опубликовано 18 июля, 2011 Поделиться Опубликовано 18 июля, 2011 Какие есть другие варианты этого кода, не уверен что сделал все правильно[ENABLE]//code from here to '[DISABLE]' will be used to enable the cheatalloc(newmem,2048) //2kb should be enoughalloc(ThisIsMy,100)label(returnhere)label(originalcode)label(exit)ThisIsMy:mov [esp+28],(float)0fcomp dword ptr [esp+28]fnstsw axjmp returnherenewmem: //this is allocated memory, you have read,write,execute access//place your code hereoriginalcode:push eaxmov eax,[gta3.exe+4F609C]cmp esi,eaxpop eaxje ThisIsMyfcomp dword ptr [esp+28]fnstsw axexit:jmp returnhere"gta3.exe"+151C05:jmp newmemnopreturnhere:[DISABLE]//code from here till the end of the code will be used to disable the cheatdealloc(newmem)"gta3.exe"+151C05:fcomp dword ptr [esp+28]fnstsw ax//Alt: db D8 5C 24 28 DF E0 Ссылка на комментарий Поделиться на другие сайты Поделиться
Xipho Опубликовано 18 июля, 2011 Поделиться Опубликовано 18 июля, 2011 dealloc(newmem) - уничтожение выделенной памяти нужно делать после восстановления оригинальных инструкций, ибо есть вероятность вылета, если, как у тебя написано, делать это до восстановления оригинального кода. Далее, для ThisIsMy необязательно выделять память. Достаточно прописать эту метку в выделенной памяти newmem. Ссылка на комментарий Поделиться на другие сайты Поделиться
MasterGH Опубликовано 18 июля, 2011 Поделиться Опубликовано 18 июля, 2011 Я думаю, что так лучше:[ENABLE] alloc(newmem,2048) label(originalcode) label(returnhere) newmem: cmp esi,[gta3.exe+4F609C] jne originalcode mov [esp+28],(float)0originalcode: 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) Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения