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

 eXeL@B —› Вопросы новичков —› Распаковка Dll накрытой Themida
Посл.ответ Сообщение


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

Создано: 17 марта 2016 23:16
· Личное сообщение · #1

Здравствуйте,
У меня возникла некоторая проблема с распаковкой библиотеки, которая защищена Themida, а именно:
-Я сняла дамп с библиотеки, восстановлен импорт и для изучения в IDA вполне подходит, но самые важные функции накрыты виртуальной машиной.
-Немного изучила некоторый материал и поняла, что это довольно старая версия темиды и таки можно сделать девиртуализацию.
И я надеюсь, что здесь есть люди опытнее меня, которые подскажут направления (!!мне не нужно готовое, я просто хочу иметь этот навык :s1
P.S. я использовала плагины VMSweeper и Oreans UnVirualizer, но, к сожалению, у меня нет полного алгоритма и все попытки приводили либо к краху Olly, либо просто ничего не происходило...
P.S.S. извините, если я что-то неверно оформила, напишите и я исправлю

-----
В облачке многоточия




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

Создано: 18 марта 2016 00:08
· Личное сообщение · #2

Boostyq https://tuts4you.com/download.php?view.3108

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


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

Создано: 18 марта 2016 01:06 · Поправил: Boostyq
· Личное сообщение · #3

Спасибо, я уже писала, что пробовала - не удачно.
Почитав форум стало ясно, что такие вопросы тут не жалуют - можно закрыть, зря я сюда написала.

-----
В облачке многоточия





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

Создано: 18 марта 2016 01:44
· Личное сообщение · #4

да вы тут лучше нас разбераетесь) с анпаком и девиртуализацией фимиды)



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

Создано: 18 марта 2016 07:55 · Поправил: VodoleY
· Личное сообщение · #5

del

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





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

Создано: 18 марта 2016 08:48
· Личное сообщение · #6

Boostyq пишет:
можно закрыть, зря я сюда написала.


Если и правда хотите закрыть, то кнопка "Закрыть" находится внизу страницы.
Но зачем спешить? А может быть кто-нибудь еще что-нибудь предложит.

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





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

Создано: 18 марта 2016 10:54 · Поправил: Boostyq
· Личное сообщение · #7

script_kidis пишет:
да вы тут лучше нас разбераетесь) с анпаком и девиртуализацией фимиды)

Извините, я совсем не хотела Вас обидеть! Я имела ввиду, что хоть я и занималась раньше реверсом игр/написание хаков - это для меня более сложная задача и у меня не хватает знаний, чтобы адаптировать готовые инструменты под мой случай и я просто не хочу показаться наглой, типа "дайте мне прогу, а я сама дырка от бублика"... Поэтому я стараюсь что-то подучить...
-----------------------------------
Сейчас изучаю материалы Vamit, в частности его отчеты после написания VMSweeper и случай очень похожий, код указанный в BodyVM очень похож (за исключением мусора, он, видимо, генерируется автоматически...)
Но, к сожалению, не удается использовать его плагин, при нажатии "Search all the reverences" olly просто крашит, даже до появления окна, лишь один раз я ввела параметры, но все равно крашнуло после нажатия.
-----------------------------------
Таргет, кстати, не простой, если заинжектить его в процесс с отладкой - dll ка просто не появится (!!это очень странно, до этого было норм, как будто он эволюционировал о_о). Ну а если его заинжектить в обычный процесс, то он скрывает модули (или я не знаю, просто olly их не видит) и я не могу использовать Oreans UnVirtualizer, т.к. он пишет Unknown Module при поиске.

-----
В облачке многоточия




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

Создано: 18 марта 2016 11:19
· Личное сообщение · #8

Boostyq
дык вы еще и девушка? тогда есть шанс получить вменяемый ответ..
1. не ищите в свипере ничего.. разве что теорию.. он под вмпрот и кодевирт.. но общие концепции там очень даже верные..
2. если вы хотите девиртить код.. то вам надо будет очень много времени.. готовых ВАН КЛИК инструментов нету

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


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


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

Создано: 18 марта 2016 11:42
· Личное сообщение · #9

VodoleY пишет:
1. не ищите в свипере ничего.. разве что теорию.. он под вмпрот и кодевирт.. но общие концепции там очень даже верные..
2. если вы хотите девиртить код.. то вам надо будет очень много времени.. готовых ВАН КЛИК инструментов нету

