Сейчас на форуме: (+9 невидимых)

 eXeL@B —› Протекторы —› Вопрос знатокам кто сталкивался с TrusCont TSFD Protection Toolkit
. 1 . 2 . >>
Посл.ответ Сообщение

Ранг: 3.5 (гость)
Активность: 0=0
Статус: Участник

Создано: 27 марта 2013 18:49
· Личное сообщение · #1

TrusCont TSFD Protection Toolkit - комплекс для защиты программ против копирования внедряет свою библиотеку в exe фаил и гадит весь код
Пытаюсь отучить программу от проверки с какого носителя она запускается,
в оригинале она запускается только с USB накопителя. В программе используется алгоритм получения из реестра данных о подключенном USB устройстве. Проверка VID и PID и серийного номера , ключ программы генерируется относительно серийного номера и 2 дополнительных параметров введенных пользователем , эту проверку я обошёл. Так же в оригинальном USB накопители странная разметка флеш накопителя там по мимо FAT32 разметки есть не понятные разделы, при помощи Linux и команды dd был слит полный дамп с устройства, из дампа были выдернуты те самые разделы которые были нужны для полного клонирования флеш накопителя. Но тут меня ожидал очередной уровень защиты при запуске с клонированного устройства выдаётся окно с текстом вставте оригинальный USB
из дезассемблема вызов идёт с
Code:
  1. .itext:0082F6AC call    eax

в регистре eax хронится точка входа в библиотеку tcpm_exe_usb.dll
и внутри этой библиотеки принимается решение о том верный ли USB носитель или нет.

Если кто нибудь сталкивался с этим "пакером" поделитесь опытом как отвязать эту библиотеку или как обойти эту защиту



Ранг: 419.0 (мудрец), 647thx
Активность: 0.460.51
Статус: Участник
"Тибериумный реверсинг"

Создано: 27 марта 2013 19:25
· Личное сообщение · #2

unix3d пишет:
eax хронится точка входа в библиотеку tcpm_exe_usb.dll

Софт в студию



Ранг: 441.3 (мудрец), 297thx
Активность: 0.410.04
Статус: Участник

Создано: 27 марта 2013 19:26
· Личное сообщение · #3

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



Ранг: 3.5 (гость)
Активность: 0=0
Статус: Участник

Создано: 27 марта 2013 19:35 · Поправил: unix3d
· Личное сообщение · #4

2 ELF_7719116
софт можно скачать с http://dasm.dyndns.org/Norma.7z
около 600 мб скопировано с оригинальной флешки.
2tihiy_grom
Уже 3 день этим занимаюсь.



Ранг: 1.2 (гость)
Активность: 0=0
Статус: Участник

Создано: 27 марта 2013 20:26 · Поправил: connect7
· Личное сообщение · #5

unix3d
Что означает для Вас "полного клонирования флеш накопителя"??? Сумели найти флеш диск на том-же самом конроллере (возможно и даже на том же самом флеш чипе/ах) и подправили его серийника и имя?



Ранг: 3.5 (гость)
Активность: 0=0
Статус: Участник

Создано: 27 марта 2013 20:44
· Личное сообщение · #6

Да USB на контролере SMI sm3254EA его анналоги SM3255AA и SM3257EANN было скопированно все визическое устройство ввключая разметку той части которая не определялась, кто знаком с Linux знает что такое dd с помошью нее можно скопировать все физическое устройство с первых до последних байтов относительно этого дампа был сделан дамп но для другого устройства на схожем чипе и поддеиживающем теже инструкции. после этого были естественно поправлены PID и VID и серийный номер на новом устройстве, соответственно это точная копия оригинального устройства даже дампы Jtagом это подтверждают физически наполнение модуля памяти идентичны друг другу




Ранг: 1053.6 (!!!!), 1078thx
Активность: 1.060.81
Статус: Участник

Создано: 27 марта 2013 20:59
· Личное сообщение · #7

если уверены что проверка в той длл
то длл и давайте



Ранг: 1.2 (гость)
Активность: 0=0
Статус: Участник

Создано: 27 марта 2013 21:28 · Поправил: connect7
· Личное сообщение · #8

unix3d
А плата двух флеш дисков одна и та же? Может там еще кое чего существенное есть кроме контроллера и флеш памяти. Можно фоткок на плату флеш диска с обеих сторон.



Ранг: 3.5 (гость)
Активность: 0=0
Статус: Участник

Создано: 27 марта 2013 21:31
· Личное сообщение · #9

