Прошу прощения, что создаю вторую тему нетерпится видимо http://www.wasm.ru/forum/index.php?action=vthread&forum=23&topic=12817 пока копаюсь в ехе-шнике. ничем не запакован, но отладке не поддается. ошибка вылетает в самом начале загрузки. PS: игрулина находится на mpog.ru
Я в асме к сожалению еще новичок но вроде что то интересное мне кажется нарыл подскажите, что примерно делает этот вот кусок: Код (Text): :004FE8CC 53 push ebx :004FE8CD 8BDD mov ebx, ebp :004FE8CF 035804 add ebx, dword ptr [eax+04] :004FE8D2 894308 mov dword ptr [ebx+08], eax :004FE8D5 8D442408 lea eax, dword ptr [esp+08] :004FE8D9 89430C mov dword ptr [ebx+0C], eax :004FE8DC C7430413E94F00 mov [ebx+04], 004FE913 :004FE8E3 66C743100000 mov [ebx+10], 0000 :004FE8E9 66C743120000 mov [ebx+12], 0000 :004FE8EF C7431C00000000 mov [ebx+1C], 00000000 :004FE8F6 6467A10000 mov eax, dword ptr fs:[0000] :004FE8FB 8903 mov dword ptr [ebx], eax :004FE8FD 6467891E0000 mov fs:[0000], ebx :004FE903 5B pop ebx :004FE904 C3 ret он вызывается просто из огромного количества точек
но есть оказывается еще более часто используемый кусок который вызывает верхний Код (Text): :0050D8A8 55 push ebp :0050D8A9 8BEC mov ebp, esp :0050D8AB 83C4D8 add esp, FFFFFFD8 :0050D8AE 53 push ebx :0050D8AF 8945FC mov dword ptr [ebp-04], eax :0050D8B2 B850395300 mov eax, 00533950 :0050D8B7 E81010FFFF call 004FE8CC ; вызов верхнего куска :0050D8BC 66C745E80800 mov [ebp-18], 0008 :0050D8C2 33C9 xor ecx, ecx :0050D8C4 8B45FC mov eax, dword ptr [ebp-04] :0050D8C7 8908 mov dword ptr [eax], ecx :0050D8C9 E84ADBFEFF call 004FB418 :0050D8CE 8B55D8 mov edx, dword ptr [ebp-28] :0050D8D1 646789160000 mov fs:[0000], edx :0050D8D7 8B45FC mov eax, dword ptr [ebp-04] :0050D8DA 5B pop ebx :0050D8DB 8BE5 mov esp, ebp :0050D8DD 5D pop ebp :0050D8DE C3 ret
Если память не изменяет, переход на другой адрес - если ты честно начнешь дебужить такие куски, то увидишь, что неожиданно перейдешь на другой адрес. Я с похожими встречался, даже позаковыристее, вообще, глядя на код, даже не поймешь, куда будет переход и будет ли исполняться следующая команда. Поэтому мой совет - грузи в дебуггер и исполняй по шагам. Может встретиться инструкция int 3 - тут надо внимательнее, может испортиться содержимое некоторых регистров, которые потом могут, например, использоваться при расшифровке очередной порции кода.