А разве CodeVirtualizer не является разработкой Oreans, Themida их же, и я слышала, что на старой версии они были очень похожи...
Мне все таки удалось увидеть модули из отладчика: я установила 2 плагина (phantom + strongod) и перебирая настройки, я запустила свой пустой exe-шник, в него заинжектила таргет, а затем присоединилась olly, появились модули и у меня выпал шанс использовать Code UnVirtualizer.
Плагин вроде как начал работать, но то что он выдал - меня удивило:
Code:
  1. @Label_63A424E3
  2.          63A4251E         CMP DWORD PTR [EBP+0xc],0x0
  3.          63A42558         JNZ 0x2c
  4.          63A4255D         OR EAX,0xff
  5.          63A4256D         JMP 0x639dd865
  6.  
  7.  
  8. @Label_63A42589
  9.          63A42589         CALL 0x639e90a0
  10.  
  11.  
  12. @Label_63A4259B
  13.          63A425CA         MOV DWORD PTR [EBP+0xffffffc8],EAX
  14.          63A425DA         LEA EAX,DWORD PTR [EBP+0xffffffd8]
  15.          63A42604         PUSH EAX
  16.          63A42608         MOV ECX,DWORD PTR [EBP+0xffffffc8]
  17.          63A42630         CALL 0x639e92d0
  18.  
  19.  
  20. @Label_63A42642
  21.          63A42671         MOV DWORD PTR [EBP+0xfffffffc],0x0
  22.          63A426A1         MOV ECX,DWORD PTR [EBP+0xc]
  23.          63A426BB         MOV DWORD PTR [EBP+0xffffffd4],ECX
  24.          63A426E2         LEA ECX,DWORD PTR [EBP+0xffffffd8]
  25.          63A426F2         CALL 0x639d4880
  26.  
  27.  
  28. @Label_63A4270C
  29.          63A4273B         ADD EAX,0x1
  30.          63A4275E         PUSH EAX
  31.          63A42762         CALL 0x63a00799
  32.  
  33.  
  34. @Label_63A42774
  35.          63A427A3         ADD ESP,0x4
  36.          63A427AD         MOV DWORD PTR [EBP+0xffffffd0],EAX
  37.          63A427D8         MOV EDX,DWORD PTR [EBP+0xffffffd4]
  38.          63A42800         MOV EAX,DWORD PTR [EBP+0xffffffd0]
  39.          63A42829         MOV DWORD PTR [EDX],EAX
  40.          63A42839         LEA ECX,DWORD PTR [EBP+0xffffffd8]
  41.          63A42853         CALL 0x639d4880
  42.  
  43.  
  44. @Label_63A42865
  45.          63A42894         PUSH EAX
  46.          63A428B2         LEA ECX,DWORD PTR [EBP+0xffffffd8]
  47.          63A428CC         CALL 0x639d4860
  48.  
  49.  
  50. @Label_63A428E6
  51.          63A42915         PUSH EAX
  52.          63A42930         MOV ECX,DWORD PTR [EBP+0xffffffd4]
  53.          63A42940         MOV EDX,DWORD PTR [ECX]
  54.          63A42952         PUSH EDX
  55.          63A42960         CALL 0x63a00fd0
  56.  
  57.  
  58. @Label_63A42972
  59.          63A429A1         ADD ESP,0xc
  60.          63A429AB         LEA ECX,DWORD PTR [EBP+0xffffffd8]
  61.          63A429D4         CALL 0x639d4880
  62.  
  63.  
  64. @Label_63A429E6
  65.          63A42A15         MOV ECX,DWORD PTR [EBP+0xffffffd4]
  66.          63A42A36         MOV EDX,DWORD PTR [ECX]
  67.          63A42A46         MOV BYTE PTR [EDX+EAX],0x0
  68.          63A42A4E         MOV EAX,DWORD PTR [EBP+0x8]
  69.          63A42A5E         MOV DWORD PTR [EBP+0xffffffcc],EAX
  70.          63A42A88         MOV DWORD PTR [EBP+0xfffffffc],0xffffffff
  71.          63A42AAA         LEA ECX,DWORD PTR [EBP+0xffffffd8]
  72.          63A42AD5         CALL 0x639d4820
  73.  
  74.  
  75. @Label_63A42AE7
  76.          63A42B16         MOV EAX,DWORD PTR [EBP+0xffffffcc]
  77.          63A42B38         JMP 0x639dd865

Значит ли это, что эти защищенные функции лишь вызывают незащищенные и все?

-----
В облачке многоточия


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


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

Создано: 18 марта 2016 15:21
· Личное сообщение · #10