длл вызывается из корневого процесса, она вшита в ехешник программы я скачал версию софта с офф сайта но не уверен той ли версией накрыта программа на офф сайте версия 2.4. эта библиотека существует и в программе протектара она запокована ACProtect позже могу выложить библиотеку взятую из этого программного комплекса. То что я понял что этот комплекс очень сильно гадит полиморфом код приходится постоянно сидеть в IDA и трейсить там по томучто в Olly код попорчен!



Ранг: 3.5 (гость)
Активность: 0=0
Статус: Участник

Создано: 27 марта 2013 21:34
· Личное сообщение · #10

connect7 если Вы по поводу хардварного лок чипа то его там нет!



Ранг: 1.2 (гость)
Активность: 0=0
Статус: Участник

Создано: 27 марта 2013 22:44
· Личное сообщение · #11

Либо чего-то не полностью копируете либо там в железе есть еще чего-то ,что распознается программой. Гадать некому без информацией )



Ранг: 3.5 (гость)
Активность: 0=0
Статус: Участник

Создано: 27 марта 2013 23:22
· Личное сообщение · #12

Вас ни чего не смущает что даже JTAG дампы одинаковые а это уже на уровне микрокода контролера. Копируется все одинакого CRC суммы даных совпадают скорее всего проверка в этой длл считывает ключ базируешся на модели чипа памяти и контролера флеш устройства и хронится он если мои догдки верны в области на USB диске а протекция ехешника на этой флешки сводится к тому что длл проверяет ключ из этой области с реальными данными о чипе устройства, но так как код очень замусорен требуется время и помощь более опытных людей в понятии алгоритма по которому идет расчет, дальнейшая эмуляция дело техники.



Ранг: 1.2 (гость)
Активность: 0=0
Статус: Участник

Создано: 27 марта 2013 23:31 · Поправил: connect7
· Личное сообщение · #13

Oо, у вас flash чипы еще отличаются...Шустрая защита, если проверяет и их. Может у данного контроллера поддержка уникального ID где-то в регистрах? Они пишут, что у них специальные флеш накопители.
Копайте...



Ранг: 3.5 (гость)
Активность: 0=0
Статус: Участник

Создано: 28 марта 2013 13:43
· Личное сообщение · #14

Вот библиотека tcp_exe_usb.dll

5148_28.03.2013_EXELAB.rU.tgz - tcp_exe_usb.part1.rar



Ранг: 3.5 (гость)
Активность: 0=0
Статус: Участник

Создано: 28 марта 2013 13:45
· Личное сообщение · #15

Вторая часть архива

7bb6_28.03.2013_EXELAB.rU.tgz - tcp_exe_usb.part2.rar




Ранг: 1053.6 (!!!!), 1078thx
Активность: 1.060.81
Статус: Участник

Создано: 28 марта 2013 13:56
· Личное сообщение · #16

rghost.net



Ранг: 3.5 (гость)
Активность: 0=0
Статус: Участник

Создано: 28 марта 2013 14:11
· Личное сообщение · #17

http://rghost.ru/44837966



Ранг: 3.5 (гость)
Активность: 0=0
Статус: Участник

Создано: 28 марта 2013 14:14
· Личное сообщение · #18

