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

 eXeL@B —› Протекторы —› SolidShield wrapper
Посл.ответ Сообщение


Ранг: 529.0 (!), 110thx
Активность: 0.290.04
Статус: Участник
5KRT

Создано: 15 декабря 2009 20:44 · Поправил: daFix
· Личное сообщение · #1

Ни кто не встречал туторов по распаковке этого враппера?
Пока мельком глянул - до ЕР главного ЕХЕ подгружается DLL враппера, из неё извлекаются три файла в папку TEMP, один из которых Activation Wisard(он-же в последствии и запускается), в другом гранятся сведения о продукте, в третьем языковые ресурсы. В DLL враппера используется какая-то виртуалка.
Соответственно ключей у меня нету

Игра - Аватар

ADDED:
Блин, нашёл обсуждение на кряклабе тут, но там ничего так и не вышло

-----
Research For Food




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

Создано: 16 декабря 2009 20:09
· Личное сообщение · #2

Без ключа не распакуешь...



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

Создано: 18 декабря 2009 23:01 · Поправил: V0ldemAr
· Личное сообщение · #3

Лог исполнения ВМ кому интересно:
Code:
  1. 00000000 mov      ESP, 0018ff4c                  ESP = 8bd3031e
  2. 00000001 mov      r04b, fb202c71                  r04b = 00000000
  3. 00000002 mov      EBP, [ESP-20]                 [ESP-20] = 0018ff94   EBP = e36f22ef   ESP = 0018ff4c
  4. 00000003 mov      EBX, [ESP-18]                 [ESP-18] = 7efde000   EBX = 0018ff44   ESP = 0018ff4c
  5. 00000004 mov      r040, [ESP-8]                  [ESP-8] = 00000246   r040 = 0016ff60   ESP = 0018ff4c
  6. 00000005 mov      EAX, [ESP-c]                  [ESP-c] = 75cc3665   EAX = bfebfbff   ESP = 0018ff4c
  7. 00000006 mov      ESI, [ESP-24]                 [ESP-24] = 00000000   ESI = 00000246   ESP = 0018ff4c
  8. 00000007 mov      EDX, [ESP-14]                 [ESP-14] = 007fe301   EDX = 00000000   ESP = 0018ff4c
  9. 00000008 mov      EDI, [ESP-28]                 [ESP-28] = 00000000   EDI = 0018ff94   ESP = 0018ff4c
  10. 00000009 mov      ECX, [ESP-10]                 [ESP-10] = 00000000   ECX = 00000286   ESP = 0018ff4c
  11. 00000010 mov      r068, r040                      r068 = d220935c r040 = 00000246
  12. 00000011 sub      r068, 77a89bb4                  r068 = 00000246
  13. 00000012 sub    w r068, 9bb4                      r068 = 88576692
  14. 00000013 add    w r068, 9bb4                      r068 = 8857cade EFlags(r040) = 00000246
  15. 00000014 sub    w r068, 9bb4                      r068 = 88576692 EFlags(r040) = 00000a13
  16. 00000015 mov      r058, r040                      r058 = bfebfbff r040 = 00000a97
  17. 00000016 xor      r058, d70eeb6f                  r058 = 00000a97 EFlags(r040) = 00000a97
  18. 00000017 xor      r058, d70eeb6f                  r058 = d70ee1f8 EFlags(r040) = 00000282
  19. 00000018 xor      r058, d70eeb6f                  r058 = 00000a97 EFlags(r040) = 00000202
  20. 00000019 sub      r058, d70eeb6f                  r058 = d70ee1f8
  21. 00000020 mov      r025, r00f                      r025 = 00000000 r00f = 03d30022
  22. 00000021 sub      r025, 00000018                  r025 = 03d30022
  23. 00000022 mov      r018, [r025+0]                  [r025+0] = 00270000 r018 = 39f44ca0 r025 = 03d3000a
  24. 00000023 mov      r025, [r018+e74]                [r018+e74] = 437a910e r025 = 03d3000a r018 = 00270000
  25. 00000024 mov      r036, r040                      r036 = 00000246 r040 = 00000282
  26. 00000025 sub    w r036, 862e                      r036 = 00000282 EFlags(r040) = 00000282
  27. 00000026 xor    w r036, 862e                      r036 = 00007c54
  28. 00000027 sub      r073, r073                      r073 = 01020800 r073 = 01020800
  29. 00000028 add      r073, EAX                      r073 = 00000000 EAX = 75cc3665 EFlags(r040) = 00000213
  30. 00000029 sub      r05b, r05b                      r05b = 03ef6206 r05b = 03ef6206 EFlags(r040) = 00000206
  31. 00000030 add      r05b, ECX                      r05b = 00000000 ECX = 00000000 EFlags(r040) = 00000246
  32. 00000031 sub      r01c, r01c                      r01c = d8684d81 r01c = d8684d81 EFlags(r040) = 00000246
  33. 00000032 add      r01c, EDX                      r01c = 00000000 EDX = 007fe301
  34. 00000033 mov      r053, EBX                      r053 = 5996c82a EBX = 7efde000
  35. 00000034 mov      ECX, ab62e358                  ECX = 00000000
  36. 00000035 mov      EBX, r00f                      EBX = 7efde000 r00f = 03d30022
  37. 00000036 mov      EDX, 00226bd2                  EDX = 007fe301
  38. 00000037 add      EDX, EBX                      EDX = 00226bd2 EBX = 03d30022
  39. 00000038 mov      EAX, [EDX]                    EAX = 75cc3665 [EDX] = 0093448f EDX = 03f56bf4
  40. 00000039 sub      ECX, EAX                      ECX = ab62e358 EAX = 0093448f EFlags(r040) = 00000246
  41. 00000040 mov      EDX, 00286ac3                  EDX = 03f56bf4
  42. 00000041 add      EDX, EBX                      EDX = 00286ac3 EBX = 03d30022
  43. 00000042 mov      EAX, [EDX]                    EAX = 0093448f [EDX] = 004b4c8b EDX = 03fb6ae5
  44. 00000043 sub      ECX, EAX                      ECX = aacf9ec9 EAX = 004b4c8b EFlags(r040) = 00000296
  45. 00000044 mov      EDX, 00224e83                  EDX = 03fb6ae5
  46. 00000045 mov      EAX, [EDX+EBX]               [EDX+EBX] = bdc39d61 EDX = 00224e83 EBX = 03d30022 EAX = 004b4c8b
  47. 00000046 add      ECX, EAX                      ECX = aa84523e EAX = bdc39d61
  48. 00000047 mov      EAX, [EBX+224e7a]             [EBX+224e7a] = 8b01e1c1 EAX = bdc39d61 EBX = 03d30022
  49. 00000048 sub      ECX, EAX                      ECX = 6847ef9f EAX = 8b01e1c1 EFlags(r040) = 00000292
  50. 00000049 mov      r03a, ECX                      r03a = 09ac134e ECX = dd460dde
  51. ...
  52. 00005104 sub    w r04c, 8d2d                      r04c = 57e78f8b EFlags(r040) = 00000202
  53. 00005105 xor      r04c, 57e78d2d                  r04c = 57e7025e
  54. 00005106 sub    w r04c, 8d2d                      r04c = 00008f73 EFlags(r040) = 00000212
  55. 00005107 xor    w r04c, 8d2d                      r04c = 00000246 EFlags(r040) = 00000212
  56. 00005108 xor    w r04c, 8d2d                      r04c = 00008f6b
  57. 00005109 mov      r040, r04c                      r040 = 00000282 r04c = 00000246
  58. 00005110 mov      r04c, bfebfbff                  r04c = 00000246
  59. 00005111 mov      r04e, ESP                      r04e = 14be8f47 ESP = 0018f524
  60. 00005112 sub      ESP, 00000024                  ESP = 0018f524
  61. 00005113 mov      [ESP+8], EBP                  [ESP+8] = 11553d53 ESP = 0018f500 EBP = 0018ff94
  62. 00005114 mov      [ESP+14], EDX                 [ESP+14] = 0091b260 ESP = 0018f500 EDX = 007fe301
  63. 00005115 mov      [ESP+4], ESI                  [ESP+4] = 0000000d ESP = 0018f500 ESI = 00000000
  64. 00005116 mov      [ESP+1c], EAX                 [ESP+1c] = 0091bfe0 ESP = 0018f500 EAX = 75cc3665
  65. 00005117 mov      [ESP+20], r040                 [ESP+20] = 0018f994 ESP = 0018f500 r040 = 00000246
  66. 00005118 mov      [ESP+18], ECX                 [ESP+18] = 008e0000 ESP = 0018f500 ECX = 00000000
  67. 00005119 mov      [ESP+10], EBX                 [ESP+10] = 0000001b ESP = 0018f500 EBX = 7efde000
  68. 00005120 mov      [ESP+0], EDI                  [ESP+0] = 008e7b08 ESP = 0018f500 EDI = 00000000
  69. 00005121 mov      [ESP+c], r04e                  [ESP+c] = 00000001 ESP = 0018f500 r04e = 0018f524
  70. 00005122 mov      esp, ESP                       ESP = 0018f500
  71. vmexit: 00330000
  72. 00330000   call    [1002b008]
  73. 00330006   push    96d23d73
  74. 0033000b   push    86e13d73
  75. 00330010   push    b049b381
  76. 00330015   jmp     03da37dd


