EXE → MTX за секунды: JS-экстрактор для MyTestXPro

Взламывать MyTestX и MyTestXPro когда-то было целым квестом: нужен был отладчик (OllyDbg или x64dbg), виртуальная машина с Windows XP, утилита MyTestXProHelper и немного терпения... Все чтобы достать заветный .mtx из .exe-файла с тестом. Сегодня всё это превращается в "открыл страничку в браузере - указал файл - получил тест": новый клиент-сайд HTML/JS-скрипт без бэкенда делает всю работу прямо в вашем браузере.

Немного истории
Ещё в 2014-м году я показывал, как выковырять .mtf из MyTestX с помощью CFF Explorer и пары брейк-пойнтов. Спустя год вышла статья про MyTestXPro: там мы патчили редактор и использовали утилиту MyTestXProHelper, чтобы открывать даже запароленные .mtx. MyTestXProHelper до сих пор живёт в том же посте и исправно патчит редактор (MyTestEditor) одной кнопкой.

Зачем вообще извлекать .mtx?
Формат .mtx - "родной" для MyTestXPro ≥ 11; именно его понимает редактор тестов. Автономный тест в виде .exe-файла им не открыть. А многим хочется посмотреть содержимое теста в редакторе, так как там сразу видны правильные ответы.

Как работает скрипт

  1. Открываете страницу со скриптом - и всё, никакой установки (страницу можно хранить оффлайн).
  2. Перетаскиваете .exe теста в окно.
  3. JavaScript считывает бинарник через FileReader и Blob.arrayBuffer() - стандартные Web API для работы с файлами локально.
  4. В содержимом ищется ресурс RCData с именем TEST.
  5. Для ресурса подбирается ключ шифрования и содержимое теста расшифровывается.
  6. Сохраняете файл и открываете его в MyTestEditor.

А если файл под паролем?
В этом случае поможет старый добрый MyTestXProHelper:

  1. Запускаете MyTestEditor, затем MyTestXProHelper.
  2. В окне MyTestXProHelper выбираете режим MyTestEditor.
  3. Выбираете процесс MyTestEditor в списке слева.
  4. Нажимаете кнопку Patch и открываете полученный ранее .mtx - пароль больше не требуется.

Совместимость и ограничения
Проверено на тестах, собранных MyTestXPro 11.0.0.37 - 11.0.0.67 (последняя публичная версия на официальном сайте).
Если что-то не работает - помогает классический дизассемблер (см. предыдущие гайды).

Итоги
Код на чистом JS+HTML: mtx_dumper.html
Сохраняйте себе страницу или пользуйтесь прямо с сайта.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *