Русский / Russian English / Английский

Сейчас на форуме: newbie_raw (+1 невидимый пользователь)
 · Начало · Статистика · Регистрация · Поиск · ПРАВИЛА ФОРУМА · Язык · RSS ·

 eXeL@B —› Основной форум —› Vmprotect. Хитрая защита от отладки.
<< . 1 . 2 . 3 . 4 . 5 . >>
Посл.ответ Сообщение


Ранг: 331.1 (мудрец)
Статус: Участник

Создано: 24 мая 2017 20:14 · Поправил: Vamit New!
Цитата · Личное сообщение · #1

При реверсе одной проги встретил хитрую защиту от отладки: она не позволяет работать проге под дебагером, после F9 терминация, приаттачиться к работающей то же нельзя - сразу терминация. Приложение накрыто последним Vmprotect, все функции защиты также под протектором, основные виртуализованы, остальные обфусцированы, а всего их более 200шт. Терминирует именно защита, а не вмпрот. В TLS сидят 2 каллбака защиты, первый из них есть в листинге. Дебаг работает только до первого каллбака, тут можно снять дамп проги и девиртуализовать вмпрот. А суть задачи такова: прога посылает запрос на сервер, в котором одним из куков является состояние защиты (32 бита), проэмулировать мне его не удалось и сервак не отвечает.
Прошу любые идеи как победить, или идентифицировать защиту, она явно не самописная, и прилинкована к проге из какой-то либы.
Вот листинг нескольких функций ядра защиты, вытащенных из под Vmprotect:
Code:
  1. .text:004894F0 sub_4894F0      proc near
  2. .text:004894F0                 dec     esp
  3. .text:004894F1                 mov     edx, ecx
  4. .text:004894F3                 mov     eax, 0Ah
  5. .text:004894F8                 syscall
  6. .text:004894FA                 retn
  7. .text:004894FA sub_4894F0      endp
  8.  
  9. .text:004894FB sub_4894FB      proc near
  10. .text:004894FB arg_0           = dword ptr  4
  11. .text:004894FB
  12. .text:004894FB                 push    0
  13. .text:004894FD                 push    4
  14. .text:004894FF                 push    [esp+8+arg_0]
  15. .text:00489503                 push    7
  16. .text:00489505                 push    0FFFFFFFFh
  17. .text:00489507                 mov     eax, 9Ah
  18. .text:0048950C                 push    0
  19. .text:0048950E                 call    sub_489522
  20. .text:00489513                 add     esp, 18h
  21. .text:00489516                 retn
  22. .text:00489516 sub_4894FB      endp
  23.  
  24. .text:00489517 sub_489517      proc near
  25. .text:00489517                 dec     esp
  26. .text:00489518                 mov     edx, ecx
  27. .text:0048951A                 mov     eax, 16h
  28. .text:0048951F                 syscall
  29. .text:00489521                 retn
  30. .text:00489521 sub_489517      endp
  31.  
  32. .text:00489522 sub_489522      proc near
  33. .text:00489522                 mov     edx, esp
  34. .text:00489524                 sysenter
  35. .text:00489526                 retn
  36. .text:00489526 sub_489522      endp
  37.  
  38. .text:00489527 sub_489527      proc near
  39. .text:00489527                 push    0
  40. .text:00489529                 push    0
  41. .text:0048952B                 push    11h
  42. .text:0048952D                 push    0FFFFFFFEh
  43. .text:0048952F                 push    0
  44. .text:00489531                 mov     eax, 0E5h
  45. .text:00489536                 call    sub_489522
  46. .text:0048953B                 add     esp, 14h
  47. .text:0048953E                 retn
  48. .text:0048953E sub_489527      endp
  49.  
  50. .text:0048953F sub_48953F      proc near
  51. .text:0048953F                 mov     eax, offset sub_489517
  52. .text:00489544                 cmp     dword ptr [eax], 0B8D18B4Ch
  53. .text:0048954A                 jnz     short locret_489587
  54. .text:0048954C                 add     eax, 4
  55. .text:0048954F                 cmp     dword ptr [eax], 16h
  56. .text:00489552                 jnz     short locret_489587
  57. .text:00489554                 mov     eax, offset sub_4894F0
  58. .text:00489559                 cmp     dword ptr [eax], 0B8D18B4Ch
  59. .text:0048955F                 jnz     short locret_489587
  60. .text:00489561                 add     eax, 4
  61. .text:00489564                 cmp     dword ptr [eax], 0Ah
  62. .text:00489567                 jnz     short locret_489587
  63. .text:00489569                 mov     eax, offset sub_489522
  64. .text:0048956E                 cmp     dword ptr [eax], 340FD48Bh
  65. .text:00489574                 jnz     short locret_489587
  66. .text:00489576                 mov     eax, offset sub_489595
  67. .text:0048957B                 cmp     dword ptr [eax], 99C32DCDh
  68. .text:00489581                 jnz     short locret_489587
  69. .text:00489583                 mov     ax, 0
  70. .text:00489587 locret_489587:
  71. .text:00489587                 retn
  72. .text:00489587 sub_48953F      endp
  73.  
  74. .text:00489595 sub_489595      proc near
  75. .text:00489595                 int     2Dh
  76. .text:00489597                 retn
  77. .text:00489597 sub_489595      endp
  78.  
  79. .text:0048A845 sub_48A845      proc near
  80. .text:0048A845 arg_4           = byte ptr  8
  81. .text:0048A845
  82. .text:0048A845                 cmp     dword_C45424, 0
  83. .text:0048A84C                 jnz     short loc_48A854
  84. .text:0048A84E loc_48A84E:
  85. .text:0048A84E                 mov     edx, esp
  86. .text:0048A850 loc_48A850:
  87. .text:0048A850                 sysenter
  88. .text:0048A852                 jmp     short locret_48A85A
  89. .text:0048A854 loc_48A854:
  90. .text:0048A854                 lea     edx, [esp+arg_4]
  91. .text:0048A858                 int     2Eh
  92. .text:0048A85A locret_48A85A:
  93. .text:0048A85A                 retn
  94. .text:0048A85A sub_48A845      endp
  95.  
  96. .text:0048A877 sub_48A877      proc near
  97. .text:0048A877                 mov     eax, offset loc_48A850
  98. .text:0048A87C                 cmp     word ptr [eax], 340Fh
  99. .text:0048A881                 jnz     short locret_48A89E
  100. .text:0048A883                 mov     eax, offset loc_48A854
  101. .text:0048A888                 cmp     dword ptr [eax], 824548Dh
  102. .text:0048A88E                 jnz     short locret_48A89E
  103. .text:0048A890                 add     eax, 4
  104. .text:0048A893                 cmp     word ptr [eax], 2ECDh
  105. .text:0048A898                 jnz     short locret_48A89E
  106. .text:0048A89A                 mov     ax, 0
  107. .text:0048A89E locret_48A89E:
  108. .text:0048A89E                 retn
  109. .text:0048A89E sub_48A877      endp
  110.  
  111.  
  112. .text:0062C6F0 TlsCallback_1   proc near
  113. .text:0062C6F0 Reason          = dword ptr  0Ch
  114. .text:0062C6F0
  115. .text:0062C6F0                 push    ebp
  116. .text:0062C6F1                 mov     ebp, esp
  117. .text:0062C6F3                 and     esp, 0FFFFFFF8h
  118. .text:0062C6F6                 cmp     [ebp+Reason], 1
  119. .text:0062C6FA                 push    ebx
  120. .text:0062C6FB                 push    esi
  121. .text:0062C6FC                 push    edi
  122. .text:0062C6FD                 jz      short loc_62C708
  123. .text:0062C6FF                 pop     edi
  124. .text:0062C700                 pop     esi
  125. .text:0062C701                 pop     ebx
  126. .text:0062C702                 mov     esp, ebp
  127. .text:0062C704                 pop     ebp
  128. .text:0062C705                 retn    0Ch
  129. .text:0062C708 loc_62C708:
  130. .text:0062C708                 push    offset TlsCallback_2
  131. .text:0062C70D                 call    ?????                  ;packet call
  132. .text:0062C712                 add     esp, 4
  133. .text:0062C715                 test    eax, eax
  134. .text:0062C717                 jnz     short loc_62C71E
  135. .text:0062C719                 call    ?????                  ;packet call
  136. .text:0062C71E loc_62C71E:
  137. .text:0062C71E                 push    ebx
  138. .text:0062C71F                 xor     eax, eax
  139. .text:0062C721                 lea     edi, [ebp+4]
  140. .text:0062C724                 cdq
  141. .text:0062C725                 add     edi, 8
  142. .text:0062C728                 mov     ecx, 100h
  143. .text:0062C72D                 rep stosd
  144. .text:0062C72F                 mov     edi, dword_C93D70
  145. .text:0062C735                 mov     ecx, edi
  146. .text:0062C737                 mov     ebx, dword_C93D74
  147. .text:0062C73D                 mov     esi, dword_C93D78
  148. .text:0062C743                 mov     edx, dword_C93D7C
  149. .text:0062C749                 mov     dword_C93D74, edx
  150. .text:0062C74F                 mov     eax, ebx
  151. .text:0062C751                 shld    eax, ecx, 17h
  152. .text:0062C755                 shl     ecx, 17h
  153. .text:0062C758                 xor     edi, ecx
  154. .text:0062C75A                 xor     ebx, eax
  155. .text:0062C75C                 mov     dword_C93D70, esi
  156. .text:0062C762                 mov     eax, esi
  157. .text:0062C764                 mov     ecx, edx
  158. .text:0062C766                 shrd    eax, ecx, 9
  159. .text:0062C76A                 shr     ecx, 9
  160. .text:0062C76D                 xor     ecx, ebx
  161. .text:0062C76F                 xor     eax, edi
  162. .text:0062C771                 shrd    eax, ecx, 11h
  163. .text:0062C775                 shr     ecx, 11h
  164. .text:0062C778                 xor     eax, esi
  165. .text:0062C77A                 push    0
  166. .text:0062C77C                 xor     eax, edi
  167. .text:0062C77E                 xor     ecx, edx
  168. .text:0062C780                 xor     ecx, ebx
  169. .text:0062C782                 sub     edx, edx
  170. .text:0062C784                 mov     dword_C93D78, eax
  171. .text:0062C789                 mov     dword_C93D7C, ecx
  172. .text:0062C78F                 add     eax, esi
  173. .text:0062C791                 mov     ecx, 0FFFh
  174. .text:0062C796                 div     ecx
  175. .text:0062C798                 mov     dword ptr [edx+1], 18BBB819h
  176. .text:0062C79F                 mov     ecx, offset unk_C93CB0
  177. .text:0062C7A4                 call    ?????                  ;packet call (constructor)
  178. .text:0062C7A9                 pop     edi
  179. .text:0062C7AA                 pop     esi
  180. .text:0062C7AB                 pop     ebx
  181. .text:0062C7AC                 mov     esp, ebp
  182. .text:0062C7AE                 pop     ebp
  183. .text:0062C7AF                 retn    0Ch
  184. .text:0062C7AF TlsCallback_1   endp




Ранг: 196.0 (ветеран)
Статус: Участник

Создано: 31 мая 2017 19:15 New!
Цитата · Личное сообщение · #2

SegFault пишет:

наслаждаюсь твоей беспомощностью


К чему столько желчи?




Ранг: 331.1 (мудрец)
Статус: Участник

Создано: 31 мая 2017 19:15 New!
Цитата · Личное сообщение · #3

SegFault пишет:
наслаждаюсь твоей беспомощностью

Иди мимо, нечего сказать по делу - молчи... Беспомощность у того кто ничего не делает или тролит от нечего делать, а я уже более 50 фунок из под вмпрота восстановил.

difexacaw пишет:
По нормальному это запускается под визором и никаких ваших проблем нет.

Дак запусти, у тебя же есть визор, и вытащи состояние защиты, которое отправляется на сервер.

SegFault пишет:
стало быть ему нужно готовое решение

Готовое решение тут никто не сделает.




Ранг: 331.5 (мудрец)
Статус: Участник

Создано: 31 мая 2017 19:31 New!
Цитата · Личное сообщение · #4

Vamit

> Дак запусти, у тебя же есть визор

Я вчера перечитал топик, хотел найти линк на семпл, не нашёл его.

На счёт серверов и сетевых запросов я хз.




Ранг: 310.0 (мудрец)
Статус: Участник
Advisor

Создано: 31 мая 2017 19:56 New!
Цитата · Личное сообщение · #5

помню что свип бряки ставит, потом сабж рестартит.
декомпилим только с еп, или с аттача так же можно?




Ранг: 331.5 (мудрец)
Статус: Участник

Создано: 31 мая 2017 20:08 · Поправил: difexacaw New!
Цитата · Личное сообщение · #6

Bronco

С верифера только, что бы не пропустить инициализацию нтлдр - дллмайн тлс етц. Но как помню это же всё XP и унылое говно по вашему, можно найти топики. Вот интересно спустя столько лет вы вернулись к этому




Ранг: 310.0 (мудрец)
Статус: Участник
Advisor

Создано: 31 мая 2017 20:35 New!
Цитата · Личное сообщение · #7

difexacaw пишет:
Вот интересно спустя столько лет вы вернулись к этому

с чего такие выводы?
хрюшу забыл уже когда юзал, и не помню как выглядит.
К сабжу можно приатачиться, но до создания тредгварда.
Но для этого петлю надо ставить, и возможно из-за неё црц из массива найти и пересчитать.
Хз может и для старта с еп, требуется отловить проверку целостности и сделать то же самое.
После того как этот поток создадут, прицепиться можно только после того как он отпустит, обычно это после инит.
Но вопрос не просто в запуске под отладчиком.
или не заметил акцент?




Ранг: 62.3 (постоянный)
Статус: Участник

Создано: 31 мая 2017 21:23 · Поправил: Haoose-GP New!
Цитата · Личное сообщение · #8

difexacaw пишет:
хотел найти линк на семпл, не нашёл его.

Оно? https://exelab.ru/f/index.php?action=vthread&forum=1&topic=24749&page=0#13

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



Ранг: 331.1 (мудрец)
Статус: Участник

Создано: 31 мая 2017 22:16 · Поправил: Vamit New!
Цитата · Личное сообщение · #9

Bronco пишет:
помню что свип бряки ставит, потом сабж рестартит.декомпилим только с еп, или с аттача так же можно?

Это было давно, сейчас он работает полностью в статике, хоть с аттача, хоть с детача, хоть с еп, хоть с любого другого места, главное чтоб образ проги был в памяти распакованный от вмпрота. Ни одного байта кода он не исполняет.
или не заметил акцент?
Да надо-то всего стопануться в одном месте и вытащить 4 байта данных (состояние зашиты, которое отправляется на сервер). В памяти этих байт нет, возвращаемое функой значение сразу криптуется и пихается в пакет. Снифером тут ничего не отловить, все пакеты кодируются рандомным сессионным ключом, даже если случайно что-то и поймаешь, то раскодировать без ключа невозможно.




Ранг: 331.5 (мудрец)
Статус: Участник

Создано: 31 мая 2017 22:21 New!
Цитата · Личное сообщение · #10

Vamit

Покажите что у вас есть, какую работу вы выполнили. Хотя бы лог по сервисам, это первое что нужно мониторить.




Ранг: 310.0 (мудрец)
Статус: Участник
Advisor

Создано: 31 мая 2017 22:34 New!
Цитата · Личное сообщение · #11

Vamit пишет:
Да надо-то всего стопануться в одном месте и вытащить 4 байта данных

Обычно после оеп (или вм_оеп) и инит, этот тред килляют.
В основном он для защиты служебного кода, и не отделяйте его от общего дерьмопрота.
Кроме как под ним, тредгвард не встречал пока ни разу.
Хрюши нет под рукой(это к слову о той среде, о которой писал выше), но под вин10 у Ольки те же бокарезы, что по видимуму и у Вас на ХР. Я о недоступности образа.
Под х64dbg такого нет.
Вникать глубже пока не могу, занят другим.
По црц, я Вам в приватной переписке объяснял.




Ранг: 331.1 (мудрец)
Статус: Участник

Создано: 31 мая 2017 22:45 · Поправил: Vamit New!
Цитата · Личное сообщение · #12

difexacaw пишет:
Хотя бы лог по сервисам, это первое что нужно мониторить.

Логов у меня нет, есть только восстановленный код примерно 50 фунок защиты, причем большинство из них это крипт/декрипт, в данных защиты нет ни одного байта в чистом виде, в памяти всё закриптовано рандомным ключом, который уникален для каждой единицы данных.
Структура каждой единицы данных такова:
-8 байт хеш, куда может быть завернут byte, word, dword, qword (на каждый размер свой алгоритм)
-16 байт рандомный ключ, получают его через rdtsc

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




Ранг: 331.5 (мудрец)
Статус: Участник

Создано: 31 мая 2017 22:53 New!
Цитата · Личное сообщение · #13

Vamit

Ладно я сгрузил, завтра гляну, отпишу если сеть не отключат(иначе смогу отписать после 10-го числа).

Если бы вы чётко описали проблему(задачу), то возможно было бы подобрать необходимые моторы и прочие инструменты для быстрого решения. Вы так конкретно ничего не описали.



Ранг: 64.9 (постоянный)
Статус: Участник

Создано: 01 июня 2017 00:21 New!
Цитата · Личное сообщение · #14

difexacaw
> задачу
шоб от бряков не падал дебагер, даж на XP можно!
найди нам клерк шо стронг-дров пропускает!




Ранг: 331.5 (мудрец)
Статус: Участник

Создано: 01 июня 2017 00:30 · Поправил: difexacaw New!
Цитата · Личное сообщение · #15

hash87szf

Чем выше версия оси, тем там толще механизмы и ты замучаешься что то разбирать, особенно с включённой защитой и прочими вещами. И что бы запустить какой то софт, который робит в XP, вам друг мой нужно будет немного приложить усилий, а может быть и много.

Я не юзаю стронг, я же говорил, что эти несколько плагов уг. Одна годность что мышью в два клика из меню можно заюзать. Но аналогично как автор топика говорил - это фича не плага, а отладчика =)



Ранг: 64.9 (постоянный)
Статус: Участник

Создано: 01 июня 2017 00:43 · Поправил: hash87szf New!
Цитата · Личное сообщение · #16

да ладно, илита!
заведи софт где и как угодно, шоб от бряков дебагера не падал
ну или на худой конец, раскажи почему и как от hw бряков рубится
всё шняга то в этом, drx то не во многих местах проверищь




Ранг: 331.1 (мудрец)
Статус: Участник

Создано: 01 июня 2017 11:27 · Поправил: Vamit New!
Цитата · Личное сообщение · #17

Начальная инициализация данных защиты.
Все данные рандомно криптованы, как описывалось выше.
00C93CB0: 0
00C93D10: DllHandle - хендл при вызове TLS callback
00C93D28: 0
00C94350: состояние fs:[C0] FastSysCall for x64
00C943C8: наличие функции "wine_get_version" в либе L"ntdll.dll"
00C94418: 0
00C943E8: 0
00C94400: 0
00C94430: 0
-----------------
не криптовано
00C93D70: qword, (eax из rdtsc) | (0 << 32)
00C93D78: qword, 00C93D70 >> 9
-----------------
00C93D80: fs:[30] PEB address
00C93D98: fs:[18] TEB address
далее заполняется табличка именами следующих функций:
NtQueryInformationProcess
NtQuerySystemInformation
NtSetInformationThread
NtFreeVirtualMemory
NtQueryVirtualMemory
NtAllocateVirtualMemory
NtProtectVirtualMemory
NtWaitForSingleObject
NtQueryInformationFile
NtSetInformationFile
NtQueryFullAttributesFile
NtRemoveProcessDebug
NtTerminateProcess
NtDeviceIoControlFile
NtFsControlFile
NtWriteVirtualMemory
NtCreateFile
NtFlushInstructionCache
NtReadVirtualMemory
NtReadFile
NtWriteFile
NtClose
NtDelayExecution
NtMapViewOfSection
NtUnmapViewOfSection
NtCreateSection
NtCreateDebugObject
LdrGetDllHandle
LdrGetProcedureAddress
NtQueryObject
LdrLoadDll
затем если (FastSysCall for x64 != 0) && (Wine not present) идет большая ветка инициализаций под Вин х64, её я пропускаю и разбирать не буду
далее пошли манипуляции с записанными именами функций из ntdll.dll
пока всё, девиртуализую дальше...

| Сообщение посчитали полезным: Bronco, ==DJ==[ZLO], mak, sendersu, v00doo



Ранг: 331.5 (мудрец)
Статус: Участник

Создано: 02 июня 2017 03:21 · Поправил: difexacaw New!
Цитата · Личное сообщение · #18

Vamit

Посмотрел ваш семпл. Оно работает под олли, по адресу возврата из senter обнаруживается этот код:

Code:
  1. 00380000                B8 9A000000     mov eax,0x9A
  2. 00380005                BA 0003FE7F     mov edx,0x7FFE0300
  3. 0038000A                68 14003800     push 0x380014
  4. 0038000F                8BD4            mov edx,esp
  5. 00380011                0F34            sysenter
  6. 00380013                C3              ret
  7. 00380014                C2 1400         ret 0x14
  8. 00380017                03FE            add edi,esi
  9. 00380019                7F FF           jg short 0038001A
  10. 0038001B                12C2            adc al,dl
  11. 0038001D                14 00           adc al,0x0
  12. 0038001F                90              nop
  13. 00380020                B8 9C000000     mov eax,0x9C
  14. 00380025                BA 0003FE7F     mov edx,0x7FFE0300
  15. 0038002A                FF12            call dword ptr ds:[edx]
  16. 0038002C                C2 1400         ret 0x14
  17. 0038002F                90              nop
  18. 00380030                B8 9D000000     mov eax,0x9D
  19. 00380035                BA 0003FE7F     mov edx,0x7FFE0300
  20. 0038003A                FF12            call dword ptr ds:[edx]
  21. 0038003C                0000            add byte ptr ds:[eax],al
  22. 0038003E                0000            add byte ptr ds:[eax],al]


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

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

