Я не очень хорошо помню, как я оказался в отладчике DOSBox и зачем ковырялся в 16-битном ассемблере, восстанавливая функцию распаковки файлов ресурсов MM3.CC — но это было здорово.
Игру я получил на одной из последних скромных распродаж, а потом в Интернете наткнулся Страница Джеффа Людвига , в котором описаны проблемы с модификацией игры, связанные со сжатием в MM3.CC. В частности, там было написано следующее:
Оказалось, что этот алгоритм довольно сложно взломать, и распаковывать эти данные пока никто не научился.Вызов был принят. В его статье описывается, как он пытался бороться с алгоритмом.
Я опишу, как я это сделал сам, а в конце дам ссылку на утилиту с открытым исходным кодом, которая умеет не только распаковывать, но и упаковывать файл MM3.CC.
Упаковщик DOS
Посмотрев на MM3.EXE, я обнаружил, что это сжатый исполняемый файл DOS с каким-то несжатым оверлеем и FBOV в начале.Я ничего не знал о компрессорах DOS, но заметил от Джеффа Людвига, что он использует нечто под названием «Universal Program Cracker» v1.11. Я нашел версию 1.10 (выпущенную 25 июня 1997 г.
) и распаковал exe-файл.
И мне даже удалось правильно обработать данные наложения.
И все же мне хотелось узнать имя упаковщика.
Мне сказали, что мне нужно использовать программу Обнаружить это легко , и действительно - она выдала:
Любителям истории могу порекомендовать старые ветки обсуждений, касающиеся этого ПО - 1991 и 1995 годов: https://groups.google.com/forum/#!topic/comp.os.msdos.programmer/QsjHLY6Kb4s https://groups.google.com/forum/#!topic/comp.compression/IAj2-VHbtl4EXECUTRIX-COMPRESSOR(-)[by Knowledge Dynamics Corp] Borland TLINK(2.0)[-]
IDA-загрузчик DOS
Распаковать exe — это хорошо, но правильно разобрать — еще лучше.К сожалению, IDA наткнулась на это.
Он правильно определил наложение, но не смог его загрузить.
Просмотрев код, я понял, что анализировать его без оверлея приведет к головной боли, так как участков кода явно не хватает (несмотря на то, что процедура распаковки хранится в exe-файле).
При поиске FBOV в Google я наткнулся на исходный код загрузчика IDA DOS, который подтвердил, что IDA сможет загрузить это наложение без каких-либо проблем.
Я перекомпилировал отладочную версию загрузчика IDA DOS и проследил за ее работой через Visual Studio, чтобы понять, почему она не загружает оверлей.
Для этого мне пришлось описать несколько внутренних параметров структуры FBOV. Заголовок описывается следующим образом: #define FB_MAGIC 0x4246
#define OV_MAGIC 0x564F
struct fbov_t
{
Теги: #Меч и Магия III #C++ #Ассемблер #обратное проектирование
-
2 Новых Календаря На Всю Жизнь
19 Oct, 24 -
Я Разберусь С Этим?
19 Oct, 24 -
Версия Для Печати Таблицы Контейнера Stl
19 Oct, 24