А вот так выгладит уже отфильтрованый лог:

Code:
  1. pop r29
  2. pop r3f
  3. pop r21
  4. pop r50
  5. pop r39
  6. pop r46
  7.  
  8. ;crc checks
  9.  
  10. push r46
  11. push r39
  12. push r50
  13. push r21
  14. push r3f
  15. push r29
  16.  
  17. sub esp, 0a1ch
  18. push esi
  19. mov esi, [esp+0a28h]
  20. test esi, esi
  21. jz _exit
  22. push esi
  23. call    [1002b008] ; GetModuleHandle


На входе регистры мапятся на стек (pushad pushfd) и после чего достаются со стека и помещаются в регистры ВМ а выходе наоборот достают с регистров ВМ записевают в стек где потом вызывается popfd popad. Индексы регистов куда ВМ маппит реальные регистры разные для каждой функции.




Ранг: 283.6 (наставник), 56thx
Активность: 0.130
Статус: Участник
Author of GeTaOEP

Создано: 19 декабря 2009 00:31
· Личное сообщение · #4

V0ldemAr пишет:
На входе регистры мапятся на стек (pushad pushfd) и после чего достаются со стека и помещаются в регистры ВМ а выходе наоборот достают с регистров ВМ записевают в стек где потом вызывается popfd popad

