Сейчас на форуме: (+9 невидимых) |
![]() |
eXeL@B —› Протекторы —› Вопрос знатокам кто сталкивался с TrusCont TSFD Protection Toolkit |
. 1 . 2 . >> |
Посл.ответ | Сообщение |
|
Создано: 27 марта 2013 18:49 · Личное сообщение · #1 TrusCont TSFD Protection Toolkit - комплекс для защиты программ против копирования внедряет свою библиотеку в exe фаил и гадит весь код Пытаюсь отучить программу от проверки с какого носителя она запускается, в оригинале она запускается только с USB накопителя. В программе используется алгоритм получения из реестра данных о подключенном USB устройстве. Проверка VID и PID и серийного номера , ключ программы генерируется относительно серийного номера и 2 дополнительных параметров введенных пользователем , эту проверку я обошёл. Так же в оригинальном USB накопители странная разметка флеш накопителя там по мимо FAT32 разметки есть не понятные разделы, при помощи Linux и команды dd был слит полный дамп с устройства, из дампа были выдернуты те самые разделы которые были нужны для полного клонирования флеш накопителя. Но тут меня ожидал очередной уровень защиты при запуске с клонированного устройства выдаётся окно с текстом вставте оригинальный USB из дезассемблема вызов идёт с Code:
в регистре eax хронится точка входа в библиотеку tcpm_exe_usb.dll и внутри этой библиотеки принимается решение о том верный ли USB носитель или нет. Если кто нибудь сталкивался с этим "пакером" поделитесь опытом как отвязать эту библиотеку или как обойти эту защиту ![]() |
![]() Ранг: 419.0 (мудрец), 647thx Активность: 0.46↗0.51 Статус: Участник "Тибериумный реверсинг" |
Создано: 27 марта 2013 19:25 · Личное сообщение · #2 |
|
Создано: 27 марта 2013 19:26 · Личное сообщение · #3 |
|
Создано: 27 марта 2013 19:35 · Поправил: unix3d · Личное сообщение · #4 |
|
Создано: 27 марта 2013 20:26 · Поправил: connect7 · Личное сообщение · #5 |
|
Создано: 27 марта 2013 20:44 · Личное сообщение · #6 Да USB на контролере SMI sm3254EA его анналоги SM3255AA и SM3257EANN было скопированно все визическое устройство ввключая разметку той части которая не определялась, кто знаком с Linux знает что такое dd с помошью нее можно скопировать все физическое устройство с первых до последних байтов относительно этого дампа был сделан дамп но для другого устройства на схожем чипе и поддеиживающем теже инструкции. после этого были естественно поправлены PID и VID и серийный номер на новом устройстве, соответственно это точная копия оригинального устройства даже дампы Jtagом это подтверждают физически наполнение модуля памяти идентичны друг другу ![]() |
|
Создано: 27 марта 2013 20:59 · Личное сообщение · #7 |
|
Создано: 27 марта 2013 21:28 · Поправил: connect7 · Личное сообщение · #8 |
|
Создано: 27 марта 2013 21:31 · Личное сообщение · #9 длл вызывается из корневого процесса, она вшита в ехешник программы я скачал версию софта с офф сайта но не уверен той ли версией накрыта программа на офф сайте версия 2.4. эта библиотека существует и в программе протектара она запокована ACProtect позже могу выложить библиотеку взятую из этого программного комплекса. То что я понял что этот комплекс очень сильно гадит полиморфом код приходится постоянно сидеть в IDA и трейсить там по томучто в Olly код попорчен! ![]() |
|
Создано: 27 марта 2013 21:34 · Личное сообщение · #10 |
|
Создано: 27 марта 2013 22:44 · Личное сообщение · #11 |
|
Создано: 27 марта 2013 23:22 · Личное сообщение · #12 Вас ни чего не смущает что даже JTAG дампы одинаковые а это уже на уровне микрокода контролера. Копируется все одинакого CRC суммы даных совпадают скорее всего проверка в этой длл считывает ключ базируешся на модели чипа памяти и контролера флеш устройства и хронится он если мои догдки верны в области на USB диске а протекция ехешника на этой флешки сводится к тому что длл проверяет ключ из этой области с реальными данными о чипе устройства, но так как код очень замусорен требуется время и помощь более опытных людей в понятии алгоритма по которому идет расчет, дальнейшая эмуляция дело техники. ![]() |
|
Создано: 27 марта 2013 23:31 · Поправил: connect7 · Личное сообщение · #13 |
|
Создано: 28 марта 2013 13:43 · Личное сообщение · #14 |
|
Создано: 28 марта 2013 13:45 · Личное сообщение · #15 |
|
Создано: 28 марта 2013 13:56 · Личное сообщение · #16 |
|
Создано: 28 марта 2013 14:11 · Личное сообщение · #17 |
|
Создано: 28 марта 2013 14:14 · Личное сообщение · #18 Code:
![]() |
|
Создано: 28 марта 2013 14:30 · Поправил: reversecode · Личное сообщение · #19 там есть обращение к драйверу и есть обращение к COM интерфейсу Code:
Code:
Code:
надпись выводится помоему после обращение к COM интрефейсу трейсите вообщем есть проверка crc32 Code:
![]() |
|
Создано: 28 марта 2013 14:40 · Личное сообщение · #20 unix3d Приводите базу образа, с которой грузите библиотеку, иначе ваши листинги не позволяют попасть на то же место в коде, которое вы описываете. Или в иде выполните rebase на 10000000 (на базу образа из заголовка) и приведите кусок когда, где выводится сообщение, ещё раз. А то мне лично влом придумывать хитрожопые способы, как попасть на участок кода из ваших листингов. ----- Stuck to the plan, always think that we would stand up, never ran. ![]() |
|
Создано: 28 марта 2013 16:59 · Поправил: unix3d · Личное сообщение · #21 Exe шник самой программы, какой версией TrusCont TSFD Protection он накрыт затрудняюсь ответить Приведённая Dll взята с версии 2.4 с офф сайта Code:
EAX = FFFFFFFF - Нужны права админа EAX = 0 проверка непройдена другое значение скорее всего буква диска USB Code:
Code:
Code:
Code:
Code:
![]() |
![]() Ранг: 419.0 (мудрец), 647thx Активность: 0.46↗0.51 Статус: Участник "Тибериумный реверсинг" |
Создано: 28 марта 2013 17:51 · Поправил: ELF_7719116 · Личное сообщение · #22 unix3d пишет: EAX = FFFFFFFF - Нужны права админа EAX = 0 проверка непройдена другое значение скорее всего буква диска USB он по очереди физические диски открывает и deviceiocontrol'ит (IOCTL_DISK_GET_DRIVE_GEOMETRY, IOCTL_SCSI_GET_ADDRESS и IOCTRL_SCSI_PASS_THROUGHT), чтобы какие-то сигнатуры ![]() Code:
Короче в EAX конечный результат от VirtualAlloc с определенным размером. ![]() |
|
Создано: 28 марта 2013 18:20 · Личное сообщение · #23 Нет привязки к железу как токовой нету. С оригинальный USB носителя программа запускается на любом коме. Скорее всего привязка к USB а вот как он высчитывает правильный носитель пока неизвестно.... есть догадки что в разделах на флешки сидит последовательность в которой скорее всего зашита модель той флешки которую считать верной!!! ![]() |
![]() Ранг: 419.0 (мудрец), 647thx Активность: 0.46↗0.51 Статус: Участник "Тибериумный реверсинг" |
Создано: 28 марта 2013 18:38 · Личное сообщение · #24 |
|
Создано: 28 марта 2013 18:54 · Личное сообщение · #25 возможно, но даже после поблочного считывания оригинальной флешки в фаил и заливка этого дампа на другую флешку сигнатуры и возможно код так же были бы на флешки клоне и они бы выполнялись, но этого не происходит. все больше схожусь вомнении что на флешки оригинале возможно зашиты данные технические о самой флешки! на столе 20 флешок со схожеми контролерами и даже 3 из них на том же самом контролере и с тем же самым модулем памяти. заливка дампа на эти флешки результата не дала. Продолжаю трейсить код этой библиотеки может где то в нем разгадка этого "протектора". в самой библиотеки есть противо копировальные функции. ![]() |
![]() Ранг: 419.0 (мудрец), 647thx Активность: 0.46↗0.51 Статус: Участник "Тибериумный реверсинг" |
Создано: 28 марта 2013 20:01 · Личное сообщение · #26 unix3d пишет: Продолжаю трейсить код этой библиотеки обратите внимание на эти функции text:10004570 ; Exported entry 4. TCPM_GetInfo2 text:100047A0 ; Exported entry 10. TCPM_TryProtection text:10004990 ; Exported entry 8. TCPM_Protect text:10005280 ; Exported entry 5. TCPM_GetOptionsDescription text:10007060 ; Exported entry 6. TCPM_GetProperties ![]() |
|
Создано: 28 марта 2013 20:33 · Поправил: ARCHANGEL · Личное сообщение · #27 unix3d Во-первых, непонятно, почему вы называете этот вид защиты "протектором". Никакого протектора там нет, код неупакован, просто написан в так называемом shellcode-стиле для того, чтоб быть базонезависимым. Запутывания (обфускации) я тоже никакой не увидел. Во-вторых, по делу. Внутри первой функции проверки: Code:
оригинальной флэхи основной является работа кода, начинающегося внутри sub_82F366. Конкретнее: Code:
Как уже заметил ELF_7719116, флешковому устройству посылаются запросы IRP_MJ_DEVICE_CONTROL с dwIoControlCode == IOCTL_SCSI_PASS_THROUGH_DIRECT. Code:
Но, что хуже, от результатов выходного буфера этого вызова зависят параметры (в частности, размер выделяемой области памяти) для вызова API: Code:
Тем не менее, всё не так плохо. У вас же есть оригинальная флэшка. Значит надо написать логгер, а потом эмулятор. Логгер будет перехватывать DeviceIoControl, идущие к устройству флэшки, и записывать входные/выходные параметры. Ещё надо будет перехватывать CreateFile и CloseHandle, чтоб не перехватывать то, что к работе с флешкой не относится. Поработайте с оригинальной флэшкой подольше, потом пишите эмулятор. Слово это громкое, но на практике будет этот эмулятор подставлять результаты перехвата логгера. Флешка, как вы понимаете, тогда будет не нужна совсем. Что касается конкретно этой первой функции проверки, то всё закончится вот здесь: Code:
А, как вы выражаетесь, "Нужны права админа" для осуществления открытия девайсов дисков через CreateFile. ----- Stuck to the plan, always think that we would stand up, never ran. ![]() |
![]() Ранг: 419.0 (мудрец), 647thx Активность: 0.46↗0.51 Статус: Участник "Тибериумный реверсинг" |
Создано: 28 марта 2013 21:20 · Личное сообщение · #28 Ну вот, пришел ARCHANGEL, прочитал, продебажил, не выдержал и все интересное сразу выложил ![]() возможно, там просто OEP зашифрована(код программы не зашифрован и написан на делфи) и переход(расшифровка) в нее осуществляется с подачи данных оригинального usb-носителя. ![]() |
|
Создано: 28 марта 2013 22:02 · Личное сообщение · #29 |
|
Создано: 28 марта 2013 22:16 · Поправил: SReg · Личное сообщение · #30 ARCHANGEL пишет: Ещё надо будет перехватывать CreateFile и CloseHandle ![]() зы на виртуалбоксе кстати не взлетел, нтстатус 0xC0000039, а на реальной тачке воркает зы2 с хаспом у меня фокус не прошел, запросы разные, пошифрованы, код обфусцирован. сама дровина эмуля под вмпротом. ![]() |
. 1 . 2 . >> |
![]() |
eXeL@B —› Протекторы —› Вопрос знатокам кто сталкивался с TrusCont TSFD Protection Toolkit |