Вопрос CL_ReadPackets?

Эксперт
Статус
Оффлайн
Регистрация
29 Мар 2021
Сообщения
1,596
Реакции[?]
605
Поинты[?]
46K
при простейшем хуке функции ( ref: 53 8A D9 8B 0D ? ? ? ? 56 57 8B B9 ? ? ? ? @ engine.dll ) получаю Access Violation.

прототип и тело функции:
1676054506609.png
1676054982991.png


в иде вижу __fastcall, в слитых сурсах - __cdecl, базару ноль, проверил оба варианта - отлетаю как нехуй делать.
1676054678524.png
Пожалуйста, авторизуйтесь для просмотра ссылки.
Пожалуйста, авторизуйтесь для просмотра ссылки.

хук нигде не вызывается, крашусь - как и положено, при загрузке данных сервера.
где искать иссуе? благодарю, товарищи форумчане
 
Участник
Статус
Оффлайн
Регистрация
15 Янв 2021
Сообщения
492
Реакции[?]
289
Поинты[?]
79K
__fastcall же вроде будет давать 2 доп. "аргумента". То есть будет void(__fastcall*)(void* reg1, void* reg2, bool frame_finished).

Попробуй так для начала.
 
Эксперт
Статус
Оффлайн
Регистрация
29 Мар 2021
Сообщения
1,596
Реакции[?]
605
Поинты[?]
46K
__fastcall же вроде будет давать 2 доп. "аргумента". То есть будет void(__fastcall*)(void* reg1, void* reg2, bool frame_finished).

Попробуй так для начала.
дык у меня тогда разве выдавалась бы c5 ошибка? там же статичная "the value of ecx..." выдаётся, если аргументы залупа?
 
Участник
Статус
Оффлайн
Регистрация
27 Фев 2019
Сообщения
1,125
Реакции[?]
395
Поинты[?]
50K
engine()->is_in_game() проверку поставить попробуй перед вызовом оригинала и оставь декларацию __cdecl
 
Эксперт
Статус
Оффлайн
Регистрация
29 Мар 2021
Сообщения
1,596
Реакции[?]
605
Поинты[?]
46K
engine()->is_in_game() проверку поставить попробуй перед вызовом оригинала и оставь декларацию __cdecl
нужно вызывать оригинал, иначе обмен фреймами с сервером не происходит -> коннекту не бывать

но да, тут верной оказалась cdecl
 
Сверху Снизу