Взламывать 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-файла им не открыть. А многим хочется посмотреть содержимое теста в редакторе, так как там сразу видны правильные ответы.
Как работает скрипт
- Открываете страницу со скриптом - и всё, никакой установки (страницу можно хранить оффлайн).
- Перетаскиваете .exe теста в окно.
- JavaScript считывает бинарник через
FileReader
иBlob.arrayBuffer()
- стандартные Web API для работы с файлами локально. - В содержимом ищется ресурс
RCData
с именемTEST
. - Для ресурса подбирается ключ шифрования и содержимое теста расшифровывается.
- Сохраняете файл и открываете его в MyTestEditor.
А если файл под паролем?
В этом случае поможет старый добрый MyTestXProHelper:
- Запускаете MyTestEditor, затем MyTestXProHelper.
- В окне MyTestXProHelper выбираете режим MyTestEditor.
- Выбираете процесс MyTestEditor в списке слева.
- Нажимаете кнопку Patch и открываете полученный ранее .mtx - пароль больше не требуется.
Совместимость и ограничения
Проверено на тестах, собранных MyTestXPro 11.0.0.37 - 11.0.0.67 (последняя публичная версия на официальном сайте).
Если что-то не работает - помогает классический дизассемблер (см. предыдущие гайды).
Итоги
Код на чистом JS+HTML: mtx_dumper.html
Сохраняйте себе страницу или пользуйтесь прямо с сайта.