GTA San Andreas > Программирование

проблемка с плагином

(1/2) > >>

mike43842:
Всем привет, я написал маленький плагин отменяющий вызов читов в gta sa, но вот я хотел узнать насчет такой штуки:
Я глянул вот этот урок - http://gtabuilder.ru/zamena-peremennyx-v-gta-vice-city/ там функция вызывается:
case DLL_PROCESS_ATTACH:
        Replace_varIconSize();
        break;
Я решил написать также у себя т.е. просто вот так:

void cheat() {
   *reinterpret_cast<WORD *>(0x438517) = 0x9090;
};

BOOL APIENTRY DllMain( HMODULE hModule,
                       DWORD  ul_reason_for_call,
                       LPVOID lpReserved
                )
{
   switch (ul_reason_for_call)
   {
   case DLL_PROCESS_ATTACH:
   
      cheat();
     
    break;
   case DLL_THREAD_ATTACH:
   case DLL_THREAD_DETACH:
   case DLL_PROCESS_DETACH:
      break;
   }
   return TRUE;
}
Но вот cheat не вызывается, но если писать вот так в DLL PROCESS_ATTACH:
SetTimer(0,0, 1, (TIMERPROC)cheat); то все работает, можете объяснить в чем у меня проблема когда я пишу просто cheat(); ?

Sektor:

--- Код: ---.text:00438516 048 D8 1D 80 7C 68 00                                               fcomp   fNull_1
--- Конец кода ---

Как оно вообще не вылетело?

mike43842:
Sektor, я про gta sa пишу. А ты кинул строку из базы vc.
там вот что:
.text:00438517 02C                 jz      short loc_438530 ; Jump if Zero (ZF=1)
т.е. через reinterpret_cast меняется команда jz на 2 nop.

Sektor:
а VirtualProtect - точно не забыл, изменить атрибуты памяти для записи?

mike43842:
Нет, этого не писал, а разве это относится к той проблема которая у меня? Функция то работает, только когда написан таймер.

Навигация

[0] Главная страница сообщений

[#] Следующая страница

Перейти к полной версии