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

 eXeL@B —› Протекторы —› Декомпилятор ВМ
<< 1 ... 18 . 19 . 20 . 21 . 22 . 23 . 24 . >>
Посл.ответ Сообщение


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

Создано: 03 марта 2010 12:33
· Личное сообщение · #1

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

Не всё гладко обстоит с определением реализаций ВМ, на сегодняшний день примерно каждая третья реализация автоматом не определяется, приходится под неё модернизировать плагин, т.к. не могу сразу предусмотреть все случаи "издевательств" ВМ с кодом примитивов. Лучше дела с восстановлением "исходного" кода защищенных функций - 70% нормально восстанавливается, хотя во многом это зависит от самой структуры функции. Таким образом, если будет заинтересованность и помощь в нахождении подобных ситуаций, то проект может быть доведен до релизной стадии.

ЗЫ: Речь идет об Ореановских машинах. Нигде специально не упоминал.

9c41_03.03.2010_CRACKLAB.rU.tgz - VMSweeperLst.rar

-----
Everything is relative...




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

Создано: 23 апреля 2016 15:01
· Личное сообщение · #2

Vamit

В vmsweeper нельзя добавить настройку, делать хардварные или софтовые бряки? Или он уже не правится?




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

Создано: 01 мая 2016 14:00
· Личное сообщение · #3

jazzz пишет:
В vmsweeper нельзя добавить настройку, делать хардварные или софтовые бряки? Или он уже не правится?

Читаем это сообщение https://exelab.ru/f/action=vthread&forum=13&topic=15906&page=17#9 тут всё понятно написано.
что значит ошибка Decoder VM is not running? И еще при попытке декомпильнуть функцию происходит краш программы и вообще железные бряки приводят к падению программы несмотря на то что все плагины настроены и сама программа уже распакована?
Это значит, что декодер не запущен, появляется когда давите продолжение декодирования по Shift+F1, а F1 первоначально на точке входа в вм не даванули или же перезапустили Ольку вместе с прогой. Не всякая распакованная прога с вмпротектом будет работать, декомпилируйте нужные функции в оригинале проги, если же падает, то ничего страшного - рестарт проги в Ольке и Shift+F1 помогут. Почитайте описание Свипера и тему - им ещё надо уметь пользоваться.

-----
Everything is relative...


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

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

Создано: 02 мая 2016 10:31
· Личное сообщение · #4

Vamit пишет:
Почитайте описание Свипера и тему - им ещё надо уметь пользоваться.

и еще желательно понимать структуру вмпрота )

-----
Наша работа во тьме, Мы делаем, что умеем. Мы отдаем, что имеем, Наша работа во тьме....





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

Создано: 26 июля 2016 08:41
· Личное сообщение · #5

Наконец-то появилось время и реальная необходимость заняться новыми версиями вмпротекта. Начиная с версии 3.0 вмпрот имеет новую безцикловую вм. Изменения настолько серьезны что нужно писать новый анализатор вм до промкода. О подробностях структуры протектора сообщу позже, если это необходимо...)

-----
Everything is relative...


| Сообщение посчитали полезным: HandMill, daFix, Jaa, Nightshade, Larry, zNob, SwordBack, Bronco, gloom, mushr00m, -Sanchez-, vnekrilov, VodoleY, 4kusNick


Ранг: 1131.7 (!!!!), 447thx
Активность: 0.670.2
Статус: Участник

Создано: 26 июля 2016 13:00
· Личное сообщение · #6

32/64?
olly/x64dbg?

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


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

Создано: 26 июля 2016 14:53
· Личное сообщение · #7

Gideon Vi пишет: 32/64?
Да всё на той же основе что и было - Олька и прот 32 разряда. Для перехода на 64 разряда пока нет необходимости и возможности.

-----
Everything is relative...





Ранг: 312.0 (мудрец), 349thx
Активность: 0.460.65
Статус: Участник
Advisor

Создано: 26 июля 2016 15:53
· Личное сообщение · #8

Vamit пишет:
имеет новую безцикловую вм

и он тоже? утверждать не буду, но впечатление что похоже на конструктор switch_case_break;
Для апишек свой выход, для переходов между хендлами свои и т.д. Переходы через стек всё таки создают дискомфорт.
Vamit пишет:
Для перехода на 64 разряда пока нет необходимости и возможности

необходимость есть и очень даже...))
А вообще успехов.

-----
Чтобы юзер в нэте не делал,его всё равно жалко..


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


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

Создано: 26 июля 2016 18:08
· Личное сообщение · #9

Bronco пишет:
что похоже на конструктор switch_case_break;

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

-----
Everything is relative...





Ранг: 312.0 (мудрец), 349thx
Активность: 0.460.65
Статус: Участник
Advisor

Создано: 26 июля 2016 19:28 · Поправил: Bronco
· Личное сообщение · #10

Vamit пишет:
выход из вм для выполнения невиртуализованных фунок

в моём случае реализация вм в которой таких выходов больше одного. Системные Апи на свой и тд. И контекст ЦПУ восстанавливают уже без ключей.
Отсюда и предположил конструктор. В остальном всё схоже по описанию, и это х64.

-----
Чтобы юзер в нэте не делал,его всё равно жалко..




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

Создано: 27 июля 2016 07:49
· Личное сообщение · #11

Vamit пишет:
только цикла вм нет, нет таблицы примитивов и нет их опкодов, адрес следующего примитива находится в ленте и хеширован

индусов в ВМ_Прот наняли что ли? это их фишка циклы разворачивать, ибо платят за количество строк кода

-----
Наша работа во тьме, Мы делаем, что умеем. Мы отдаем, что имеем, Наша работа во тьме....





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

Создано: 27 июля 2016 13:34 · Поправил: Vamit
· Личное сообщение · #12

Ну вот, не прошло и двух дней а результат имеется:
Code:
  1. ++++++++++++++++++++++++++++++++++++
  2.   Section asm
  3. ++++++++++++++++++++++++++++++++++++
  4.  
  5. ; Пролог ВМ (вызов из открытого кода виртуализованной функи)
  6. ; виртуализован, сделана отдельная декомпиляция
  7. 00150099: pushfd 
  8. 0015009F: push eax
  9. 001500A5: push ecx
  10. 001500AB: push ebx
  11. 001500B1: push edx
  12. 00150109: jmp 0x00E35042     ; переход на "тело" виртуализованной функи
  13.  
  14. ; Открытый код
  15. 00E35042    F3:F3:F3:F3:F3: PREFIX REP:      ; нафига-то 5 префиксов
  16. 00E35047    9C              PUSHFD            ; реальные флаги
  17. ; Далее вход в ВМ (тело виртуализованной функи)
  18.  
  19. ; Результат декомпиляции
  20. 00150099: pop eax
  21. 0015009F: test eax, 0x00000100                  ; проверка TF
  22. 0015019E: jnz 0x00150B62
  23. 001501E5: mov eax, 1                                               ; антидамп
  24. 001501F0: cpuid 
  25. 00150215: mov ecx, eax
  26. 00150221: and ecx, 0x00000FF0
  27. 0015025A: cmp ecx, 0x00000FE0
  28. 001503E0: jnz 0x001504CE
  29. 00150427: xor eax, 0x00000020
  30. 001504CE: 
  31. 0015053C: mov edx, dword ptr [0x00B40020]
  32. 0015055C: mov ecx, dword ptr [edx + 0]
  33. 00150532: and ebx, 0x00FFFFFF
  34. 00150587: xor ecx, 0x000036EE
  35. 001505F3: add eax, ebx
  36. 0015060A: xor eax, edx
  37. 00150689: add edx, 4
  38. 001506E6: 
  39. 00150728: mov ebx, dword ptr [edx]
  40. 00150737: xor ebx, 0x00005CA7
  41. 0015079D: cmp eax, ebx
  42. 0015093B: jz 0x00150C47
  43. 00150998: dec ecx
  44. 00150A91: lea edx, dword ptr [edx + 4]
  45. 00150B5D: jnz 0x001506E6
  46. 00150B62: 
  47. 00150BA4: pop edx
  48. 00150BAA: pop ebx
  49. 00150BB0: pop ecx
  50. 00150BB6: pop eax
  51. 00150BBC: popfd 
  52. 00150BC2: mov eax, 0xDEADC0DE
  53. 00150C42: jmp 0
  54. 00150C47: 
  55. 00150C89: pop eax                   ; восстановление регистров
  56. 00150C8F: pop eax                                    ; неправильное - нужно разобраться!!!
  57. 00150C95: pop eax
  58. 00150C9B: pop eax
  59. 00150CA1: pop eax
  60. 00150D48: 
  61. 00150D8A: push ebp                                   ; начало реальной функции
  62. 00150D90: mov rvm_1C, esp                   ; ebp не распознан, т.к. антидамп не удален
  63. 00150D97: sub esp, 0x00000638
  64. 00150E6A: mov rvm_0C, 0x00A8EFD0
  65. 00150EAF: mov dword ptr [rvm_1C + 0xFFFFFFFC], rvm_38
  66. 00150EB4: mov byte ptr [rvm_1C + 0xFFFFFFEF], 0
  67. 00150F6E: call 0x00E21B10
  68. 00150FD0: mov eax, dword ptr [ebp + 0xFFFFFFFC]
  69. 00150FF5: cmp dword ptr [eax + 0x00000048], 0
  70. 0015119F: jz 0x00151DAA
  71. 001511E6: mov ecx, 1
  72. 001511FB: mov eax, dword ptr [ebp + 0xFFFFFFFC]
  73. 00151226: imul iEAX, 0, ecx                       ; что-то не так с умножением
  74. 00151239: mov ecx, dword ptr [eax + 0x00000048]
  75. 0015125E: mov edx, (                      ; то же относится к умножению
  76. 001512F7: cmp edx, 0x00000022
  77. 00151473: jnz 0x00151DAA
  78. 001514BA: mov ecx, dword ptr [ebp + 0xFFFFFFFC]
  79. 001514DA: mov eax, dword ptr [ecx + 0x00000048]
  80. 001514F9: mov dword ptr [ebp + 0xFFFFFFF0], eax
  81. 0015151A: mov edx, dword ptr [ebp + 0xFFFFFFF0]
  82. 0015153A: inc edx
  83. 00151556: mov dword ptr [ebp + 0xFFFFFFE4], edx
  84. 001515B8: 
  85. 001515FA: mov ecx, dword ptr [ebp + 0xFFFFFFF0]
  86. 0015161A: mov al, byte ptr [ecx]
  87. 0015162D: mov byte ptr [ebp + 0xFFFFFFFB], al
  88. 00151660: inc dword ptr [ebp + 0xFFFFFFF0]
  89. 001516A0: cmp byte ptr [ebp + 0xFFFFFFFB], 0
  90. 00151840: jnz 0x001515B8
  91. 00151896: mov rvm_34, dword ptr [ebp + 0xFFFFFFF0]
  92. 00151887: sub rvm_18, rvm_34
  93. 00151905: mov dword ptr [ebp + 0xFFFFFFE0], rvm_18
  94. 00151926: mov edx, dword ptr [ebp + 0xFFFFFFE0]
  95. 00151946: mov dword ptr [ebp + 0xFFFFFFE8], edx
  96. 00151972: mov edx, dword ptr [ebp + 0xFFFFFFFC]
  97. 00151987: mov eax, dword ptr [ebp + 0xFFFFFFE8]
  98. 001519BD: mov edx, dword ptr [edx + 0x00000048]
  99. 001519D1: mov ecx, (
  100. 00151A7A: cmp ecx, 0x00000022
  101. 00151BF5: jnz 0x00151DAA
  102. 00151C6B: mov ecx, dword ptr [ebp + 0xFFFFFFE8]
  103. 00151CA5: mov edx, dword ptr [edx + 0x00000048]
  104. 00151CAB: mov byte ptr [ecx + edx + 0xFFFFFFFF], 0
  105. 00151C5C: mov edx, dword ptr [ebp + 0xFFFFFFFC]
  106. 00151CEE: mov ecx, dword ptr [ebp + 0xFFFFFFFC]
  107. 00151D24: mov eax, dword ptr [edx + 0x00000048]
  108. 00151D2D: inc eax
  109. 00151D49: mov dword ptr [ecx + 0x00000048], eax
  110. 00151DAA: 
  111. 00151DEC: mov edx, dword ptr [ebp + 0xFFFFFFFC]
  112. 00151E16: mov dword ptr [edx + 0x000000E4], 0
  113. 00151E35: mov eax, dword ptr [ebp + 0xFFFFFFFC]
  114. 00151E55: cmp dword ptr [eax + 0x00000048], 0
  115. 00151FFA: jz 0x001523D0
  116. 00152041: push 0x009DC34C
  117. 00152057: mov ecx, dword ptr [ebp + 0xFFFFFFFC]
  118. 00152077: mov edx, dword ptr [ecx + 0x00000048]
  119. 00152096: push edx
  120. 001520B2: call 0x0057EB49
  121. 00152162: add esp, 8
  122. 00152186: test eax, eax
  123. 0015229D: jnz 0x001523D0
  124. 00152300: xor eax, eax
  125. 001523CB: jmp 0x00158313
  126. 001523D0: 
  127. 00152412: mov ecx, dword ptr [ebp + 0xFFFFFFFC]
  128. 00152448: call 0x00723710
  129. 001524F8: movzx eax, al
  130. 0015250D: test eax, eax
  131. 00152624: jnz 0x00152796
  132. 0015267A: xor eax, eax
  133. 00152705: mov ecx, dword ptr [ebp + 0xFFFFFFFC]
  134. 0015271A: mov dword ptr [ecx + 0x000000E4], 0x00002710
  135. 00152791: jmp 0x00158313
  136. 00152796: 
  137. 001527D8: mov ecx, dword ptr [ebp + 0xFFFFFFFC]
  138. 0015289C: call 0x00CF94E0
  139. 001528FE: test eax, eax
  140. 00152A15: jnz 0x00152B87
  141. 00152A70: xor eax, eax
  142. 00152A5C: mov edx, dword ptr [ebp + 0xFFFFFFFC]
  143. 00152B00: mov dword ptr [edx + 0x000000E4], 0x00002711
  144. 00152B82: jmp 0x00158313
  145. 00152B87: 
  146. 00152BC9: mov ecx, dword ptr [ebp + 0xFFFFFFFC]
  147. 00152BFF: call 0x00727220
  148. 00152CAF: mov ecx, dword ptr [ebp + 0xFFFFFFFC]
  149. 00152CE5: call 0x007236D0
  150. 00152D95: movzx eax, al
  151. 00152DAA: test eax, eax
  152. 00152ED8: jz 0x00152F97
  153. 00152F1F: mov eax, 1
  154. 00152F92: jmp 0x00158313
  155. 00152F97: 
  156. 00152FD9: mov ecx, dword ptr [ebp + 0xFFFFFFFC]
  157. 0015300F: call 0x00723380
  158. 001530BF: movzx ecx, al
  159. 001530D4: test ecx, ecx
  160. 00153202: jz 0x001532C1
  161. 00153249: mov eax, 1
  162. 001532BC: jmp 0x00158313
  163. 001532C1: 
  164. 00153303: mov ecx, dword ptr [ebp + 0xFFFFFFFC]
  165. 00153339: call 0x00722DB0
  166. 001533E9: movzx edx, al
  167. 001533FE: test edx, edx
  168. 0015352C: jz 0x001535EB
  169. 00153573: mov eax, 1
  170. 001535E6: jmp 0x00158313
  171. 001535EB: 
  172. 0015362D: push 0x00AC5970
  173. 00153643: mov ecx, dword ptr [ebp + 0xFFFFFFFC]
  174. 00153679: call 0x00721EA0
  175. 00153729: mov ecx, dword ptr [ebp + 0xFFFFFFFC]
  176. 0015375F: call 0x00726570
  177. 0015380F: mov ecx, dword ptr [ebp + 0xFFFFFFFC]
  178. 00153845: call 0x0044A7D2
  179. 001538F5: push 0
  180. 00153910: call 0x0045D478
  181. 001539C0: test eax, eax
  182. 00153AD7: jnz 0x00153D1E
  183. 00153B1E: push 0xFFFFFFFF
  184. 00153B23: push 0
  185. 00153B28: push 0x000013B5
  186. 00153B43: call 0x00443575
  187. 00153D19: jmp 0x00158313
  188. 00153D1E: 
  189. 00153D76: call 0x0045D684
  190. 00153E26: test eax, eax
  191. 00153F3D: jnz 0x001540AF
  192. 001540AA: jmp 0x00158313
  193. 001540AF: 
  194. 001540F1: push 0
  195. 0015410C: call 0x0045D9E3
  196. 001541BC: add esp, 4
  197. 001541E0: push 0x009DC358
  198. 001541F6: mov ecx, dword ptr [ebp + 0xFFFFFFFC]
  199. 0015422C: call 0x0045EB53
  200. 001542DC: mov dword ptr [ebp + 0xFFFFFFF4], 0
  201. 00154312: cmp dword ptr [ebp + 0xFFFFFFF4], 0
  202. 00154495: jnz 0x00155134
  203. 001544DC: push 0x009DC018
  204. 00154508: call dword ptr [0x0096AA80]
  205. 001545BB: mov dword ptr [0x00AC58EC], eax
  206. 001545DB: push 0x009DC038
  207. 00154607: call dword ptr [0x0096AA80]
  208. 001546BA: mov dword ptr [0x00AC58F4], eax
  209. 001546DA: push 0x00AC65B0
  210. 00154706: call dword ptr [0x0096AA80]
  211. 001547B9: mov dword ptr [0x00AC58F0], eax
  212. 001547D9: push 0x00AC5970
  213. 00154805: call dword ptr [0x0096AA80]
  214. 001548B8: mov dword ptr [0x00AC58E0], eax
  215. 001548D8: push 0x009DC36C
  216. 00154904: call dword ptr [0x0096AA80]
  217. 001549B7: mov dword ptr [0x00AC083C], eax
  218. 001549D7: push 1
  219. 001549DC: mov ecx, dword ptr [ebp + 0xFFFFFFFC]
  220. 00154A12: call 0x00720410
  221. 00154AC2: test eax, eax
  222. 00154BD9: jnz 0x00154DD0
  223. 00154C20: mov ecx, dword ptr [ebp + 0xFFFFFFFC]
  224. 00154C56: call 0x0071FD80
  225. 00154D06: mov edx, dword ptr [ebp + 0xFFFFFFF4]
  226. 00154D26: add edx, 1
  227. 00154D58: mov dword ptr [ebp + 0xFFFFFFF4], edx
  228. 00154DCB: jmp 0x00155134
  229. 00154DD0: 
  230. 00154E12: mov ecx, dword ptr [ebp + 0xFFFFFFFC]
  231. 00154ED6: call 0x00BD3D3C
  232. 00154F38: test eax, eax
  233. 0015504F: jnz 0x00155134
  234. 00155096: mov eax, dword ptr [ebp + 0xFFFFFFF4]
  235. 001550B6: inc eax
  236. 001550D2: mov dword ptr [ebp + 0xFFFFFFF4], eax
  237. 00155134: 
  238. 00155176: cmp dword ptr [ebp + 0xFFFFFFF4], 0
  239. 00155326: jz 0x0015553F
  240. 0015536D: mov ecx, dword ptr [ebp + 0xFFFFFFFC]
  241. 001553A3: call 0x00722C00
  242. 00155453: xor eax, eax
  243. 0015553A: jmp 0x00158313
  244. 0015553F: 
  245. 00155581: push 0
  246. 00155586: push 0
  247. 0015558B: mov ecx, dword ptr [ebp + 0xFFFFFFFC]
  248. 001555C1: call 0x00723BE0
  249. 00155671: mov ecx, dword ptr [ebp + 0xFFFFFFFC]
  250. 001556A7: call 0x007238F0
  251. 00155757: test eax, eax
  252. 0015586E: jnz 0x00155A87
  253. 001558B5: mov ecx, dword ptr [ebp + 0xFFFFFFFC]
  254. 001558EB: call 0x00722C00
  255. 00155A82: jmp 0x00158313
  256. 00155A87: 
  257. 00155AC9: mov ecx, dword ptr [ebp + 0xFFFFFFFC]
  258. 00155AFF: call 0x007238E0
  259. 00155BAF: mov ecx, dword ptr [ebp + 0xFFFFFFFC]
  260. 00155BE5: call 0x00723780
  261. 00155C95: mov ecx, dword ptr [ebp + 0xFFFFFFFC]
  262. 00155CCB: call 0x00722C00
  263. 00155D7B: mov ecx, dword ptr [ebp + 0xFFFFFFFC]
  264. 00155DA5: cmp dword ptr [ecx + 0x00000020], 0
  265. 00155F4A: jz 0x001581C3
  266. 00155F91: mov edx, dword ptr [ebp + 0xFFFFFFFC]
  267. 00155FB1: mov eax, dword ptr [edx + 0x00000020]
  268. 00155FD0: mov ecx, dword ptr [eax + 0x00000020]
  269. 00155FEF: push ecx
  270. 0015600B: call dword ptr [0x0096AB70]
  271. 001560BE: test eax, eax
  272. 001561EC: jz 0x001581C3
  273. 00156233: push 0
  274. 00156238: push 0x00000019
  275. 0015623D: mov edx, dword ptr [0x00AC58EC]
  276. 0015625C: push edx
  277. 00156262: mov eax, dword ptr [ebp + 0xFFFFFFFC]
  278. 00156282: mov ecx, dword ptr [eax + 0x00000020]
  279. 001562B7: call 0x00404880
  280. 00156376: mov ecx, 0x00B116E0
  281. 00156399: call 0x00421370
  282. 00156449: test eax, eax
  283. 00156577: jz 0x001569A5
  284. 001565E3: mov ecx, 0x00B116E0
  285. 001565D4: call 0x00421620
  286. 001566A0: mov ecx, 1
  287. 001566AB: imul edx, ecx, 0                 ; что-то не так с умножением
  288. 001566CF: mov eax, (
  289. 00156768: test eax, eax
  290. 00156896: jz 0x001569A5
  291. 001568DD: mov ecx, dword ptr [ebp + 0xFFFFFFFC]
  292. 001568FD: mov ecx, dword ptr [ecx + 0x00000020]
  293. 00156932: call 0x00421600
  294. 001569A5: 
  295. 00156A6A: mov edx, dword ptr [ebp + 0xFFFFFFFC]
  296. 00156A8A: movzx eax, byte ptr [edx + 0x000000DC]
  297. 00156AB2: test eax, eax
  298. 00156BE0: jz 0x001581C3
  299. 00156C27: push 0x00AC5970
  300. 00156C3D: push 0x00AC65B0
  301. 00156C69: call 0x0057EB49
  302. 00156D19: add esp, 8
  303. 00156D3D: test eax, eax
  304. 00156E6B: jz 0x001581C3
  305. 00156EB2: xor ecx, ecx
  306. 00156F31: mov word ptr [ebp + 0xFFFFFBD0], cx
  307. 00156F55: push 0x00000206
  308. 00156F5A: lea edx, dword ptr [ebp + 0xFFFFFBD2]
  309. 00156F76: push 0
  310. 00156F7B: push edx
  311. 00156F97: call 0x00574140
  312. 00157047: add esp, 0x0000000C
  313. 0015706B: xor eax, eax
  314. 001570EA: mov word ptr [ebp + 0xFFFFF9C8], ax
  315. 0015710E: push 0x00000206
  316. 00157113: lea ecx, dword ptr [ebp + 0xFFFFF9CA]
  317. 0015712F: push 0
  318. 00157134: push ecx
  319. 00157150: call 0x00574140


не влезло в один пост...

-----
Everything is relative...


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


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

Создано: 27 июля 2016 13:39
· Личное сообщение · #13

продолжение...
Code:
  1. 00157200: add esp, 0x0000000C
  2. 00157224: xor edx, edx
  3. 001572A3: mov word ptr [ebp + 0xFFFFFDD8], dx
  4. 001572C7: push 0x00000206
  5. 001572CC: lea eax, dword ptr [ebp + 0xFFFFFDDA]
  6. 001572E8: push 0
  7. 001572ED: push eax
  8. 00157309: call 0x00574140
  9. 001573B9: add esp, 0x0000000C
  10. 001573DD: push 0x00AC5A78
  11. 001573F3: push 0x009DB948
  12. 00157409: lea ecx, dword ptr [ebp + 0xFFFFFBD0]
  13. 00157425: push 0x00000207
  14. 0015742A: push ecx
  15. 00157446: call 0x004169C0
  16. 001574F6: add esp, 0x00000010
  17. 0015751A: mov ecx, 0x00AC5A78
  18. 00157536: lea edx, dword ptr [ebp + 0xFFFFFDD8]
  19. 00157552: push 0x00000104
  20. 0015756D: call 0x00421EC0
  21. 0015761D: add esp, 4
  22. 00157641: movzx edx, al
  23. 00157656: test edx, edx
  24. 00157784: jz 0x00157B32
  25. 001577CB: mov eax, 2
  26. 001577DD: imul ecx, eax, 0                 ; что-то не так с умножением
  27. 00157801: movzx edx, word ptr [ecx + ebp + 0xFFFFFDD8]
  28. 00157833: test edx, edx
  29. 00157961: jz 0x00157B32
  30. 001579A8: lea eax, dword ptr [ebp + 0xFFFFFDD8]
  31. 001579C4: push eax
  32. 001579CA: push 0x009DB948
  33. 001579E0: lea ecx, dword ptr [ebp + 0xFFFFF9C8]
  34. 001579FC: push 0x00000207
  35. 00157A01: push ecx
  36. 00157A1D: call 0x004169C0
  37. 00157ACD: add esp, 0x00000010
  38. 00157B32: 
  39. 00157B74: lea edx, dword ptr [ebp + 0xFFFFFBD0]
  40. 00157B90: push edx
  41. 00157BAC: call dword ptr [0x0096A5FC]
  42. 00157C5F: cmp eax, 0xFFFFFFFF
  43. 00157DE5: jnz 0x001580B9
  44. 00157E2C: lea eax, dword ptr [ebp + 0xFFFFF9C8]
  45. 00157E48: push eax
  46. 00157E64: call dword ptr [0x0096A5FC]
  47. 00157F17: cmp eax, 0xFFFFFFFF
  48. 001580B4: jz 0x001581C3
  49. 001580B9: 
  50. 001580FB: mov ecx, dword ptr [ebp + 0xFFFFFFFC]
  51. 0015811B: mov ecx, dword ptr [ecx + 0x00000020]
  52. 00158150: call 0x0069CF50
  53. 001581C3: 
  54. 00158288: mov eax, 1
  55. 00158313: 
  56. 00158355: mov esp, ebp
  57. 0015835E: pop ebp
  58. 0015839C: retn 


Осталось удалить антидамп и разобраться с ошибочками...

-----
Everything is relative...




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

Создано: 27 июля 2016 14:32 · Поправил: vofka_morkofka
· Личное сообщение · #14

А почему пролог ВМ такой короткий? Неужели только четыре регистра используется?

Вот такое я тоже встречал: mov eax, 0xDEADC0DE - зачем это?

и сразу после этого jmp 0 - это что значит?




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

Создано: 27 июля 2016 14:53
· Личное сообщение · #15

А почему пролог ВМ такой короткий?
Это не внутренности вм, а декомпилированный код.
mov eax, 0xDEADC0DE - зачем это?
Просто пометка, что это "убийственный" код
сразу после этого jmp 0 - это что значит?
Вот тут и сдохнет))
А вообще - учите матчасть))