...похоже,что это стандартный ход у многих ВМ.

Мне интересно,насколько она тяжела/легка в разборе?

-----
the Power of Reversing team




Ранг: 101.0 (ветеран), 344thx
Активность: 1.150
Статус: Участник

Создано: 19 декабря 2009 00:40
· Личное сообщение · #5

DillerInc пишет:
похоже,что это стандартный ход у многих ВМ

Obsidium в том числе. А что тут ещё придумаешь хитрого?



Ранг: 10.9 (новичок), 5thx
Активность: 0.060
Статус: Участник

Создано: 16 января 2010 19:18
· Личное сообщение · #6

от RLD кеуген вышел - может теперь кто-то возмётся за распаковку данного враппера?




Ранг: 529.0 (!), 110thx
Активность: 0.290.04
Статус: Участник
5KRT

Создано: 16 января 2010 20:27
· Личное сообщение · #7

ThugboyZ
Боюсь что это не такой враппер, как у алавар и плдобных компаний.
На самом деле это больше похоже на стар с онлайн активацией.
Тоесть используется сильная VM(По утверждению людей, разбирающихся с виртуалках), которую так просто не распакуешь, не прикручишь сдампленную.
А какой смысл распаковывать, если есть кейген?

-----
Research For Food





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

Создано: 17 января 2010 01:06 · Поправил: mak
· Личное сообщение · #8

daFix что значит сильная вм ?! В чем сила ? В обфускации или в методах реализации эмуляции ? По документации солид шилд использует динамическую вм , динамика заключается в том что код превращается в серию переведенных виртуальных языков , при этом только один интерпретатор может воспроизвести этот байткод , в то время байткод , каждый вариант байткода будет определен уникальным рандомным словарем , который генерируется в токены , именно поэтой причине бесполезно разбирать эту вм и делать автоматические анализаторы. Как на самом деле я не знаю пока что ... но в любом случае , судя хотябы по посту V0ldemAr видно что подход нашли =) и как видно по посту ниже
V0ldemAr пишет:
Индексы регистов куда ВМ маппит реальные регистры разные для каждой функции.

можно эксплуатировать сам контекст для атаки на вм

Интересно что сказали спецы ... по этому поводу

progopis

Вариант из нового вмпротекта , в деобфускации даст разбросанный код

Code:
  1. 000C7DF1    9C              PUSHFD
  2. 000C7DF2    50              PUSH EAX
  3. 000C7DF3    51              PUSH ECX
  4. 000C7DF4    52              PUSH EDX
  5. 000C7DF5    53              PUSH EBX
  6. 000C7DF6    54              PUSH ESP
  7. 000C7DF7    55              PUSH EBP
  8. 000C7DF8    56              PUSH ESI
  9. 000C7DF9    57              PUSH EDI
  10.  


И это еще не единственный вариант , вариантов полно как можно реализовать этот момент

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





Ранг: 2014.5 (!!!!), 1278thx
Активность: 1.340.25
Статус: Модератор
retired

Создано: 17 января 2010 09:50
· Личное сообщение · #9

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



Ранг: 10.9 (новичок), 5thx
Активность: 0.060
Статус: Участник