Boostyq пишет:
Значит ли это, что эти защищенные функции лишь вызывают незащищенные и все?

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

-----
IZ.RU


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

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

Создано: 18 марта 2016 15:45
· Личное сообщение · #11

Boostyq пишет:
А разве CodeVirtualizer не является разработкой Oreans, Themida их же, и я слышала, что на старой версии они были очень похожи...

вы путаете понятия.. но это скорее более филосовский вопрос. вам былобы очень не плохо почитать теорию.. ВАМит.. в процессе свипера очень не плохо все расписал.. вам ща главный цикл ВМ найти надо.. потом распознать примитивы (подфунции) но это со старта .. очень веселая работа
ЗЫ тяжело искать черную кошку в черной комнате

Добавлено спустя 2 минуты
во.. проще наверно так.. напишите хелоу ворлд свой.. и накройте фимкой.. и посмотрите что получится.. а потом уже сравнивайте с таргетом

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


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


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

Создано: 18 марта 2016 17:02 · Поправил: Boostyq
· Личное сообщение · #12

Спасибо всем за помощь!
Я немного научилась использовать плагин Oreans UnVirtualizer, дело в том, что у меня не было доступа к нормальному видео-туториалу и незнание терминов ВМ так же мешало мне.
Отдельно спасибо Вамит'у за описания ВМ, очень порадовал нужный материал на родном языке
--------------------------------------
Плагин, вроде как справляется с задачей. Очень жаль, что это не плагин нашего соотечественника я делала ставки на него, но он крашит :<
Тем не менее, буду изучать дальше до полной распаковки (очень много IDA просто показывает как массив байт).

-----
В облачке многоточия




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

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

Boostyq пишет:
(очень много IDA просто показывает как массив байт).

так и будет.. но проблема не в этом.. ознакомтесь с терминами
1. главный цикл ВМ
2. набор примитивов
3. лента пи-кода.. (RISCO CISCO) машины..
и жизнь у вас станет проще..
ЗЫ. и переименуйте топик.. это нифига не распаковка ВМ

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




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

Создано: 18 марта 2016 20:38 · Поправил: deniskore
· Личное сообщение · #14

Boostyq пишет:
(очень много IDA просто показывает как массив байт)

Это либо мусор, либо IDA распознать не может, вы можете сконвертировать в код выделив байты и нажав на клавишу 'C'

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


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

Создано: 19 марта 2016 12:04 · Поправил: Boostyq
· Личное сообщение · #15

Думаю нашла нужные функции и просто хочу поделиться опытом:
-------------------------------------------
Пыталась найти все виртуальные функции сразу, но проблема в том, что IDA находила макс. 15, CheatEngine вообще только 10, но некоторых нужных там не было и меня это толкнуло на мысль - если они вызываются:
Code:
  1. push 10xxxxxx;
  2. call VM_EntryX;

