GTA Builder Форум

GTA San Andreas => Программирование => Тема начата: mike43842 от Февраль 23, 2014, 06:55:39 pm

Название: проблемка с плагином
Отправлено: mike43842 от Февраль 23, 2014, 06:55:39 pm
Всем привет, я написал маленький плагин отменяющий вызов читов в gta sa, но вот я хотел узнать насчет такой штуки:
Я глянул вот этот урок - http://gtabuilder.ru/zamena-peremennyx-v-gta-vice-city/ (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(); ?
Название: Re: проблемка с плагином
Отправлено: Sektor от Февраль 23, 2014, 07:28:24 pm
.text:00438516 048 D8 1D 80 7C 68 00                                               fcomp   fNull_1
Как оно вообще не вылетело?
Название: Re: проблемка с плагином
Отправлено: mike43842 от Февраль 23, 2014, 07:32:05 pm
Sektor, я про gta sa пишу. А ты кинул строку из базы vc.
там вот что:
.text:00438517 02C                 jz      short loc_438530 ; Jump if Zero (ZF=1)
т.е. через reinterpret_cast меняется команда jz на 2 nop.
Название: Re: проблемка с плагином
Отправлено: Sektor от Февраль 23, 2014, 07:41:49 pm
а VirtualProtect - точно не забыл, изменить атрибуты памяти для записи?
Название: Re: проблемка с плагином
Отправлено: mike43842 от Февраль 23, 2014, 08:01:18 pm
Нет, этого не писал, а разве это относится к той проблема которая у меня? Функция то работает, только когда написан таймер.
Название: Re: проблемка с плагином
Отправлено: Sektor от Февраль 23, 2014, 08:39:23 pm
Цитировать
Нет, этого не писал, а разве это относится к той проблема которая у меня? Функция то работает, только когда написан таймер.
Если функция работает, при таймере, значит доступ для чтения/записи уже изначально открыт. Но тут мне кажется, только одно когда запуск произошел, сперва ваши нопы прописались, а затем уже выделились команды из exe sa. С такой проблемой еще не сталкивался, но нужно будет по узнавать до точности.