Code:
  1. tcpm_exe_usb.dll:04001CEA loc_4001CEA:                            ; CODE XREF: tcpm_exe_usb.dll:0401FD09p
  2. tcpm_exe_usb.dll:04001CEA                                         ; tcpm_exe_usb.dll:0401FD1Dp
  3. tcpm_exe_usb.dll:04001CEA push    ebp
  4. tcpm_exe_usb.dll:04001CEB mov     ebp, esp
  5. tcpm_exe_usb.dll:04001CED and     esp, 0FFFFFFF8h
  6. tcpm_exe_usb.dll:04001CF0 push    0FFFFFFFFh
  7. tcpm_exe_usb.dll:04001CF2 push    offset unk_402FB91
  8. tcpm_exe_usb.dll:04001CF7 mov     eax, large fs:0
  9. tcpm_exe_usb.dll:04001CFD push    eax
  10. tcpm_exe_usb.dll:04001CFE push    ecx
  11. tcpm_exe_usb.dll:04001CFF mov     eax, 2B50Ch
  12. tcpm_exe_usb.dll:04001D04 call    near ptr unk_40207E0
  13. tcpm_exe_usb.dll:04001D09 mov     eax, ds:dword_403F790
  14. tcpm_exe_usb.dll:04001D0E xor     eax, esp
  15. tcpm_exe_usb.dll:04001D10 mov     [esp+2B508h], eax
  16. tcpm_exe_usb.dll:04001D17 push    ebx
  17. tcpm_exe_usb.dll:04001D18 push    esi
  18. tcpm_exe_usb.dll:04001D19 push    edi
  19. tcpm_exe_usb.dll:04001D1A mov     eax, ds:dword_403F790
  20. tcpm_exe_usb.dll:04001D1F xor     eax, esp
  21. tcpm_exe_usb.dll:04001D21 push    eax
  22. tcpm_exe_usb.dll:04001D22 lea     eax, [esp+2B520h]
  23. tcpm_exe_usb.dll:04001D29 mov     large fs:0, eax
  24. tcpm_exe_usb.dll:04001D2F mov     eax, [ebp+8]
  25. tcpm_exe_usb.dll:04001D32 mov     [esp+48h], eax
  26. tcpm_exe_usb.dll:04001D36 mov     eax, [ebp+10h]
  27. tcpm_exe_usb.dll:04001D39 push    3094h
  28. tcpm_exe_usb.dll:04001D3E mov     [esp+24h], eax
  29. tcpm_exe_usb.dll:04001D42 call    near ptr unk_401F7A1
  30. tcpm_exe_usb.dll:04001D47 xor     ebx, ebx
  31. tcpm_exe_usb.dll:04001D49 pop     ecx
  32. tcpm_exe_usb.dll:04001D4A cmp     eax, ebx
  33. tcpm_exe_usb.dll:04001D4C jz      short loc_4001D55
  34. tcpm_exe_usb.dll:04001D4E call    near ptr unk_400E9F0
  35. tcpm_exe_usb.dll:04001D53 jmp     short loc_4001D57
  36. tcpm_exe_usb.dll:04001D55 ; ---------------------------------------------------------------------------
  37. tcpm_exe_usb.dll:04001D55
  38. tcpm_exe_usb.dll:04001D55 loc_4001D55:                            ; CODE XREF: tcpm_exe_usb.dll:04001D4Cj
  39. tcpm_exe_usb.dll:04001D55 xor     eax, eax
  40. tcpm_exe_usb.dll:04001D57
  41. tcpm_exe_usb.dll:04001D57 loc_4001D57:                            ; CODE XREF: tcpm_exe_usb.dll:04001D53j
  42. tcpm_exe_usb.dll:04001D57 mov     ds:dword_40419AC, eax
  43. tcpm_exe_usb.dll:04001D5C call    near ptr unk_400EA70
  44. tcpm_exe_usb.dll:04001D61 push    offset aDllmainEntered          ; "DllMain entered"
  45. tcpm_exe_usb.dll:04001D66 push    ds:dword_40419AC
  46. tcpm_exe_usb.dll:04001D6C call    near ptr unk_40013F8
  47. tcpm_exe_usb.dll:04001D71 pop     ecx
  48. tcpm_exe_usb.dll:04001D72 pop     ecx
  49. tcpm_exe_usb.dll:04001D73 push    ebx
  50. tcpm_exe_usb.dll:04001D74 lea     esi, [esp+24Ch]
  51. tcpm_exe_usb.dll:04001D7B call    near ptr unk_4001000
  52. tcpm_exe_usb.dll:04001D80 mov     eax, [esp+48h]
  53. tcpm_exe_usb.dll:04001D84 mov     [esp+21Ch], eax
  54. tcpm_exe_usb.dll:04001D8B mov     [esp+224h], ebx
  55. tcpm_exe_usb.dll:04001D92 mov     [esp+230h], ebx
  56. tcpm_exe_usb.dll:04001D99 mov     [esp+220h], ebx
  57. tcpm_exe_usb.dll:04001DA0 mov     [esp+228h], ebx
  58. tcpm_exe_usb.dll:04001DA7 mov     byte ptr [esp+234h], 1
  59. tcpm_exe_usb.dll:04001DAF mov     [esp+2B528h], ebx
  60. tcpm_exe_usb.dll:04001DB6 mov     eax, ds:dword_40419AC
  61. tcpm_exe_usb.dll:04001DBB mov     edx, esi
  62. tcpm_exe_usb.dll:04001DBD call    near ptr unk_40018DE
  63. tcpm_exe_usb.dll:04001DC2 lea     eax, [esp+21Ch]
  64. tcpm_exe_usb.dll:04001DC9 call    near ptr unk_4001604
  65. tcpm_exe_usb.dll:04001DCE mov     eax, [esp+20h]
  66. tcpm_exe_usb.dll:04001DD2 mov     ecx, [eax+8]
  67. tcpm_exe_usb.dll:04001DD5 mov     [esp+54h], ecx
  68. tcpm_exe_usb.dll:04001DD9 mov     ecx, [eax+18h]
  69. tcpm_exe_usb.dll:04001DDC mov     [esp+38h], ecx
  70. tcpm_exe_usb.dll:04001DE0 mov     ecx, [eax+10h]
  71. tcpm_exe_usb.dll:04001DE3 mov     [esp+4Ch], ecx
  72. tcpm_exe_usb.dll:04001DE7 mov     ecx, [eax+14h]
  73. tcpm_exe_usb.dll:04001DEA mov     eax, [eax+1Ch]
  74. tcpm_exe_usb.dll:04001DED push    eax
  75. tcpm_exe_usb.dll:04001DEE push    offset aVolumeKeyCrc0x          ; "Volume key crc: 0x%lx"
  76. tcpm_exe_usb.dll:04001DF3 push    ds:dword_40419AC
  77. tcpm_exe_usb.dll:04001DF9 mov     [esp+50h], ecx
  78. tcpm_exe_usb.dll:04001DFD mov     [esp+38h], eax
  79. tcpm_exe_usb.dll:04001E01 call    near ptr unk_40013F8
  80. tcpm_exe_usb.dll:04001E06 mov     esi, [esp+2Ch]
  81. tcpm_exe_usb.dll:04001E0A xor     eax, eax
  82. tcpm_exe_usb.dll:04001E0C lea     edi, [esp+88h]
  83. tcpm_exe_usb.dll:04001E13 stosd
  84. tcpm_exe_usb.dll:04001E14 stosd
  85. tcpm_exe_usb.dll:04001E15 add     esp, 0Ch
  86. tcpm_exe_usb.dll:04001E18 stosd
  87. tcpm_exe_usb.dll:04001E19 push    60h ; '`'
  88. tcpm_exe_usb.dll:04001E1B pop     ecx
  89. tcpm_exe_usb.dll:04001E1C stosd
  90. tcpm_exe_usb.dll:04001E1D push    104h
  91. tcpm_exe_usb.dll:04001E22 lea     eax, [esp+2B208h]
  92. tcpm_exe_usb.dll:04001E29 push    eax
  93. tcpm_exe_usb.dll:04001E2A lea     edi, [esp+0A4h]
  94. tcpm_exe_usb.dll:04001E31 push    ebx
  95. tcpm_exe_usb.dll:04001E32 rep movsd
  96. tcpm_exe_usb.dll:04001E34 call    ds:off_4030038
  97. tcpm_exe_usb.dll:04001E3A lea     eax, [esp+2B204h]
  98. tcpm_exe_usb.dll:04001E41 push    eax
  99. tcpm_exe_usb.dll:04001E42 push    offset aExeFilePathS            ; "Exe file path: %S"
  100. tcpm_exe_usb.dll:04001E47 push    ds:dword_40419AC
  101. tcpm_exe_usb.dll:04001E4D call    near ptr unk_40013F8
  102. tcpm_exe_usb.dll:04001E52 mov     al, [esp+2B210h]
  103. tcpm_exe_usb.dll:04001E59 mov     [esp+24h], al
  104. tcpm_exe_usb.dll:04001E5D add     esp, 0Ch
  105. tcpm_exe_usb.dll:04001E60 lea     eax, [esp+632Ch]
  106. tcpm_exe_usb.dll:04001E67 push    eax
  107. tcpm_exe_usb.dll:04001E68 call    near ptr unk_40034E0
  108. tcpm_exe_usb.dll:04001E6D push    ebx
  109. tcpm_exe_usb.dll:04001E6E lea     esi, [esp+32C0h]
  110. tcpm_exe_usb.dll:04001E75 call    near ptr unk_4001000
  111. tcpm_exe_usb.dll:04001E7A lea     edi, [esp+2795Ch]
  112. tcpm_exe_usb.dll:04001E81 call    near ptr unk_400C2A0
  113. tcpm_exe_usb.dll:04001E86 mov     byte ptr [esp+2B528h], 3
  114. tcpm_exe_usb.dll:04001E8E mov     esi, ds:dword_40419AC
  115. tcpm_exe_usb.dll:04001E94 mov     eax, esi
  116. tcpm_exe_usb.dll:04001E96 lea     edx, [esp+248E8h]
  117. tcpm_exe_usb.dll:04001E9D call    near ptr unk_40018DE
  118. tcpm_exe_usb.dll:04001EA2 mov     eax, esi
  119. tcpm_exe_usb.dll:04001EA4 lea     edx, [esp+27B6Ch]
  120. tcpm_exe_usb.dll:04001EAB call    near ptr unk_40018DE
  121. tcpm_exe_usb.dll:04001EB0 mov     eax, esi
  122. tcpm_exe_usb.dll:04001EB2 lea     edx, [esp+32BCh]
  123. tcpm_exe_usb.dll:04001EB9 call    near ptr unk_40018DE
  124. tcpm_exe_usb.dll:04001EBE push    offset aEnumeratingDev          ; "Enumerating devices..."
  125. tcpm_exe_usb.dll:04001EC3 push    esi
  126. tcpm_exe_usb.dll:04001EC4 call    near ptr unk_40013F8
  127. tcpm_exe_usb.dll:04001EC9 pop     ecx
  128. tcpm_exe_usb.dll:04001ECA pop     ecx
  129. tcpm_exe_usb.dll:04001ECB push    ebx
  130. tcpm_exe_usb.dll:04001ECC push    dword ptr [esp+1Ch]
  131. tcpm_exe_usb.dll:04001ED0 lea     ecx, [esp+6334h]
  132. tcpm_exe_usb.dll:04001ED7 call    near ptr unk_4003830
  133. tcpm_exe_usb.dll:04001EDC mov     eax, [esp+93A4h]
  134. tcpm_exe_usb.dll:04001EE3 sub     eax, [esp+93A0h]
  135. tcpm_exe_usb.dll:04001EEA mov     ecx, 0CB8h
  136. tcpm_exe_usb.dll:04001EEF cdq
  137. tcpm_exe_usb.dll:04001EF0 idiv    ecx
  138. tcpm_exe_usb.dll:04001EF2 push    eax
  139. tcpm_exe_usb.dll:04001EF3 push    offset aEnumerationDon          ; "Enumeration done, found %d disks..."
  140. tcpm_exe_usb.dll:04001EF8 push    ds:dword_40419AC
  141. tcpm_exe_usb.dll:04001EFE mov     [esp+24h], eax
  142. tcpm_exe_usb.dll:04001F02 call    near ptr unk_40013F8
  143. tcpm_exe_usb.dll:04001F07 add     esp, 0Ch
  144. tcpm_exe_usb.dll:04001F0A mov     [esp+34h], ebx
  145. tcpm_exe_usb.dll:04001F0E cmp     [esp+18h], ebx
  146. tcpm_exe_usb.dll:04001F12 jle     loc_4002400   <b><------- Вот с этого места вылетаем на код по отображению MessageBox </b>





Ранг: 1053.6 (!!!!), 1078thx
Активность: 1.060.81
Статус: Участник

Создано: 28 марта 2013 14:30 · Поправил: reversecode
· Личное сообщение · #19

там есть обращение к драйверу и есть обращение к COM интерфейсу
Code:
  1. .text:100028D2 02C                 lea     ebx, aDeviceiocontro[ebp] ; "DeviceIoControl"
  2. .text:100028D8 02C                 push    ebx
  3. .text:100028D9 030                 push    ss:dword_100032E6[ebp]
  4. .text:100028DF 034                 call    _loadproc_sub_10002A40
  5. .text:100028E4 02C                 mov     ss:_f_DeviceIoControl[ebp], eax


Code:
  1. .rdata:10121CB0     rclsid          dd 0F6D90F11h           ; Data1
  2. .rdata:10121CB0                                             ; DATA XREF: _TCPM_sub_10005A20+67o
  3. .rdata:10121CB0                                             ; sub_10006300+51o
  4. .rdata:10121CB0                     dw 9C73h                ; Data2
  5. .rdata:10121CB0                     dw 11D3h                ; Data3
  6. .rdata:10121CB0                     db 0B3h, 2Eh, 0, 0C0h, 4Fh, 99h, 0Bh, 0B4h; Data4


