- 1,506
- 471
Я хочу при помощи мемвраппера хукнуть CNetGame::ShutdownForRestart. Прототип "void(__thiscall*)(CNetGame*)", адрес samp+0xA1E0 для R3. Посмотрев через чит энжин этот адрес я увидел, что там уже стоит джамп хук от лаучеровского плагина libcef.asi.
1) Как быть в данной ситуации если я хочу сохранить оба хука? Я не планирую нопать метод, а лишь выполнить другое действие при его вызове
2) Первое что мне приходит в голову это читать из памяти конечный адрес функции в libcef.asi и использовать его для своего хука. Но в зависимости от названия файла моего плагина он может загружаться позже или раньше libcef.asi, а в 2 случаи там ещё не будет джампа с адресом. Мне это не нравится. Ещё рассматривал вариант сразу искать адрес в libcef.asi по сигнатуре так как это файл потенциально может меняться. Но это решение мне тоже кажется не оптимальным. Как правильнее будет сделать? Мне кажется на такие случаи уже придумано оптимальное решение
1) Как быть в данной ситуации если я хочу сохранить оба хука? Я не планирую нопать метод, а лишь выполнить другое действие при его вызове
2) Первое что мне приходит в голову это читать из памяти конечный адрес функции в libcef.asi и использовать его для своего хука. Но в зависимости от названия файла моего плагина он может загружаться позже или раньше libcef.asi, а в 2 случаи там ещё не будет джампа с адресом. Мне это не нравится. Ещё рассматривал вариант сразу искать адрес в libcef.asi по сигнатуре так как это файл потенциально может меняться. Но это решение мне тоже кажется не оптимальным. Как правильнее будет сделать? Мне кажется на такие случаи уже придумано оптимальное решение