Создано: 17 января 2010 12:39
· Личное сообщение · #10

самое интересное то, что если эта вм такая сложная то как рлд смогла написать keygen?им же всё равно пришлось бы реверсить виртуалку (dvm.dll)




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

Создано: 17 января 2010 13:11
· Личное сообщение · #11

Archer не так понял цель атаки не смена регистров хотя отчасти тоже, а цель атаки байткод и грамматики, который создается по правилам компиляторных технологий и то что я описал выше. Другого типа атаки на подобные вм мне не известны, так как разбор каши не идеален , мы можем сделать предварительный анализ грамматик по контексту. Можно прочитать ридми солидшилда они пишут о такой невозможности анализа, но при этом контекст вм слабое звено.

ThugboyZ ничего она не сложная , смысл лишь в то что много времени уходит на анализ , или тупо лень , если бы я фанател только от программинга то разобрал бы быстро. А мне это толком и не надо ... просто хобби , а предложения сделанные разным людям по разбору вм сходилось к одному ВСЕМ ЛЕНЬ , осатется расчет на новичков , усердия у них больше а помочь с теорией это уже наша задача.

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




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

Создано: 17 января 2010 15:25 · Поправил: V0ldemAr
· Личное сообщение · #12

ThugboyZ Понятно что реверснули если ты не вкурсе то рлд стар3 разобрали с патрохами притом что там вм в кернеле исполняется.

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

ПС: Спрячьте тему для не зарегистрированных а то разрабы солида прочитают )))




Ранг: 2014.5 (!!!!), 1278thx
Активность: 1.340.25
Статус: Модератор
retired

Создано: 17 января 2010 16:16
· Личное сообщение · #13

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




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

Создано: 17 января 2010 16:51
· Личное сообщение · #14

V0ldemAr пишет:
Насчет атаки на контекст это самая распространенная атака среди регистровых вм


Стэковых также

Archer все реально , не надо каких то компиляторов это слишком сложно =) Перевод в реальные регистры можно провести в два этапа и причем с кодом в гулькин нос. Этим самым мы получим фазы работы вм , где покрытие команд будет высоким , единственная проблема это деобфускация , но мы ее уж скомпрометировали через контекст.

Archer пишет:
Разрабы и так прочитают, так что лучше не писать что-то приватное.

А где еще обсуждать ?! В личке лень , на форуме нельзя .. тема обречена на поверхностное обсуждение.

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




Ранг: 10.9 (новичок), 5thx
Активность: 0.060
Статус: Участник

Создано: 17 января 2010 21:26 · Поправил: ThugboyZ
· Личное сообщение · #15

V0ldemAr пишет:
ThugboyZ Понятно что реверснули если ты не вкурсе то рлд стар3 разобрали с патрохами притом что там вм в кернеле исполняется.
знаю. они ещё тулзы свои выкладывали ("домашний" релиз был видать кто-то попросил). там и про вм есть и сффс. но не только ведь рлд же стар реверсили?вспомнить хотя бы русских тривиум. оленевода и так многие знают...




Ранг: 533.6 (!), 232thx
Активность: 0.450
Статус: Uploader
retired

Создано: 17 января 2010 21:51
· Личное сообщение · #16

ThugboyZ пишет:
вспомнить хотя бы русских тривиум. оленевода и так многие знают...

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

-----
Лучше быть одиноким, но свободным © $me




Ранг: 10.9 (новичок), 5thx
Активность: 0.060
Статус: Участник

Создано: 17 января 2010 22:12
· Личное сообщение · #17

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

думаю для узкого круга лиц можно выложить




Ранг: 2014.5 (!!!!), 1278thx
Активность: 1.340.25
Статус: Модератор
retired

Создано: 17 января 2010 22:40
· Личное сообщение · #18

Для узкого круга лиц это и так выкладывается.
Предлагаю держаться ближе к теме или вообще закрыть, раз конкретно с сабжем уже разобралась рлд.




Ранг: 529.0 (!), 110thx
Активность: 0.290.04
Статус: Участник
5KRT

Создано: 17 января 2010 23:53
· Личное сообщение · #19

Если бы я имел общие представления о враппере, то наверное и не стал бы создавать темы.
Хотя конечно интересно прочитать про методы борьбы с вируалкой, но приват пусть остаётся приватом.
Archer пишет:
Предлагаю держаться ближе к теме или вообще закрыть

Наверное лучше закрыть.
Всем спасибо, было очень интересно и познавательно

-----
Research For Food



 eXeL@B —› Протекторы —› SolidShield wrapper
Эта тема закрыта. Ответы больше не принимаются.
   Для печати Для печати