Code:
  1. .text:10005D27 080                 mov     esi, offset aPleaseInsertTh ; "Please insert the original USB disk and"...

надпись выводится помоему после обращение к COM интрефейсу

трейсите вообщем

есть проверка crc32
Code:
  1. .text:100038E9 0DC                 xor     edx, ds:_crc32_dword_1014AD68[ecx*4]





Ранг: 681.5 (! !), 405thx
Активность: 0.420.21
Статус: Участник
ALIEN Hack Team

Создано: 28 марта 2013 14:40
· Личное сообщение · #20

unix3d
Приводите базу образа, с которой грузите библиотеку, иначе ваши листинги не позволяют попасть на то же место в коде, которое вы описываете. Или в иде выполните rebase на 10000000 (на базу образа из заголовка) и приведите кусок когда, где выводится сообщение, ещё раз. А то мне лично влом придумывать хитрожопые способы, как попасть на участок кода из ваших листингов.

-----
Stuck to the plan, always think that we would stand up, never ran.




Ранг: 3.5 (гость)
Активность: 0=0
Статус: Участник

Создано: 28 марта 2013 16:59 · Поправил: unix3d
· Личное сообщение · #21

Exe шник самой программы, какой версией TrusCont TSFD Protection он накрыт затрудняюсь ответить
http://rghost.ru/44841454
Приведённая Dll взята с версии 2.4 с офф сайта
Code:
  1. .itext:0082EF09                 call    sub_82F046 <- Вызов первой процедуры проверки


