Жень, вылет возможен именно из-за
call
поэтому выход - взять инструкцию выше инструкции
mov esi,[ecx+1C]
, если это кончено возможно, чтобы call (или любой иной jmp в других случаях, что тоже может приводить к вылету) не попал в инъекцию.
Как проверить, есть ли обращение к твоему call (или другому jmp) и из какой инструкции идёт это обращение:
1. Возьмём адрес твоей инструкции:
call RaccoonCity.exe+1B68F
2. Добавим его в таблицу.
3. Поставим брейкпоинт на чтение.
В результате получим инструкции, которые делают вызов этого call.
Если будет только одна инструкция (текущая), то вылет из игры происходит не из-за этого call (или другого jmp).
С такими случаями вылетов из игры думаю сталкивались все.
Вот и у MasterGH в его топике Частые ошибки и редкие пакостные сюрпризы есть упоминание об этом: