Print This Post Снимаем пароль с тестов MyTestXPro

Вторник, 15. Сентябрь 2015
Раздел: .NET, Assembler, Для новичков, автор:

Год назад в своей старой статье я рассматривал процесс открытия защищенных паролем тестов MyTestX, а также процесс получения .mtf-файлов из .exe-файлов автономных тестов.
Прогресс не стоит на месте, и в последнее время все чаще встречаются просьбы открытия запароленных .mtx-файлов и их извлечения. Для справки: .mtf-файлы создаются в программе MyTestX (последняя версия 10.2.0.3 от 31.08.2012), .mtx-файлы создаются в программе MyTestXPro (последняя версия 11.0.0.37 от 30.08.2015), то есть MyTestX давно не обновляется, а MyTestXPro является платной программой и имеет свой, отличный от бесплатной версии, формат файлов. Таким образом, процесс, который я описывал в своей старой статье, не подходит для MyTestXPro. Давайте разберемся, что с этим делать.

Снимаем пароль с тестов MyTestX (НЕ PRO-версия!, .mtf)

В этот раз я постараюсь минимизировать количество рассуждений и ассемблерных листингов, дам только краткое описание идеи. Начнем с извлечения тестов из автономных файлов. Тест содержится в ресурсах .exe-файла, в RCData->TEST, в этом можно убедиться, например, с помощью CFF Explorer. Вот, как это выглядит на примере сферического теста в вакууме:

cff-res

Но не спешите радоваться, тест хранится в зашифрованном виде. В этом можно убедиться, например, с помощью утилиты ent. Если сравнить оригинальный .mtx-файл и файл с данными извлеченными из ресурсов (RCData->TEST) автономного теста, то мы увидим, что энтропия файлов практически не отличается, однако значения распределения хи-квадрат отличаются более чем в 5 раз.

ent

Что это значит? Это значит, что, скорее всего, .mtx-файл просто сжат, а ресурс сжат и зашифрован. Почему? Можно прочитать тут. Я пробовал проанализировать, какой алгоритм шифрования был применен, но, по всей видимости, ответственный за процесс дешифровки код был виртуализован средствами VMProtect.

Логично предположить, что тест хранится в расшифрованном виде в памяти после запуска автономного теста. Однако, мне доводилось наблюдать версии, которые честно чистили за собой память, и тест в памяти по-простому найти не удавалось, но иногда тест все же присутствует в памяти без дополнительных манипуляций, в этом можно убедиться, например, с помощью OllyDbg, достаточно поискать характерную сигнатуру:

Соответственно, можно извлечь из памяти расшифрованный тест, таким образом мы получим оригинальный .mtx-файл.

Теперь разберемся с открытием защищенных паролем тестов в редакторе MyTestEditor. Все довольно просто. Каждый тест, после того как его содержимое будет расшифровано и/или распаковано, представлен в памяти программы несколькими классами. Один из классов, который отвечает за информацию и настройки теста, называется TTest, он обладает методом LoadFromStream, в этом методе заполняются поля класса, в том числе после FPasswordEdit, именно в нем хранится MD5 пароля, который запрашивается при открытии теста в редакторе.

ttest

Если это поле не заполнять, то пароль не будет запрошен, то есть достаточно тем или иным образом изменить этот фрагмент кода в памяти. Почему в памяти? Редактор защищен навесным протектором VMProtect, который проверяет целостность файла при запуске, а возня с протектором - лишнее и абсолютно ненужное занятие в данном случае.

Вот и все. Чтобы не делать вышеописанные процедуры руками - я написал простую утилиту на C#, которая умеет извлекать .mtx-файл из памяти автономного теста и должным образом править память MyTestEditor, чтобы он не запрашивал пароль при открытии защищенных тестов.

mytestxhelper

Как пользоваться для извлечения .mtx-файла из автономного теста (.exe-файла):

Этот вариант срабатывает не для всех версий:
1. Запускаете тест.
2. Запускаете утилиту.
3. В списке процессов слева находите имя процесса теста (совпадает с именем файла), кликаете по нему.
4. Справа выбираете MyTestStudent.
5. В Dump Path указываете путь, куда сохранить файл с тестом.
6. Нажимаете Dump Test, при успешном извлечении появится окно с текстом OK.
7. По указанному в Dump Path пути находите файл с тестом.

Этот вариант обычно срабатывает, но метод извлечения теста довольно специфичен и нестабилен:
1. Запускаете утилиту.
2. Справа выбираете MyTestStudent.
3. В EXE Path Указываете путь к автономному тесту (.exe-файлу).
4. В Dump Path указываете путь, куда сохранить файл с тестом.
5. Нажимаете Dump Test, при успешном извлечении появится окно с текстом OK.
6. По указанному в Dump Path пути находите файл с тестом.

Как пользоваться для открытия защищенных паролем .mtx-файлов в MyTestEditor:
1. Запускаете MyTestEditor.
2. Запускаете утилиту.
3. В списке процессов слева находите имя процесса редактора - MyTestEditor, кликаете по нему.
4. Справа выбираете MyTestEditor.
5. Нажимаете Patch, при успешной правке кода появится окно с текстом OK.
6. Открываете любой защищенный паролем тест в MyTestEditor, пароль не будет запрошен.

Утилита актуальна для MyTestXPro версии 11.0.0.37, но, в случае с извлечением .mtx-файлов, может подойти и для более старых версий.

Для работы необходим .NET Framework 2.0.
Скачать утилиту: MyTestXProHelper
Скачать MyTestXPro 11.0.0.37: MyTestXPro

P.S.: d_x провел ревизию некоторых своих продуктов и обновил Proxy Checker Lite и StepFucker. Hail Assembly Language!

 Обсудить на форуме


Получать обновления на почту:     

Комментариев: 44 к “Снимаем пароль с тестов MyTestXPro”


  1. zloid :

    DeDe на скриншоте?

    [Ответить]

    Kaimi:

    IDR

    [Ответить]

  2. Уважаемый, а можно как нибудь обойти защиту незарегистрированной копии продукта, без вкладывания финансовых средств? ;)

    [Ответить]

    Kaimi:

    Как-нибудь можно, особенно если снять VMProtect, но я в этом не разбираюсь, это на http://exelab.ru/f/ людей поискать можно.

    [Ответить]


  3. Сергей :

    Кто нибудь знает как снять аппаратную защиту (флешка) Sentinel HASP?

    [Ответить]

    Сергей:

    есть одна прога, на самом деле ерундовая, но очень хочется отковырять ее от защиты.

    [Ответить]

    Kaimi:

    exelab.ru/f/

    [Ответить]


  4. legaviy :

    кайми всё больше в кряк подаётся, чёта странна

    [Ответить]


  5. Antoni :

    Спасибо за статью. Удивило то, как быстро по конечному представлению вы определили в какую сторону нужно копать.

    //Было бы очень круто убрать из комментариев требование ввода почты

    [Ответить]


  6. Artem :

    подскажите, почему в обоих случаях извлечения mtx файла из ехе выскакивает ошибка cant find test in memory ?

    [Ответить]

    Kaimi:

    Трудно сказать, может тест был сделан в более новой версии

    [Ответить]

    Artem:

    получается тогда никак его не вынуть? п@здец блин:(( труба

    [Ответить]

    Kaimi:

    Не знаю, надо файл смотреть


  7. Роман :

    Здравствуйте,у меня не получается снять пароль!Как с вами связаться для консультации?

    [Ответить]

    Kaimi:

    Через комментарии

    [Ответить]


  8. Vasa211 :

    Можно ли тожесамое сделатьдля майтест10.2, очень нужно, если да то как именно это сделать?

    [Ответить]

    Kaimi:

    /2014/06/opening-protected-mytestx-easyquizzy/

    [Ответить]

    Vasa211:

    Эту статью я видел, но я имел ввиду вытащить из памяти программы файл теста, тоесть тест розданый по локалке с сервера и можно ли вытащить из памяти клиента (MytestStudent 10.2) тест и сохранить его для дальнейшего открытия в Едиторе

    [Ответить]

    Kaimi:

    Такой у меня нет. Если тест раздается по сети, то можно просто обратиться к серверу за тестом, а не из памяти вытаскивать.

    Vasa211:

    А как можно обратится к серверу за файлом теста?? Мне бы желательно чтоб это было как можно меньше заметно на сервере. Буду очень благодарен за помощь в данной ситуации

    Kaimi:

    Это будет заметно как запрос теста на стороне сервера. Берешь Wireshark, поднимаешь сервер, клиент, настраиваешь, смотришь, какой запрос шлет клиент при старте теста по сети. Повторяешь запрос программно.

    Vasa211:

    Понял, спасибо, еще не работал с Wireshark-ом но попробую


  9. BackUp :

    Здравствуйте!
    У меня версия MyTestEditor 3.0.9, я раз 10 перечитывал ваши статьи (/2014/06/opening-protected-mytestx-easyquizzy/comment-page-3/#comments), но так и не смог разобраться со старой версией.

    Помогите пожалуйста очень надо или подскажите как можно обойти запрос пароля на редактирование.
    Вот сам редактор тестов (https://drive.google.com/file/d/0B9tUHGd3MD56T2UxSGRMdUotb1U/view?usp=sharing)

    Заранее огромное спасибо.

    [Ответить]

    Kaimi:

    На официальном сайте есть утилиты по преобразованию тестов в более новый формат. Преобразуешь в формат совместимый с 10.2 и открываешь редактором из статьи.

    [Ответить]

    BackUp:

    Спасибо огромное. Все получилось

    [Ответить]


  10. Иван :

    Не могу открыть Helper, сначала требует установку .NET 3.5, но у меня установлена более новая версия, и при нажатии "Skip" ничего не происходит.
    Помогите пожалуйста!
    https://www.mediafire.com/?dyg033fcdkb582x

    [Ответить]

    Kaimi:

    Установленная более новая версия не означает, что не нужно ставить ту, которая требуется.
    https://www.sendspace.com/file/unsw5g

    [Ответить]

    Иван:

    Спасибо за помощь. В следующий раз поставлю нужную версию. Всего найлучшего!

    [Ответить]


  11. BuGurt :

    Прошу Вашей помощи.

    Оба варианта извлечения .mtx файла из .ехе при помощи MyTestXProHelper к сожалению не увенчались успехом:
    В первом способе выскакивает "ERROR" Can't find test data in memory;
    Во втором http://pixs.ru/showimage/Erarpng_3123071_19736946.png

    О программе MyTestXPro Версии 11.0.0.24 [PRO]
    Вот, собственно сам тест https://www.sendspace.com/file/drcpif
    Заранее благодарю.

    [Ответить]

    Kaimi:

    https://www.sendspace.com/file/0dom6r

    [Ответить]

    BuGurt:

    Kaimi, Очень признателен тебе за помощь.^_^

    А в чём собственно заключалась ошибка? И каким путем удалось её решить?
    █Ps: Хочу знать дабы не беспокоить в будущем.

    [Ответить]

    Kaimi:

    Своеобразная папка %TEMP% У тебя. Не было прав на запись, как я понимаю. Может запуск с UAC решил бы проблему.


  12. Sevinc :

    Здравствуйте!
    Помогите пожалуйста открыть этот тест https://www.sendspace.com/file/mrwue9
    Формат mtf.не могу никак открыть без пароля((((

    [Ответить]

    Kaimi:

    Скачай редактор в конце и открой /2014/06/opening-protected-mytestx-easyquizzy/

    [Ответить]

    Sevinc:

    Получилось!Спасибо огромное!!

    [Ответить]


  13. Алексей :

    Добрый день!Есть файл теста сделанный в mytest, версии не знаю.следую инструкции, в обоих случаях пишет, что Can't find test data in memory. Пробовал и с запуском от админа, все тоже самое. Заранее спасибо!

    [Ответить]

    Kaimi:

    Тест точно от pro версии? Может там обычная версия, тогда надо другую статью смотреть.

    [Ответить]


  14. Алексей :

    Прошу прощения. Тест был очень похож на mytestx или pro, но оказался veraltest, что было написано в свойствах. Что-то даже не подумал. А есть ли решения для последнего? Спасибо.

    [Ответить]

    Kaimi:

    У меня нет. Даже ни разу не сталкивался.

    [Ответить]


  15. Ренат :

    Помогите взломать тест с паролем созданный myTesteditor

    [Ответить]


  16. Евгений :

    Здравствуйте, у меня тест создан в версии 10.2.0.2 на него утилита не катит как можно достать?

    [Ответить]

    Kaimi:

    В самом начале ведь ссылка на пост про MyTestX, не Pro.

    [Ответить]


  17. Vessel :

    Здравствуйте, не получается снять пароль, выскакивает cant find test in memory
    вот файл https://yadi.sk/d/xWcxMKSyqdr9W можете чем помочь?

    [Ответить]

    Kaimi:

    У меня нормально дамп снимает
    https://www.sendspace.com/file/fytyns

    [Ответить]


Оставьте ваш комментарий