EAX = FFFFFFFF - Нужны права админа
EAX = 0 проверка непройдена
другое значение скорее всего буква диска USB

Code:
  1. .itext:0082EF0E                 mov     [ebp+24833E5h], eax
  2. .itext:0082EF14                 mov     [ebp+248315Ah], eax
  3. .itext:0082EF1A                 cmp     eax, 0
  4. .itext:0082EF1D                 jz      short loc_82EF4B <- Прыжок на вызов MessageBox (Please Insert original USB disk)

Code:
  1. .itext:0082EF1F                 cmp     eax, 0FFFFFFFFh
  2. .itext:0082EF22                 jz      short loc_82EF26 <- Прыжок на вызов MessageBox о нехватки прав

Code:
  1. .itext:0082EF24                 jmp     short loc_82EF70


Code:
  1. .itext:0082EF26 loc_82EF26:                             ; CODE XREF: start+208j
  2. .itext:0082EF26                 push    10h
  3. .itext:0082EF28                 lea     eax, [ebp+24833F0h]
  4. .itext:0082EF2E                 push    eax
  5. .itext:0082EF2F                 lea     eax, [ebp+24833FEh]
  6. .itext:0082EF35                 push    eax
  7. .itext:0082EF36                 push    0
  8. .itext:0082EF38                 call    dword ptr [ebp+24833DDh]
  9. .itext:0082EF3E                 mov     eax, 1F5h
  10. .itext:0082EF43                 push    eax
  11. .itext:0082EF44                 call    dword ptr [ebp+24833E1h]
  12. .itext:0082EF4A                 int     3               ; Trap to Debugger
  13. .itext:0082EF4B
  14. .itext:0082EF4B loc_82EF4B:                             ; CODE XREF: start+203j
  15. .itext:0082EF4B                 push    10h
  16. .itext:0082EF4D                 lea     eax, [ebp+248318Eh]
  17. .itext:0082EF53                 push    eax
  18. .itext:0082EF54                 lea     eax, [ebp+24831DEh]
  19. .itext:0082EF5A                 push    eax
  20. .itext:0082EF5B                 push    0
  21. .itext:0082EF5D                 call    dword ptr [ebp+24833D9h]
  22. .itext:0082EF63                 mov     eax, 1F4h
  23. .itext:0082EF68                 push    eax
  24. .itext:0082EF69                 call    dword ptr [ebp+24833E1h]
  25. .itext:0082EF6F                 int     3               ; Trap to Debugger
  26. .itext:0082EF70
  27. .itext:0082EF70 loc_82EF70:                             ; CODE XREF: start+20Aj
  28. .itext:0082EF70                 lea     ebx, [ebp+248314Ah]
  29. .itext:0082EF76                 push    ebx
  30. .itext:0082EF77                 mov     eax, [ebp+24833B1h]
  31. .itext:0082EF7D                 push    eax
  32. .itext:0082EF7E                 mov     eax, [ebp+24833A9h]
  33. .itext:0082EF84                 push    eax
  34. .itext:0082EF85                 mov     eax, [ebp+24833B5h]
  35. .itext:0082EF8B                 push    eax
  36. .itext:0082EF8C                 mov     eax, [ebp+24833B9h]
  37. .itext:0082EF92                 push    eax
  38. .itext:0082EF93                 mov     eax, [ebp+24833BDh]
  39. .itext:0082EF99                 push    eax
  40. .itext:0082EF9A                 mov     eax, [ebp+24833E5h]
  41. .itext:0082EFA0                 add     eax, [ebp+248315Eh]
  42. .itext:0082EFA6                 push    eax
  43. .itext:0082EFA7                 call    sub_82F42A <- Вызов второй процедуры проверки


Code:
  1. .itext:0082F42A push    ebp
  2. .itext:0082F42B mov     ebp, esp
  3. .itext:0082F42D sub     esp, 20h
  4. ;---------------------------------- часть кода опущена
  5. .itext:0082F6A1 loc_82F6A1:                             ; CODE XREF: sub_82F42A+1EDj
  6. .itext:0082F6A1 push    [ebp+arg_18]
  7. .itext:0082F6A4 mov     eax, [ebp+var_20]
  8. .itext:0082F6A7 push    1
  9. .itext:0082F6A9 push    edi
  10. .itext:0082F6AA add     eax, edi
  11. .itext:0082F6AC call    eax <- вызов Dll tcpm_exe_usb.dll 
  12. .itext:0082F6AE mov     [ebp+var_14], edi