Что у вас не получается с отладкой я хз.

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



Ранг: 331.1 (мудрец)
Статус: Участник

Создано: 02 июня 2017 09:29 · Поправил: Vamit New!
Цитата · Личное сообщение · #19

difexacaw пишет:
Оно работает под олли

Что значит работает под Олли? Да, прогу под ольком можно запустить, стартовав с ЕП, а не с system bp, или приаттачиться к уже работающей, но хардбряки в ней уже не работают. Если тормознуть Паузой F12, то при последующей попытке продолжить работу получаем терминацию.
Хардбряки норм работают до первого ТЛС каллбака защиты (0062С6F0) и внутри него до определенного места, а на втором ТЛС каллбаке защиты (00619AB0) хардбряк уже не работает, следовательно механизм их блокировки сидит в первом ТЛС защиты.
Попробуйте поставить хардбряк на адрес открытого кода 0075DE70 (100% вызывается из CWinApp::InitInstance) и стопануться на нем, причем не обязательно под олькой, приветствуется любой дебагер, у кого это получиться - тому пиво и даже могу девиртуализовать что-то полезное для него...))
База приведенных адресов под ВинХР 0х00400000.

По ходу разбора защиты возник вопрос, что находится в PEB:[0xAC]? По Майкрософту это смещение попадает внутрь PVOID Reserved5[52];, а защита оттуда читает WORD.




Ранг: 1047.5 (!!!!)
Статус: Участник

Создано: 02 июня 2017 10:04 New!
Цитата · Личное сообщение · #20

Vamit пишет:
По ходу разбора защиты возник вопрос, что находится в PEB:[0xAC]? По Майкрософту это смещение попадает внутрь PVOID Reserved5[52];, а защита оттуда читает WORD.

http://www.mpgh.net/forum/showthread.php?t=863507
Code:
  1. Here is a simple example on how to extract the OS Version & BuildID from the PEB:
  2.  
  3. Code:
  4. void VersionInfo()
  5. {
  6.     DWORD PEB = GrabPEB();
  7.     printf("Version: %d.%d.%d.%d\n", *(int*)(PEB+0xA4), *(int*)(PEB+0xA8), *(short*)(PEB+0xAC), *(short*)(PEB+0xAE));
  8.     return;
  9. }

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



Ранг: 307.6 (мудрец)
Статус: Участник

Создано: 02 июня 2017 10:08 · Поправил: mysterio New!
Цитата · Личное сообщение · #21

PEB:[0xAC] - OS Build Number

0x0a4 OS Major Version
0x0a8 OS Minor Version
0x0ac OS Build Number
0x0ae OS CSD Version

чуток не успел

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



Ранг: 324.3 (мудрец)
Статус: Участник

Создано: 02 июня 2017 14:01 · Поправил: DenCoder New!
Цитата · Личное сообщение · #22

Дополню инфу по смещениям в PEB:
--> Link <--
Правая колонка - аналогичные смещения в x64

Инфа за reversecode. Но там не каждый может найти сразу ссылку на полезную таблицу. )

Я табличку ещё раньше нашёл, месяц назад, когда искал, как правильно определить версию оси, находясь ещё до старта процесса. )

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



Ранг: 331.5 (мудрец)
Статус: Участник

Создано: 03 июня 2017 12:25 · Поправил: difexacaw New!
Цитата · Личное сообщение · #23

Vamit

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

Это совсем нужно обнаглеть, чтобы запостить комерс задачу и есчо быть недовольным.. я не писал чепухи. Короче в запросы, если вас не устраивают обычные обсуждения. Вам никто не поможет, это ранее уже сказали.

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



Ранг: 331.1 (мудрец)
Статус: Участник

Создано: 05 июня 2017 14:23 · Поправил: Vamit New!
Цитата · Личное сообщение · #24

Продолжение инициализации защиты...

Все функции получения и инициализации параметров защиты имеют три ветки кода - для Wine, для x32 и х64 систем.

- Получают параметры версии OS (MajorVersionOS, MinorVersionOS, BuildNumberOS, CSDVersionOS) из ресурсов RT_VERSION файла ntdll.dll
- Проверка на наличие VirtualBox
Создают файл L"\.\PhysicalDrive0", затем через DeviceIoControl с кодом IOCTL_STORAGE_QUERY_PROPERTY получают описание девайса в котором ищут подстроку "vbox". Если этот вариант неудачен, то ищут в реестре строку "HARDWARE\ACPI\DSDT\VBOX__", если она присутствует, то получают хендл L"VBoxHook.dll".
- Проверка наличия виртуальной мыши
Выполняют DisableWow64FsRedirection, если доступна. В системной директории проверяют наличие файла L"\drivers\vmmouse.sys". Выполняют RevertWow64FsRedirection, если доступна.
- Проверка BIOS на qemu
Читают из реестра "HARDWARE\Description\System" значение "SystemBiosVersion" и в нем ищут подстроку "qemu".
- Проверка типа процессора на "GenuineIntel" через вызов cpuid с eax = 0.
- Проверка тиков
Сравнивают значение полученное из GetTickCount со значением из USER_SHARED_DATA с вызовом pause. Проверяются данные из разных адресов в зависимости от билда OS (0х7FFE0000, 0x7FFE0004, 0x7FFE0320 - 0x7FFE0328).
Буду признателен если кто-то даст подробное описание инфы в этой области в зависимости от операционки, я ничего толкового не нашел.
- Проверка SystemTime
Сравнивают значение полученное из GetSystemTimeAsFileTime со значениями из USER_SHARED_DATA. Адреса 0х7FFE0014, 0x7FFE0018.
- Получение частоты процессора
Определяют способность процессора на выполнение расширенных функций через вызов cpuid с eax = 0x80000000. Если способен, то через cpuid с eax = 0x80000002, 0x80000003, 0x80000004 получают полное описание процессора и оттуда вытягивают частоту, если присутствует. В противном случае рассчитывают частоту через вызов QueryPerformanceCounter и rdtsc.

На этом инициализация защиты заканчивается.

Добавлено спустя 57 минут
Вот полная структура данных защиты