То можно сделать маску для всех вызовов, так я и сделала - 68 ?? ?? ?? 10 E9, и просканировала всю память через плагин Olly SigMaker (только он увидел все вызовы) и тут я офигела!
Таких функций было (!) 77 и они ссылались не на одну VM, а на целых 3.
-------------------------------------------
Начала искать ссылки на них (где вызываются эти функции), но нашла всего 7.
Я девиртуализировала их, думая, что эти 7 вызывают остальные, но к моему удивлению - нет.
Но мне стало интересно, что же делают остальные, т.к. плагин работает только если нажать Ctrl+U/I на прыжке, то мне пришла идея самой сделать прыжки на них все.
Перейдя в конец файла Dll-ки, я стала строчить джампы, параллельно девиртуализируя эти функции.
Но оказалось, что это инструкции типа (много дубликатов и все очень похожи между собой):
Code:
  1.  
  2. @Label_63A424E3
  3.          63A4251E         CMP DWORD PTR [EBP+0xc],0x0
  4.          63A42558         JNZ 0x2c
  5.          63A4255D         OR EAX,0xff
  6.          63A4256D         JMP 0x639dd865
  7.  
  8.  
  9. @Label_63A42589
  10.          63A42589         CALL 0x639e90a0
  11.  
  12.  
  13. @Label_63A4259B
  14.          63A425CA         MOV DWORD PTR [EBP+0xffffffc8],EAX
  15.          63A425DA         LEA EAX,DWORD PTR [EBP+0xffffffd8]
  16.          63A42604         PUSH EAX
  17.          63A42608         MOV ECX,DWORD PTR [EBP+0xffffffc8]
  18.          63A42630         CALL 0x639e92d0
  19.  
  20.  
  21. @Label_63A42642
  22.          63A42671         MOV DWORD PTR [EBP+0xfffffffc],0x0
  23.          63A426A1         MOV ECX,DWORD PTR [EBP+0xc]
  24.          63A426BB         MOV DWORD PTR [EBP+0xffffffd4],ECX
  25.          63A426E2         LEA ECX,DWORD PTR [EBP+0xffffffd8]
  26.          63A426F2         CALL 0x639d4880
  27.  
  28.  
  29. @Label_63A4270C
  30.          63A4273B         ADD EAX,0x1
  31.          63A4275E         PUSH EAX
  32.          63A42762         CALL 0x63a00799
  33.  
  34.  
  35. @Label_63A42774
  36.          63A427A3         ADD ESP,0x4
  37.          63A427AD         MOV DWORD PTR [EBP+0xffffffd0],EAX
  38.          63A427D8         MOV EDX,DWORD PTR [EBP+0xffffffd4]
  39.          63A42800         MOV EAX,DWORD PTR [EBP+0xffffffd0]
  40.          63A42829         MOV DWORD PTR [EDX],EAX
  41.          63A42839         LEA ECX,DWORD PTR [EBP+0xffffffd8]
  42.          63A42853         CALL 0x639d4880
  43.  
  44.  
  45. @Label_63A42865
  46.          63A42894         PUSH EAX
  47.          63A428B2         LEA ECX,DWORD PTR [EBP+0xffffffd8]
  48.          63A428CC         CALL 0x639d4860
  49.  
  50.  
  51. @Label_63A428E6
  52.          63A42915         PUSH EAX
  53.          63A42930         MOV ECX,DWORD PTR [EBP+0xffffffd4]
  54.          63A42940         MOV EDX,DWORD PTR [ECX]
  55.          63A42952         PUSH EDX
  56.          63A42960         CALL 0x63a00fd0
  57.  
  58.  
  59. @Label_63A42972
  60.          63A429A1         ADD ESP,0xc
  61.          63A429AB         LEA ECX,DWORD PTR [EBP+0xffffffd8]
  62.          63A429D4         CALL 0x639d4880
  63.  
  64.  
  65. @Label_63A429E6
  66.          63A42A15         MOV ECX,DWORD PTR [EBP+0xffffffd4]
  67.          63A42A36         MOV EDX,DWORD PTR [ECX]
  68.          63A42A46         MOV BYTE PTR [EDX+EAX],0x0
  69.          63A42A4E         MOV EAX,DWORD PTR [EBP+0x8]
  70.          63A42A5E         MOV DWORD PTR [EBP+0xffffffcc],EAX
  71.          63A42A88         MOV DWORD PTR [EBP+0xfffffffc],0xffffffff
  72.          63A42AAA         LEA ECX,DWORD PTR [EBP+0xffffffd8]
  73.          63A42AD5         CALL 0x639d4820
  74.  
  75.  
  76. @Label_63A42AE7
  77.          63A42B16         MOV EAX,DWORD PTR [EBP+0xffffffcc]
  78.          63A42B38         JMP 0x639dd865

Я думаю, что это просто мусор, добавленный чтобы испугать меня :O
-------------------------------------------
Насчет регионов, которые IDA не распознает - это в основном и есть пикод трех VM, их примитивы, а также главные циклы трех VM.
Я думаю, что это можно даже вырезать, но пока не стала.
На этом все, всем спасибо

-----
В облачке многоточия


| Сообщение посчитали полезным: Hellspawn, Rainbow, plutos, -Sanchez-, DenCoder, VodoleY, m1kserok, 4kusNick


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

Создано: 19 марта 2016 13:43
· Личное сообщение · #16

Браво, создатели протов! И девушки способны вскрывать ваши поделки

-----
IZ.RU


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


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

Создано: 19 марта 2016 19:19 · Поправил: plutos
· Личное сообщение · #17

Boostyq пишет:
Я думаю, что это просто мусор, добавленный чтобы испугать меня


Не на такую нарвались! Нашу девушку никаким мусором не испугаешь!
Напугали девушку голым ежиком!
Нет, не так!
Напугали ежика голой девушкой!

Т.е. не "девушкой", а чем там?
Ну, в общем:
Браво, девушка!

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


| Сообщение посчитали полезным: Boostyq
 eXeL@B —› Вопросы новичков —› Распаковка Dll накрытой Themida
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


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