Ранг: 419.0 (мудрец), 647thx
Активность: 0.460.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:
  1. 0082F1B5      33C0          XOR EAX,EAX
  2. 0082F1B7      F3:A7         REPE CMPS DWORD PTR DS:[ESI],DWORD PTR ES:[EDI] //D2 52 35 6E 51 C3 71 44 93 14 C1 46 F8 8C E9 01 FF
  3. 0082F1B9      0F85 8B000000 JNE 0082F24A
  4.  
  5.  
  6. 0082F20E      8BF8          MOV EDI,EAX
  7. 0082F210      33D2          XOR EDX,EDX
  8. 0082F212      F3:A7         REPE CMPS DWORD PTR DS:[ESI],DWORD PTR ES:[EDI] //97 90 36 1B 7B B8 8D 49 8D FF 64 74 73 19 5B 06
  9. D2 52 35 6E 51 C3 71 44 93 14 C1 46 F8 8C E9 01
  10. FF
  11. 0082F214      74 4E         JE SHORT 0082F264

Короче в EAX конечный результат от VirtualAlloc с определенным размером.



Ранг: 3.5 (гость)
Активность: 0=0
Статус: Участник

Создано: 28 марта 2013 18:20
· Личное сообщение · #23

Нет привязки к железу как токовой нету. С оригинальный USB носителя программа запускается на любом коме. Скорее всего привязка к USB а вот как он высчитывает правильный носитель пока неизвестно.... есть догадки что в разделах на флешки сидит последовательность в которой скорее всего зашита модель той флешки которую считать верной!!!



Ранг: 419.0 (мудрец), 647thx
Активность: 0.460.51
Статус: Участник
"Тибериумный реверсинг"

Создано: 28 марта 2013 18:38
· Личное сообщение · #24

unix3d
Ну все правильно ( просто не принял во внимание,что usb-флешка). Последовательность(сигнатура) и подозрения, что адреса функций(возможно код), которые нужно выполнить.



Ранг: 3.5 (гость)
Активность: 0=0
Статус: Участник

Создано: 28 марта 2013 18:54
· Личное сообщение · #25

возможно, но даже после поблочного считывания оригинальной флешки в фаил и заливка этого дампа на другую флешку сигнатуры и возможно код так же были бы на флешки клоне и они бы выполнялись, но этого не происходит. все больше схожусь вомнении что на флешки оригинале возможно зашиты данные технические о самой флешки! на столе 20 флешок со схожеми контролерами и даже 3 из них на том же самом контролере и с тем же самым модулем памяти. заливка дампа на эти флешки результата не дала. Продолжаю трейсить код этой библиотеки может где то в нем разгадка этого "протектора". в самой библиотеки есть противо копировальные функции.



Ранг: 419.0 (мудрец), 647thx
Активность: 0.460.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




Ранг: 681.5 (! !), 405thx
Активность: 0.420.21
Статус: Участник
ALIEN Hack Team

Создано: 28 марта 2013 20:33 · Поправил: ARCHANGEL
· Личное сообщение · #27

unix3d
Во-первых, непонятно, почему вы называете этот вид защиты "протектором". Никакого протектора там нет, код неупакован, просто написан в так называемом shellcode-стиле для того, чтоб быть базонезависимым. Запутывания (обфускации) я тоже никакой не увидел.

Во-вторых, по делу. Внутри первой функции проверки:

Code:
  1. (.itext:0082EF09                 call    sub_82F046 <- Вызов первой процедуры проверки)


оригинальной флэхи основной является работа кода, начинающегося внутри sub_82F366. Конкретнее:

Code:
  1. .itext:0082F407 push    eax             ; lpBytesReturned
  2. .itext:0082F408 push    50h             ; nOutBufferSize
  3. .itext:0082F40A lea     eax, [esp+6Ch+InBuffer]
  4. .itext:0082F40E push    eax             ; lpOutBuffer
  5. .itext:0082F40F push    50h             ; nInBufferSize
  6. .itext:0082F411 push    eax             ; lpInBuffer
  7. .itext:0082F412 push    IOCTL_SCSI_PASS_THROUGH_DIRECT ; dwIoControlCode
  8. .itext:0082F417 push    [ebp+hDevice]   ; hDevice
  9. .itext:0082F41A
  10. .itext:0082F41A loc_82F41A:             ; DeviceIoControl
  11. .itext:0082F41A call    [ebp+arg_18]


Как уже заметил ELF_7719116, флешковому устройству посылаются запросы IRP_MJ_DEVICE_CONTROL с dwIoControlCode == IOCTL_SCSI_PASS_THROUGH_DIRECT. --> Подробнее <-- Как конкретно обрабатывается этот запрос на стороне драйверов флешки и кто там их обрабатывает, мини-порт, фильтр или же драйвер устройства - я х.з. Далее результат работы этого кода сравнивается ещё здесь:

