Может кто помочь расковырять загрузчик, моих знаний рпосто напросто не хватает, не совсем понятно куда копать. Все находится тут в
архиве. проблема с загрузчиком следующая, под ХР он идеально работает, а вот уже на 7ке - запускается корректно раз из нескольких десятков. Один раз так прокнуло, пару раз в дебагере прокнуло, закономерности уловить не удалось.
Run.exe - собственно сам загрузчик, в загрузчике много неиспользованых данных судя по первому взгляду. фактически в мк он добавляет нормальную поддержку геймпадов, учит воспроизводить музыку в мп3 из дирректории а не с привода, добавляет возожность играть по LAN.
loader.eis -"конфиг" к загрузчику, указывающий что ему надо подцепить, и что то еще (не понятно)
trilogy.dll - переименованый оригинальный (хотя в данном случае уже
модифицированый ) exe файл игры. на новой версии что по ссылке, лоадер под ХРенью тоже работает, музыку по крайней мере крутит как надо, а вот менюшку для игры по сети, и джойстика не делает, смещения походу другие.
Собственно самому "нарыть" удалось немного.
По адресу 40119F находится основной цикл, которы йподгружает и модифицирует оригинальный exe.
в нем обыкновенный свитч, если не вдаваясь в детали, то такого вида.
do{
ESI+=4
switch (eax){
case 1000h:
functionB()
break;
case 2000h:
functionA();
break;
case 3000h:
KERNEL32.SuspendThread(DWORD PTR DS:[410C10]);
break;
case 3100h:
KERNEL32.ResumeThread(DWORD PTR DS:[410C10]);
break;
case 4000h:
KERNEL32.Sleep(DWORD PTR DS:[EDI+ESI]);
break;
default:
break;
INC EBX
}
}while (ebx <> dword ptr DS:[410C20]);
functionB - вызывается только 1 раз, собственно она и загружает оригинальный EXE.
functionA - патчит оригнальный EXE. вот только с помощью оли не получается толком посмотреть ни загруженый EXE и что в нем патчится, ни откуда берутся данные для патча.
Подскажите куда копать