ANTICHAT Forum
HOME FORUMS MEMBERS RECENT POSTS LOG IN  
Баннер 1   Баннер 2
НОВЫЕ ТОРГОВАЯ НОВОСТИ
loading...
Скрыть
Вернуться   ANTICHAT > ПРОГРАММИРОВАНИЕ > С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby
   
 
 
Опции темы Поиск в этой теме Опции просмотра

  #11  
Старый 02.06.2020, 18:09
#Rin
Познавший АНТИЧАТ
Регистрация: 09.08.2015
Сообщений: 1,213
С нами: 5663255

Репутация: 183


По умолчанию

Цитата:
Сообщение от RECEIVER  

ауе, почему при возврате оригинального wndproc крашит игру?)

C++:





Код:
if
(
reason
==
DLL_PROCESS_DETACH
)
{
SetWindowLongA
(
gl
.
gameWindow
,
GWL_WNDPROC
,
reinterpret_cast

(
gl
.
originalWndProc
)
)
;
}


вызывается в DllMain
Любой плагин может установить до и после тебя свой WndProc.

Выгружая свой плагин, адрес на твой WndProc, который другие плагины считают за "оригинальный" становится невалидным, из-за чего они вызывают функцию которой уже нету в памяти. Вернув таким образом якобы "оригинальный" WndProc который тебе известен, ты ломаешь цепочку обработчиков.

Избежать этого можно оставив в памяти функцию пустышку для продолжения цепочки вызовов.
 
Ответить с цитированием
 



Предыдущая тема Следующая тема

Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT ™ © 2001- Antichat Kft.