Code:
  1. //---------------------------------------------
  2.  
  3. 00000000 vProtectData    struc ; (sizeof=0x18)
  4. // Криптованные данные размером BYTE, WORD, DWORD, QWORD
  5. 00000000 BYTE         m_Data[8];
  6. // Рандомный ключ криптования
  7. 00000008 BYTE         m_Key[16];
  8. 00000018 vProtectData    ends
  9.  
  10. //---------------------------------------------
  11.  
  12. 00000000 vProtect        struc ; (sizeof=0x7E0)
  13. // Хендл ntdll.dll
  14. 00000000 vProtectData m_hNtdll;
  15. // Хендл kernel32.dll
  16. 00000018 vProtectData m_hKernel32;
  17. // Хендл GetCurrentThread для Wine или -2 для х32 и х64
  18. 00000030 vProtectData m_nCurrentThread;
  19. // Хендл GetCurrentProcess для Wine или 0 для х32 и х64
  20. 00000048 vProtectData m_hCurrentProcess;
  21. // Хендл при вызове TLS callback (0x00400000)
  22. 00000060 vProtectData m_hDllHandle;
  23. // Адрес EntryPoint
  24. 00000078 vProtectData m_nAddrEP;
  25. // Адрес первого TLS callback (распаковка образа вмпротом) 
  26. 00000090 vProtectData m_nAddrCallbackTLS1;
  27. // Частота CPU в ГГц
  28. 000000A8 vProtectData m_nCpuFrequency;
  29. // Общий ключ криптования некоторых данных в другой области
  30. 000000C0 BYTE         m_CommonProtectKey[16];
  31. // PEB адрес
  32. 000000D0 vProtectData m_nAddrPEB;
  33. // TEB адрес
  34. 000000E8 vProtectData m_nAddrTEB;
  35. // Адрес USER_SHARED_DATA (0х7FFE0000)
  36. 00000100 vProtectData m_nAddrUserSharedData;
  37. // Адреса функций из ntdll.dll для х32
  38. 00000118 vProtectData m_nAddrLdrLoadDll;
  39. 00000130 vProtectData m_nAddrLdrGetDllHandle;
  40. 00000148 vProtectData m_nAddrLdrGetProcedureAddress;
  41. 00000160 vProtectData m_nAddrNtQueryInformationProcess;
  42. 00000178 vProtectData m_nAddrNtSetInformationThread;
  43. 00000190 vProtectData m_nAddrNtQuerySystemInformation;
  44. 000001A8 vProtectData m_nAddrNtQueryVirtualMemory;
  45. 000001C0 vProtectData m_nAddrNtAllocateVirtualMemory;
  46. 000001D8 vProtectData m_nAddrNtFreeVirtualMemory;
  47. 000001F0 vProtectData m_nAddrNtProtectVirtualMemory;
  48. 00000208 vProtectData m_nAddrNtCreateFile;
  49. 00000220 vProtectData m_nAddrNtReadFile;
  50. 00000238 vProtectData m_nAddrNtWriteFile;
  51. 00000250 vProtectData m_nAddrNtWaitForSingleObject;
  52. 00000268 vProtectData m_nAddrNtQueryInformationFile;
  53. 00000280 vProtectData m_nAddrNtSetInformationFile;
  54. 00000298 vProtectData m_nAddrNtQueryFullAttributesFile;
  55. 000002B0 vProtectData m_nAddrNtRemoveProcessDebug;
  56. 000002C8 vProtectData m_nAddrNtTerminateProcess;
  57. 000002E0 vProtectData m_nAddrNtClose;
  58. 000002F8 vProtectData m_nAddrNtDeviceIoControlFile;
  59. 00000310 vProtectData m_nAddrNtFsControlFile;
  60. 00000328 vProtectData m_nAddrNtWriteVirtualMemory;
  61. 00000340 vProtectData m_nAddrNtFlushInstructionCache;
  62. 00000358 vProtectData m_nAddrNtReadVirtualMemory;
  63. 00000370 vProtectData m_nAddrNtDelayExecution;
  64. 00000388 vProtectData m_nAddrNtMapViewOfSection;
  65. 000003A0 vProtectData m_nAddrNtUnmapViewOfSection;
  66. 000003B8 vProtectData m_nAddrNtCreateSection;
  67. 000003D0 vProtectData m_nAddrNtCreateDebugObject;
  68. 000003E8 vProtectData m_nAddrNtQueryObject;
  69. // Базовый адрес ntdll.dll в х64 системе
  70. 00000400 vProtectData m_nAddrBaseLib_x64;
  71. // Хендл GetCurrentProcess для Wine или -1 для х64 в х64 системе
  72. 00000418 vProtectData m_hCurrentProcess_x64;
  73. // Адреса функций из ntdll.dll для х64
  74. 00000430 vProtectData m_nAddrNtQueryInformationProcess_x64;
  75. 00000448 vProtectData m_nAddrNtSetInformationThread_x64;
  76. 00000460 vProtectData m_nAddrNtQuerySystemInformation_x64;
  77. 00000478 vProtectData m_nAddrNtQueryVirtualMemory_x64;
  78. 00000490 vProtectData m_nAddrNtAllocateVirtualMemory_x64;
  79. 000004A8 vProtectData m_nAddrNtFreeVirtualMemory_x64;
  80. 000004C0 vProtectData m_nAddr_NtProtectVirtualMemory_x64;
  81. 000004D8 vProtectData m_nAddrNtCreateFile_x64;
  82. 000004F0 vProtectData m_nAddrNtReadFile_x64;
  83. 00000508 vProtectData m_nAddrNtWriteFile_x64;
  84. 00000520 vProtectData m_nAddrNtWaitForSingleObject_x64;
  85. 00000538 vProtectData m_nAddrNtQueryInformationFile_x64;
  86. 00000550 vProtectData m_nAddrNtSetInformationFile_x64;
  87. 00000568 vProtectData m_nAddrNtQueryFullAttributesFile_x64;
  88. 00000580 vProtectData m_nAddrNtRemoveProcessDebug_x64;
  89. 00000598 vProtectData m_nAddrNtTerminateProcess_x64;
  90. 000005B0 vProtectData m_nAddrNtClose_x64;
  91. 000005C8 vProtectData m_nAddrNtDeviceIoControlFile_x64;
  92. 000005E0 vProtectData m_nAddrNtFsControlFile_x64;
  93. 000005F8 vProtectData m_nAddrNtWriteVirtualMemory_x64;
  94. 00000610 vProtectData m_nAddrNtFlushInstructionCache_x64;
  95. 00000628 vProtectData m_nAddrNtReadVirtualMemory_x64;
  96. 00000640 vProtectData m_nAddrNtDelayExecution_x64;
  97. 00000658 vProtectData m_nAddrNtMapViewOfSection_x64;
  98. 00000670 vProtectData m_nAddrNtUnmapViewOfSection_x64;
  99. 00000688 vProtectData m_nAddrNtCreateSection_x64;
  100. // Cостояние fs:[C0] FastSysCall
  101. 000006A0 vProtectData m_bFastSysCallx64;
  102. // Cостояние fs:[C0] FastSysCall в х64 системе
  103. 000006B8 vProtectData m_bFastSysCallx64_x64;
  104. // Наличие драйвера vmmouse.sys
  105. 000006D0 vProtectData m_bVmmouseSys;
  106. // Наличие VirtualBox
  107. 000006E8 vProtectData m_bVBox;
  108. // Признак qemu BIOSa
  109. 00000700 vProtectData m_bBiosQemu;
  110. // Признак Wine системы
  111. 00000718 vProtectData m_bWine;
  112. // Тип CPU (GenuineIntel ? 0x1000 : 0x1001)
  113. 00000730 DWORD        m_nCpuType;
  114. 00000734 DWORD        _align;
  115. // Версии и билд OS
  116. 00000738 vProtectData m_nMajorVersionOS;
  117. 00000750 vProtectData m_nMinorVersionOS;
  118. 00000768 vProtectData m_nBuildNumberOS;
  119. 00000780 vProtectData m_nCSDVersionOS;
  120. // Результат проверки SystemTimeAsFileTime
  121. 00000798 vProtectData m_bValidSystemTimeAsFileTime;
  122. // Результат проверки GetTickCount
  123. 000007B0 vProtectData m_bValidTickCounts;
  124. // Какая-то константа 1149 (0x47D)
  125. 000007C8 vProtectData m_nValue1149;
  126. 000007E0 vProtect        ends
  127.  
  128. Адрес тела структуры в памяти 00C93CB0
  129.  
  130. //---------------------------------------------

| Сообщение посчитали полезным: VOLKOFF, nice, bartolomeo


Ранг: 18.4 (новичок)
Статус: Участник

Создано: 05 июня 2017 15:29 New!
Цитата · Личное сообщение · #25

Добрый день!
По-моему инициализация 2-го слоя защиты начинается в 1-ом TLS CALLBACK путем вызова функции по адресу 0xd43cc2.
Сначала идет сбор различной информации о системе невиртуализированными функциями.
Затем уже виртуализированными функциями дешифруется имя библиотеки ntdll.dll и имя функции DbgUiRemoteBreakin. Видимо, реализован какой-то анти-аттач метод.
Дальнейшие действия защиты продолжаю изучать.




Ранг: 563.2 (!)
Статус: Участник
оптимист

Создано: 05 июня 2017 15:40 New!
Цитата · Личное сообщение · #26

Vamit пишет:
Сравнивают значение полученное из GetTickCount со значением из USER_SHARED_DATA с вызовом pause. Проверяются данные из разных адресов в зависимости от билда OS (0х7FFE0000, 0x7FFE0004, 0x7FFE0320 - 0x7FFE0328).

0x7FFE0320 - 0x7FFE0328 ======>GetTickCount64 появилась начиная с Windows Vista



Ранг: 64.9 (постоянный)
Статус: Участник

Создано: 05 июня 2017 15:59 · Поправил: hash87szf New!
Цитата · Личное сообщение · #27

> Проверяются данные из разных адресов в зависимости от билда OS (0х7FFE0000, 0x7FFE0004, 0x7FFE0320 - 0x7FFE0328).

Должны быть одинаковы они, даже на х86 и х64.
Например, XP x86: http://uninformed.org/index.cgi?v=2&a=2&p=15
И мой Вин10, справа

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



Ранг: 331.1 (мудрец)
Статус: Участник

Создано: 05 июня 2017 16:03 New!
Цитата · Личное сообщение · #28

gggeorggge пишет:
По-моему инициализация 2-го слоя защиты начинается в 1-ом TLS CALLB

017E6B02 - 1ый ТЛС каллбак это защита вмпрота и распаковка образа программы, там ничего интересного нет и дебаг в нем работает.
0062C6F0 - 2ой ТЛС каллбак. Инициализация защиты. Внутри 3 функции, первая (0061B370) проверяет целостность 3го ТЛС каллбака, вторая (00627780) самая большая инициализирует все данные защиты, третью (006296C0) я ещё не разобрал.
00619AB0 - 3ий ТЛС каллбак - ещё не смотрел...

Добавлено спустя 5 минут
hash87szf пишет:
Должны быть одинаковы они, даже на х86 и х64

Вот тело этой функи, оно не очень большое
Code:
  1. .text:00489AB0 vProtectCore_GetUserDataTicks proc near
  2. .text:00489AB0                 xor     eax, eax
  3. .text:00489AB2                 mov     eax, s_BuildNumberOS_coded
  4. .text:00489AB7                 xor     eax, s_BuildNumberOS_key
  5. .text:00489ABD                 cmp     eax, 2600
  6. .text:00489AC2                 jz      short loc_489B11
  7. .text:00489AC4                 cmp     eax, 3790
  8. .text:00489AC9                 jz      short loc_489B20
  9. .text:00489ACB                 cmp     eax, 6001
  10. .text:00489AD0                 jz      short loc_489B20
  11. .text:00489AD2                 cmp     eax, 6002
  12. .text:00489AD7                 jz      short loc_489B20
  13. .text:00489AD9                 cmp     eax, 7600
  14. .text:00489ADE                 jz      short loc_489B20
  15. .text:00489AE0                 cmp     eax, 7601
  16. .text:00489AE5                 jz      short loc_489B20
  17. .text:00489AE7                 cmp     eax, 9200
  18. .text:00489AEC                 jz      short loc_489B20
  19. .text:00489AEE                 cmp     eax, 9600
  20. .text:00489AF3                 jz      short loc_489B20
  21. .text:00489AF5                 cmp     eax, 10240
  22. .text:00489AFA                 jz      short loc_489B20
  23. .text:00489AFC                 cmp     eax, 10586
  24. .text:00489B01                 jz      short loc_489B20
  25. .text:00489B03                 cmp     eax, 14393
  26. .text:00489B08                 jz      short loc_489B20
  27. .text:00489B0A                 mov     eax, 0
  28. .text:00489B0F                 jmp     short locret_489B54
  29. .text:00489B11 ; ---------------------------------------------------------------------------
  30. .text:00489B11 loc_489B11:
  31. .text:00489B11                 mov     edx, 7FFE0000h
  32. .text:00489B16                 mov     eax, [edx]
  33. .text:00489B18                 mul     dword ptr [edx+4]
  34. .text:00489B1B                 shrd    eax, edx, 18h
  35. .text:00489B1F                 retn
  36. .text:00489B20 ; ---------------------------------------------------------------------------
  37. .text:00489B20 loc_489B20:
  38. .text:00489B20                 mov     ecx, ds:7FFE0324h
  39. .text:00489B26                 mov     edx, ds:7FFE0320h
  40. .text:00489B2C                 mov     eax, ds:7FFE0328h
  41. .text:00489B31                 cmp     ecx, eax
  42. .text:00489B33                 jnz     short loc_489B50
  43. .text:00489B35                 mov     eax, ds:7FFE0004h
  44. .text:00489B3A                 mul     edx
  45. .text:00489B3C                 shl     ecx, 8
  46. .text:00489B3F                 imul    ecx, ds:7FFE0004h
  47. .text:00489B46                 shrd    eax, edx, 18h
  48. .text:00489B4A                 shr     edx, 18h
  49. .text:00489B4D                 add     eax, ecx
  50. .text:00489B4F                 retn
  51. .text:00489B50 ; ---------------------------------------------------------------------------
  52. .text:00489B50 loc_489B50:
  53. .text:00489B50                 pause
  54. .text:00489B52                 jmp     short loc_489B20
  55. .text:00489B54 ; ---------------------------------------------------------------------------
  56. .text:00489B54 locret_489B54:
  57. .text:00489B54                 retn
  58. .text:00489B54 vProtectCore_GetUserDataTicks endp




Ранг: 64.9 (постоянный)
Статус: Участник

Создано: 05 июня 2017 16:52 New!
Цитата · Личное сообщение · #29

Ну как Клок говорит видать, два варианта: ХП и Виста+

Win 10 x64, x86 process
Code:
  1. 0:000> dt _KUSER_SHARED_DATA
  2. ntdll!_KUSER_SHARED_DATA
  3.    +0x000 TickCountLowDeprecated : Uint4B
  4.    +0x004 TickCountMultiplier : Uint4B
  5.    +0x008 InterruptTime    : _KSYSTEM_TIME
  6.    +0x014 SystemTime       : _KSYSTEM_TIME
  7.    +0x020 TimeZoneBias     : _KSYSTEM_TIME
  8.    +0x02c ImageNumberLow   : Uint2B
  9.    +0x02e ImageNumberHigh  : Uint2B
  10.    +0x030 NtSystemRoot     : [260] Wchar
  11.    +0x238 MaxStackTraceDepth : Uint4B
  12.    +0x23c CryptoExponent   : Uint4B
  13.    +0x240 TimeZoneId       : Uint4B
  14.    +0x244 LargePageMinimum : Uint4B
  15.    +0x248 AitSamplingValue : Uint4B
  16.    +0x24c AppCompatFlag    : Uint4B
  17.    +0x250 RNGSeedVersion   : Uint8B
  18.    +0x258 GlobalValidationRunlevel : Uint4B
  19.    +0x25c TimeZoneBiasStamp : Int4B
  20.    +0x260 NtBuildNumber    : Uint4B
  21.    +0x264 NtProductType    : _NT_PRODUCT_TYPE
  22.    +0x268 ProductTypeIsValid : UChar
  23.    +0x269 Reserved0        : [1] UChar
  24.    +0x26a NativeProcessorArchitecture : Uint2B
  25.    +0x26c NtMajorVersion   : Uint4B
  26.    +0x270 NtMinorVersion   : Uint4B
  27.    +0x274 ProcessorFeatures : [64] UChar
  28.    +0x2b4 Reserved1        : Uint4B
  29.    +0x2b8 Reserved3        : Uint4B
  30.    +0x2bc TimeSlip         : Uint4B
  31.    +0x2c0 AlternativeArchitecture : _ALTERNATIVE_ARCHITECTURE_TYPE
  32.    +0x2c4 BootId           : Uint4B
  33.    +0x2c8 SystemExpirationDate : _LARGE_INTEGER
  34.    +0x2d0 SuiteMask        : Uint4B
  35.    +0x2d4 KdDebuggerEnabled : UChar
  36.    +0x2d5 MitigationPolicies : UChar
  37.    +0x2d5 NXSupportPolicy  : Pos 0, 2 Bits
  38.    +0x2d5 SEHValidationPolicy : Pos 2, 2 Bits
  39.    +0x2d5 CurDirDevicesSkippedForDlls : Pos 4, 2 Bits
  40.    +0x2d5 Reserved         : Pos 6, 2 Bits
  41.    +0x2d6 Reserved6        : [2] UChar
  42.    +0x2d8 ActiveConsoleId  : Uint4B
  43.    +0x2dc DismountCount    : Uint4B
  44.    +0x2e0 ComPlusPackage   : Uint4B
  45.    +0x2e4 LastSystemRITEventTickCount : Uint4B
  46.    +0x2e8 NumberOfPhysicalPages : Uint4B
  47.    +0x2ec SafeBootMode     : UChar
  48.    +0x2ed VirtualizationFlags : UChar
  49.    +0x2ee Reserved12       : [2] UChar
  50.    +0x2f0 SharedDataFlags  : Uint4B
  51.    +0x2f0 DbgErrorPortPresent : Pos 0, 1 Bit
  52.    +0x2f0 DbgElevationEnabled : Pos 1, 1 Bit
  53.    +0x2f0 DbgVirtEnabled   : Pos 2, 1 Bit
  54.    +0x2f0 DbgInstallerDetectEnabled : Pos 3, 1 Bit
  55.    +0x2f0 DbgLkgEnabled    : Pos 4, 1 Bit
  56.    +0x2f0 DbgDynProcessorEnabled : Pos 5, 1 Bit
  57.    +0x2f0 DbgConsoleBrokerEnabled : Pos 6, 1 Bit
  58.    +0x2f0 DbgSecureBootEnabled : Pos 7, 1 Bit
  59.    +0x2f0 DbgMultiSessionSku : Pos 8, 1 Bit
  60.    +0x2f0 DbgMultiUsersInSessionSku : Pos 9, 1 Bit
  61.    +0x2f0 SpareBits        : Pos 10, 22 Bits
  62.    +0x2f4 DataFlagsPad     : [1] Uint4B
  63.    +0x2f8 TestRetInstruction : Uint8B
  64.    +0x300 QpcFrequency     : Int8B
  65.    +0x308 SystemCall       : Uint4B
  66.    +0x30c SystemCallPad0   : Uint4B
  67.    +0x310 SystemCallPad    : [2] Uint8B
  68.    +0x320 TickCount        : _KSYSTEM_TIME
  69.    +0x320 TickCountQuad    : Uint8B
  70.    +0x320 ReservedTickCountOverlay : [3] Uint4B
  71.    +0x32c TickCountPad     : [1] Uint4B
  72.    +0x330 Cookie           : Uint4B
  73.    +0x334 CookiePad        : [1] Uint4B
  74.    +0x338 ConsoleSessionForegroundProcessId : Int8B
  75.    +0x340 TimeUpdateLock   : Uint8B
  76.    +0x348 BaselineSystemTimeQpc : Uint8B
  77.    +0x350 BaselineInterruptTimeQpc : Uint8B
  78.    +0x358 QpcSystemTimeIncrement : Uint8B
  79.    +0x360 QpcInterruptTimeIncrement : Uint8B
  80.    +0x368 QpcSystemTimeIncrementShift : UChar
  81.    +0x369 QpcInterruptTimeIncrementShift : UChar
  82.    +0x36a UnparkedProcessorCount : Uint2B
  83.    +0x36c EnclaveFeatureMask : [4] Uint4B
  84.    +0x37c Reserved8        : Uint4B
  85.    +0x380 UserModeGlobalLogger : [16] Uint2B
  86.    +0x3a0 ImageFileExecutionOptions : Uint4B
  87.    +0x3a4 LangGenerationCount : Uint4B
  88.    +0x3a8 Reserved4        : Uint8B
  89.    +0x3b0 InterruptTimeBias : Uint8B
  90.    +0x3b8 QpcBias          : Uint8B
  91.    +0x3c0 ActiveProcessorCount : Uint4B
  92.    +0x3c4 ActiveGroupCount : UChar
  93.    +0x3c5 Reserved9        : UChar
  94.    +0x3c6 QpcData          : Uint2B
  95.    +0x3c6 QpcBypassEnabled : UChar
  96.    +0x3c7 QpcShift         : UChar
  97.    +0x3c8 TimeZoneBiasEffectiveStart : _LARGE_INTEGER
  98.    +0x3d0 TimeZoneBiasEffectiveEnd : _LARGE_INTEGER
  99.    +0x3d8 XState           : _XSTATE_CONFIGURATION