Code:
  1. .itext:0082F20B                 push    4
  2. .itext:0082F20D                 pop     ecx
  3. .itext:0082F20E                 mov     edi, eax
  4. .itext:0082F210                 xor     edx, edx
  5. .itext:0082F212                 repe cmpsd


Но, что хуже, от результатов выходного буфера этого вызова зависят параметры (в частности, размер выделяемой области памяти) для вызова API:

Code:
  1. .itext:0082F296                 mov     eax, [ebp+var_14]
  2. .itext:0082F299                 mov     edi, [esi+eax+0]
  3. .itext:0082F29C                 add     eax, 4
  4. .itext:0082F29F                 mov     eax, [eax+esi+0]
  5. .itext:0082F2A2                 lea     eax, [eax+ebx-1]
  6. .itext:0082F2A6                 xor     edx, edx
  7. .itext:0082F2A8                 div     ebx
  8. .itext:0082F2AA                 push    4               ; flProtect
  9. .itext:0082F2AC                 push    3000h           ; flAllocationType
  10. .itext:0082F2B1                 mov     esi, eax
  11. .itext:0082F2B3                 imul    esi, ebx
  12. .itext:0082F2B6                 push    esi             ; dwSize
  13. .itext:0082F2B7                 push    0               ; lpAddress
  14. .itext:0082F2B9 call    dword ptr [ebp+20h] ; VirtualAlloc


Тем не менее, всё не так плохо. У вас же есть оригинальная флэшка. Значит надо написать логгер, а потом эмулятор. Логгер будет перехватывать DeviceIoControl, идущие к устройству флэшки, и записывать входные/выходные параметры. Ещё надо будет перехватывать CreateFile и CloseHandle, чтоб не перехватывать то, что к работе с флешкой не относится. Поработайте с оригинальной флэшкой подольше, потом пишите эмулятор. Слово это громкое, но на практике будет этот эмулятор подставлять результаты перехвата логгера. Флешка, как вы понимаете, тогда будет не нужна совсем.

Что касается конкретно этой первой функции проверки, то всё закончится вот здесь:

Code:
  1. .itext:0082F2B9 call    dword ptr [ebp+20h] ; VirtualAlloc
  2. .itext:0082F2BC mov     ecx, eax
  3. .itext:0082F2BE test    ecx, ecx
  4. .itext:0082F2C0 mov     [ebp+Answer], ecx // понятно, что адрес не должен быть нулевым


А, как вы выражаетесь, "Нужны права админа" для осуществления открытия девайсов дисков через CreateFile.

-----
Stuck to the plan, always think that we would stand up, never ran.


| Сообщение посчитали полезным: unix3d, plutos

Ранг: 419.0 (мудрец), 647thx
Активность: 0.460.51
Статус: Участник
"Тибериумный реверсинг"

Создано: 28 марта 2013 21:20
· Личное сообщение · #28

Ну вот, пришел ARCHANGEL, прочитал, продебажил, не выдержал и все интересное сразу выложил
возможно, там просто OEP зашифрована(код программы не зашифрован и написан на делфи) и переход(расшифровка) в нее осуществляется с подачи данных оригинального usb-носителя.

| Сообщение посчитали полезным: unix3d

Ранг: 3.5 (гость)
Активность: 0=0
Статус: Участник

Создано: 28 марта 2013 22:02
· Личное сообщение · #29

я просто в шоке, мне реально нужно многому учится ARCHANGEL огромное спасибо за обьяснение. ELF_7719116 мой респект за поддержку и за разьеснение всего. Огромное СПАСИБО за то что Вы удили время моему вопросу, а точнее просьбе о помоще! Я недавно занимаюсь реверсингом! и это для меня будет уроком!



Ранг: 315.1 (мудрец), 631thx
Активность: 0.30.33
Статус: Модератор
CrackLab

Создано: 28 марта 2013 22:16 · Поправил: SReg
· Личное сообщение · #30

ARCHANGEL пишет:
Ещё надо будет перехватывать CreateFile и CloseHandle

http://exelab.ru/f/action=vthread&forum=6&topic=15420&page=0#12
зы на виртуалбоксе кстати не взлетел, нтстатус 0xC0000039, а на реальной тачке воркает
зы2
с хаспом у меня фокус не прошел, запросы разные, пошифрованы, код обфусцирован. сама дровина эмуля под вмпротом.

| Сообщение посчитали полезным: ARCHANGEL, unix3d
. 1 . 2 . >>
 eXeL@B —› Протекторы —› Вопрос знатокам кто сталкивался с TrusCont TSFD Protection Toolkit
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати