Кажется, что-то уже проскакивало на тему того, что subj не правильно определяет длину некоторых процессорных команд. Я вот наскочил в первый раз, полчаса с карандашом и hiew "вычислял" что у меня не так.
naked-функция на inline-ассемблере, в ней последовательность команд:
2B DF sub ebx,edi
1B C2 sbb eax,edx
1B F1 sbb esi,ecx
01 6C 24 08 add dword ptr [esp+8],ebp ---
куча параметров, локальные переменные, макросы, поэтому трассирую все по-шагам, вижу что последняя команда как-бы не выполняется...
После разбирательства выясняется, что отладчик неправильно определяет длину последней команды и калечит её вставляя int3 (0xCC) на один байт раньше, т.е. получается:
01 6C 24 CC add dword ptr [esp-34h],ebp ---
Вот такая он сволочь!
|