Win10 x64, x64 process
Code:
  1. 0:012> dt _KUSER_SHARED_DATA
  2. ntdll!_KUSER_SHARED_DATA
  3.    +0x000 TickCountLowDeprecated : Uint4B
  4.    +0x004 TickCountMultiplier : Uint4B
  5.    +0x008 InterruptTime    : _KSYSTEM_TIME
  6.    +0x014 SystemTime       : _KSYSTEM_TIME
  7.    +0x020 TimeZoneBias     : _KSYSTEM_TIME
  8.    +0x02c ImageNumberLow   : Uint2B
  9.    +0x02e ImageNumberHigh  : Uint2B
  10.    +0x030 NtSystemRoot     : [260] Wchar
  11.    +0x238 MaxStackTraceDepth : Uint4B
  12.    +0x23c CryptoExponent   : Uint4B
  13.    +0x240 TimeZoneId       : Uint4B
  14.    +0x244 LargePageMinimum : Uint4B
  15.    +0x248 AitSamplingValue : Uint4B
  16.    +0x24c AppCompatFlag    : Uint4B
  17.    +0x250 RNGSeedVersion   : Uint8B
  18.    +0x258 GlobalValidationRunlevel : Uint4B
  19.    +0x25c TimeZoneBiasStamp : Int4B
  20.    +0x260 NtBuildNumber    : Uint4B
  21.    +0x264 NtProductType    : _NT_PRODUCT_TYPE
  22.    +0x268 ProductTypeIsValid : UChar
  23.    +0x269 Reserved0        : [1] UChar
  24.    +0x26a NativeProcessorArchitecture : Uint2B
  25.    +0x26c NtMajorVersion   : Uint4B
  26.    +0x270 NtMinorVersion   : Uint4B
  27.    +0x274 ProcessorFeatures : [64] UChar
  28.    +0x2b4 Reserved1        : Uint4B
  29.    +0x2b8 Reserved3        : Uint4B
  30.    +0x2bc TimeSlip         : Uint4B
  31.    +0x2c0 AlternativeArchitecture : _ALTERNATIVE_ARCHITECTURE_TYPE
  32.    +0x2c4 BootId           : Uint4B
  33.    +0x2c8 SystemExpirationDate : _LARGE_INTEGER
  34.    +0x2d0 SuiteMask        : Uint4B
  35.    +0x2d4 KdDebuggerEnabled : UChar
  36.    +0x2d5 MitigationPolicies : UChar
  37.    +0x2d5 NXSupportPolicy  : Pos 0, 2 Bits
  38.    +0x2d5 SEHValidationPolicy : Pos 2, 2 Bits
  39.    +0x2d5 CurDirDevicesSkippedForDlls : Pos 4, 2 Bits
  40.    +0x2d5 Reserved         : Pos 6, 2 Bits
  41.    +0x2d6 Reserved6        : [2] UChar
  42.    +0x2d8 ActiveConsoleId  : Uint4B
  43.    +0x2dc DismountCount    : Uint4B
  44.    +0x2e0 ComPlusPackage   : Uint4B
  45.    +0x2e4 LastSystemRITEventTickCount : Uint4B
  46.    +0x2e8 NumberOfPhysicalPages : Uint4B
  47.    +0x2ec SafeBootMode     : UChar
  48.    +0x2ed VirtualizationFlags : UChar
  49.    +0x2ee Reserved12       : [2] UChar
  50.    +0x2f0 SharedDataFlags  : Uint4B
  51.    +0x2f0 DbgErrorPortPresent : Pos 0, 1 Bit
  52.    +0x2f0 DbgElevationEnabled : Pos 1, 1 Bit
  53.    +0x2f0 DbgVirtEnabled   : Pos 2, 1 Bit
  54.    +0x2f0 DbgInstallerDetectEnabled : Pos 3, 1 Bit
  55.    +0x2f0 DbgLkgEnabled    : Pos 4, 1 Bit
  56.    +0x2f0 DbgDynProcessorEnabled : Pos 5, 1 Bit
  57.    +0x2f0 DbgConsoleBrokerEnabled : Pos 6, 1 Bit
  58.    +0x2f0 DbgSecureBootEnabled : Pos 7, 1 Bit
  59.    +0x2f0 DbgMultiSessionSku : Pos 8, 1 Bit
  60.    +0x2f0 DbgMultiUsersInSessionSku : Pos 9, 1 Bit
  61.    +0x2f0 SpareBits        : Pos 10, 22 Bits
  62.    +0x2f4 DataFlagsPad     : [1] Uint4B
  63.    +0x2f8 TestRetInstruction : Uint8B
  64.    +0x300 QpcFrequency     : Int8B
  65.    +0x308 SystemCall       : Uint4B
  66.    +0x30c SystemCallPad0   : Uint4B
  67.    +0x310 SystemCallPad    : [2] Uint8B
  68.    +0x320 TickCount        : _KSYSTEM_TIME
  69.    +0x320 TickCountQuad    : Uint8B
  70.    +0x320 ReservedTickCountOverlay : [3] Uint4B
  71.    +0x32c TickCountPad     : [1] Uint4B
  72.    +0x330 Cookie           : Uint4B
  73.    +0x334 CookiePad        : [1] Uint4B
  74.    +0x338 ConsoleSessionForegroundProcessId : Int8B
  75.    +0x340 TimeUpdateLock   : Uint8B
  76.    +0x348 BaselineSystemTimeQpc : Uint8B
  77.    +0x350 BaselineInterruptTimeQpc : Uint8B
  78.    +0x358 QpcSystemTimeIncrement : Uint8B
  79.    +0x360 QpcInterruptTimeIncrement : Uint8B
  80.    +0x368 QpcSystemTimeIncrementShift : UChar
  81.    +0x369 QpcInterruptTimeIncrementShift : UChar
  82.    +0x36a UnparkedProcessorCount : Uint2B
  83.    +0x36c EnclaveFeatureMask : [4] Uint4B
  84.    +0x37c Reserved8        : Uint4B
  85.    +0x380 UserModeGlobalLogger : [16] Uint2B
  86.    +0x3a0 ImageFileExecutionOptions : Uint4B
  87.    +0x3a4 LangGenerationCount : Uint4B
  88.    +0x3a8 Reserved4        : Uint8B
  89.    +0x3b0 InterruptTimeBias : Uint8B
  90.    +0x3b8 QpcBias          : Uint8B
  91.    +0x3c0 ActiveProcessorCount : Uint4B
  92.    +0x3c4 ActiveGroupCount : UChar
  93.    +0x3c5 Reserved9        : UChar
  94.    +0x3c6 QpcData          : Uint2B
  95.    +0x3c6 QpcBypassEnabled : UChar
  96.    +0x3c7 QpcShift         : UChar
  97.    +0x3c8 TimeZoneBiasEffectiveStart : _LARGE_INTEGER
  98.    +0x3d0 TimeZoneBiasEffectiveEnd : _LARGE_INTEGER
  99.    +0x3d8 XState           : _XSTATE_CONFIGURATION





Ранг: 331.1 (мудрец)
Статус: Участник

Создано: 05 июня 2017 17:31 New!
Цитата · Личное сообщение · #30

Cо вторым ТЛС каллбаком покончено, третья функция в нем (006296C0) вызывается только в случае невалидного тела каллбака 3 и терминирует прогу.



Ранг: 64.9 (постоянный)
Статус: Участник

Создано: 05 июня 2017 18:38 New!
Цитата · Личное сообщение · #31

Скока те платят в этом болоте ковыряться?


<< . 1 . 2 . 3 . 4 . 5 . >>
 eXeL@B —› Основной форум —› Vmprotect. Хитрая защита от отладки.

Видеокурс ВЗЛОМ