Здравствуйте, wantus, Вы писали:
W>Если бинарник слинкован, скажем, с psapi.dll, то кладется кастом psapi.dll в фолдер с бинарником и в результате в процесс загружается эта DLL, а не её системная копия из %WinDir%\System32. Эта левая DLL получает контроль в своем DllMain до того как вызывается entry point бинарника, патчит чего надо, в памяти, и превед. Понятно, что есть детали и всякие нюансы, но на пальцах где-то так.
Иногда даже класть ничего не надо, делается launcher с remote DLL injection, который стартует процесс сразу на паузе, injects thread который грузит нужную DLL, DLL отрабатывает и выгружается, после чего главному потоку проги делается resume.
Мне как то было лень искать баг в старых Казаках который приводит к частым падениям в 3440x1440 — внутри кода рендерера у них иногда случается деление на ноль.
Разбираться почему так случается было лень, так что быстро набросал хотфикс, который вот так вот грузится и потом на лету чинит плохие значения
... << RSDN@Home 1.3.110 alpha 5 rev. 62>>
Здравствуйте, Евгений Музыченко, Вы писали:
ЕМ>Ему ж надо выпустить вариант, работающий у любого пользователя.
Да в общем то не обязательно.
... << RSDN@Home 1.3.110 alpha 5 rev. 62>>