-----
Everything is relative...




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

Создано: 27 июля 2016 15:06
· Личное сообщение · #16

Ага, вот теперь понял что это. Спасибо.

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

А если это не великая тайна, то каким способом свипер деобфусцированный код чистит, после того как ВМ убрана из работы? Собственные наработки или какой-то компилятор оптимизирующий?

А вообще матчасть учить хочу, только инфы крупицы, надо над этим работать и работать ещё..




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

Создано: 27 июля 2016 22:41
· Личное сообщение · #17

Понятно почему imul не свернулся, это множитель SIB адресации, а раньше он виртуализовался через shl, ну и следом не девиртуализовались поэтому пара инструкций movsx ..., [SIB]

-----
Everything is relative...


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


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

Создано: 07 февраля 2017 16:09
· Личное сообщение · #18

Есть желание перенести Свипер на Ольку 2.01 и реализовать 64 разрядную декомпиляцию, но сначала нужно разобраться с антидебагом, есть ли в природе нормальные плагины по сокрытию Ольки от вмпрота на Win10 последних сборок? Если есть дельные предложения, то можно и в личку...

-----
Everything is relative...


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

Ранг: 134.1 (ветеран), 246thx
Активность: 0.220.1
Статус: Участник
realist

Создано: 07 февраля 2017 16:20
· Личное сообщение · #19

Vamit
Судя по всему только ScyllaHide




Ранг: 312.0 (мудрец), 349thx
Активность: 0.460.65
Статус: Участник
Advisor

Создано: 07 февраля 2017 17:04 · Поправил: Bronco
· Личное сообщение · #20

Vamit пишет:
Есть желание перенести Свипер на Ольку 2.01 и реализовать 64 разрядную декомпиляцию, но сначала нужно разобраться с антидебагом, есть ли в природе нормальные плагины по сокрытию Ольки от вмпрота на Win10 последних сборок? Если есть дельные предложения, то можно и в личку...

Лучше уже сразу на Mr.eXoDia x64, и проект развивается, и там движки кросплатформенные, тот же капстон, юникорм, поддержка питона, очень подсобят. Ну и олька то под х64 как бы под вопросом, то что в привате, я так понял не особо юзабильное.
по антидебагу днйствительно скиллахайде рулЁт, опять же проект опен сорс

-----
Чтобы юзер в нэте не делал,его всё равно жалко..


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


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

Создано: 07 февраля 2017 20:40
· Личное сообщение · #21

Под Mr.eXoDia очень много почти с 0 переписывать нужно, а тут PDK почти похожие. Да и отлаживать мне в принципе ничего не нужно, для этого Иды хватает, нужно только для девиртуализации. Сцилла на Win10 работать не хочет, да и 2014 года она не обновлялась...

-----
Everything is relative...





Ранг: 312.0 (мудрец), 349thx
Активность: 0.460.65
Статус: Участник
Advisor

Создано: 07 февраля 2017 20:46 · Поправил: Bronco
· Личное сообщение · #22

Vamit пишет:
Сцилла на Win10 работать не хочет, да и 2014 года она не обновлялась...

--> буквальнр в 20 числах января обновились, пофиксили <--
ну и как гарант, последний 2 года на вин10.
Vamit пишет:
очень много почти с 0

оно то понятно, только тут один --> юникорн<-- чего стоит.

-----
Чтобы юзер в нэте не делал,его всё равно жалко..


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


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

Создано: 07 февраля 2017 21:47 · Поправил: Vamit
· Личное сообщение · #23

Благодарю, даже с исходниками - можно в Свипер встроить, а то какое-то старьё копал...))

ЗЫ: Может ещё у кого есть файл хелпа по PDK для 2ой Ольки, буду благодарен. А то методом тыка подбирать замену старым функам утомительно.

-----
Everything is relative...




Ранг: 80.6 (постоянный), 194thx
Активность: 0.10.04
Статус: Участник

Создано: 10 февраля 2017 01:12 · Поправил: v00doo
· Личное сообщение · #24

Vamit пишет:
Есть желание перенести Свипер на Ольку 2.01 и реализовать 64 разрядную декомпиляцию

С возвращением
Bronco пишет:
Лучше уже сразу на Mr.eXoDia x64, и проект развивается, и там движки кросплатформенные, тот же капстон, юникорм, поддержка питона, очень подсобят.

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

Дополню на счет юникорна (питон правда и для иды, но все же):
https://github.com/tkmru/nao
Vamit пишет:
Может ещё у кого есть файл хелпа по PDK для 2ой Ольки, буду благодарен

А он вообще был?
Я просто только архивчик видел уже с pdk...

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


Ранг: 622.6 (!), 521thx
Активность: 0.330.89
Статус: Участник
_Вечный_Студент_

Создано: 11 февраля 2017 04:42
· Личное сообщение · #25

Хоть оно и не совсем по теме здесь, но раз уж упомянули unicorn, то спрошу: кто-нибудь смог успешно скомпиллировать единорога для Windows 64 bit?
Если кто откликнется, изложу суть проблемы.

-----
Give me a HANDLE and I will move the Earth.





Ранг: 673.3 (! !), 400thx
Активность: 0.40.31
Статус: Участник
CyberMonk

Создано: 11 февраля 2017 15:51 · Поправил: mak
· Личное сообщение · #26

plutos Собирал не раз, следуй инструкциям на сайте, если всё сделать так как там написано, всё отлично собирается. Правда я потом не стал разбираться, как собрать без дебаг информации ..

-----
RE In Progress [!] Coding Hazard [!] Stay Clear of this Cube


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


Ранг: 622.6 (!), 521thx
Активность: 0.330.89
Статус: Участник
_Вечный_Студент_

Создано: 12 февраля 2017 06:56
· Личное сообщение · #27

mak пишет:
следуй инструкциям на сайте


Точно следую пошаговым инструкциям в COMPILE-WINDOWS.md
https://github.com/unicorn-engine/unicorn/blob/master/docs/COMPILE-WINDOWS.md

Все вроде бы идет нормально пока не дохожу до
•To compile Windows 64-bit binary with MinGW, run:
$ ./make.sh cross-win64

и получаю:
$ ./make.sh cross-win64
bash: ./make.sh: No such file or directory

????????????

-----
Give me a HANDLE and I will move the Earth.





Ранг: 673.3 (! !), 400thx
Активность: 0.40.31
Статус: Участник
CyberMonk

Создано: 12 февраля 2017 16:27 · Поправил: mak
· Личное сообщение · #28

plutos пишет:
mak пишет:
следуй инструкциям на сайте

Точно следую пошаговым инструкциям в COMPILE-WINDOWS.md
https://github.com/unicorn-engine/unicorn/blob/master/docs/COMPILE-WINDOWS.md

Все вроде бы идет нормально пока не дохожу до
•To compile Windows 64-bit binary with MinGW, run:
$ ./make.sh cross-win64

и получаю:
$ ./make.sh cross-win64
bash: ./make.sh: No such file or directory

????????????


Ты должен перейти в директорию и диск с твоим проектом используя команды dir и cd, кстати флаг дебага в конфиге можно поменять. Я только собрал последний билд из сорсов новых ..

Code:
  1.  MINGW64 /n
  2. $ cd msys64/unicorn
  3.  
  4. CyberMak@PC MINGW64 /n/msys64/unicorn
  5. $ ./make.sh cross-win64
  6. cd qemu && \
  7. ./configure --cc="x86_64-w64-mingw32-gcc" --extra-cflags="-DUNICORN_HAS_X86 -DUNICORN_HAS_ARM -DUNICORN_HAS_M68K -DUNICORN_HAS_ARM64 -DUNICORN_HAS_MIPS -DUNICORN_HAS_MIPSEL -DUNICORN_HAS_MIPS64 -DUNICORN_HAS_MIPS64EL -DUNICORN_HAS_SPARC " --target-list="x86_64-softmmu, arm-softmmu, m68k-softmmu, aarch64-softmmu, mips-softmmu, mipsel-softmmu, mips64-softmmu, mips64el-softmmu, sparc-softmmu,sparc64-softmmu," --disable-stack-protector


Vamit в твоей теме веселее!

-----
RE In Progress [!] Coding Hazard [!] Stay Clear of this Cube


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


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

Создано: 12 февраля 2017 18:01
· Личное сообщение · #29

plutos, mak
Здесь вмпротект и декомпиляция ВМ, а попкорн наверно в другой теме)

-----
Everything is relative...





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

Создано: 13 февраля 2017 04:06
· Личное сообщение · #30

Vamit

> есть ли в природе нормальные плагины по сокрытию Ольки от вмпрота на Win10

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

-----
vx





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

Создано: 13 февраля 2017 09:50
· Личное сообщение · #31

difexacaw пишет:
Я давно не смотрел, но раньше антидебаг у этого прота был примитивным. Что то изменилось ?

С 3ей версии прота много что изменилось и антидебаг в том числе, но что конкретно я не знаю. Последняя ScyllaHide решает эту задачу.
Но есть в связке OllyDbg 2.01 - last Win10 другие как минимум 2 проблемы, мешающие нормальной работе. Пока разбираюсь...

-----
Everything is relative...



<< 1 ... 18 . 19 . 20 . 21 . 22 . 23 . 24 . >>
 eXeL@B —› Протекторы —› Декомпилятор ВМ
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


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