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

 eXeL@B —› Протекторы —› Декомпилятор ВМ
<< 1 ... 9 . 10 . 11 . 12 . 13 . 14 . 15 . 16 . 17 . 18 . 19 ... 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...





Ранг: 253.5 (наставник), 684thx
Активность: 0.260.25
Статус: Участник
radical

Создано: 09 августа 2014 14:50
· Личное сообщение · #2

Vamit пишет:
А в логе что? Секция а12 есть? тогда это конец...


Есть:
Code:
  1. ++++++++++++++++++++++++++++++++++++
  2.   Section a12 final
  3. ++++++++++++++++++++++++++++++++++++
  4.  
  5. 001500BC: pushfd 
  6. 00150150: test efl, 0x00000100
  7. 00150300: jz 0x00150B00
  8. ... и т.д.


Есть шанс продолжить процесс декомиляции ?

-----
ds





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

Создано: 10 августа 2014 17:03
· Личное сообщение · #3

DimitarSerg пишет:
Есть шанс продолжить процесс декомиляции ?

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

-----
Everything is relative...





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

Создано: 10 августа 2014 21:59
· Личное сообщение · #4

а где взять emul-Vamits-handle.sys?



Ранг: 35.4 (посетитель), 15thx
Активность: 0.020
Статус: Участник

Создано: 21 августа 2014 00:12
· Личное сообщение · #5

Vamit подскажите, до этого уже упоминалось как правильно допилить вход в вм, чтобы плагин его начал распознавать? Ситуация такая - на нормальном варианте код выглядел так
push 24AA2BAAh
push 0D4434C41h
pushad
манипуляция с esi и наконец уже чтение пикода.
В "нехорошем" варианте
Code:
  1. .vmp0:10CBC176                 pushf
  2. .vmp0:10CBC177                 pushf
  3. .vmp0:10CBC178                 push    edi
  4. .vmp0:10CBC179                 pushf
  5. .vmp0:10CBC17A                 mov     dword ptr [esp+0Ch], 532BD368h
  6. .vmp0:10CBC182                 pusha
  7. .vmp0:10CBC183                 pushf
  8. .vmp0:10CBC184                 pushf
  9. .vmp0:10CBC185                 mov     dword ptr [esp+30h], 0ABC63136h
  10. .vmp0:10CBC18D                 pushf
  11. .vmp0:10CBC18E                 pushf
  12. .vmp0:10CBC18F                 lea     esp, [esp+38h]
  13. .vmp0:10CBC193                 jmp     loc_10001829
  14. и т.д.

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




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

Создано: 21 августа 2014 10:03 · Поправил: Vamit
· Личное сообщение · #6

neprovad пишет:
Так вот, есть ли какой-то шаблон как должен выглядеть код чтобы плагин нашел необходимые ему команды\данные для работы.

Шаблона нет, есть несколько определенных признаков распознавания типа вм и входа в неё. Читай статью Protect&Sweeper, там это есть...

-----
Everything is relative...


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


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

Создано: 14 ноября 2014 14:12 · Поправил: Vamit
· Личное сообщение · #7

Вот пришло время вернуться к этой теме...
Попался файл накрытый последним вмпротом, на нем не срабатывает защита свипера AntiAntiDebug. Её код я брал из Фантома. До ЕП олька не доходит - говорит что обнаружен дебагер. Пытался декомпильнуть TLS, на нем свипер останавливается только 1 раз при первом заходе, начинает создание промкода и усё, при перезапуске приложения останова на TLS уже нет...
Прошу помочь решить эту проблему с доработкой Свипера.

Да, забыл добавить, ни Стронгом, ни Фантомом мне не удалось запустить этот файл в Ольке, может я юзаю старые версии? Фантом 1.54, Стронг 0.4.5.810 - давно ими не пользовался, защиты Свипера всегда хватало...

-----
Everything is relative...





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

Создано: 14 ноября 2014 15:03
· Личное сообщение · #8

что за файл?

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

Ранг: 262.5 (наставник), 337thx
Активность: 0.340.25
Статус: Участник

Создано: 14 ноября 2014 15:38
· Личное сообщение · #9

Vamit пишет:
может я юзаю старые версии? Фантом 1.54, Стронг 0.4.5.810

PhantOm Plugin 1.85
StrongOD 0.4.8.892

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


Ранг: 990.2 (! ! !), 380thx
Активность: 0.680
Статус: Модератор
Author of DiE

Создано: 14 ноября 2014 15:44
· Личное сообщение · #10

Vamit файлик в студию

-----
[nice coder and reverser]


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


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

Создано: 14 ноября 2014 15:52 · Поправил: Vamit
· Личное сообщение · #11

Hellspawn пишет:
Vamit файлик в студию

Файлик даю в личку тем кто реально может помочь... Тут читают форум разные люди))

Главное-то не файлик, а как Свипер доработать...

-----
Everything is relative...





Ранг: 568.2 (!), 464thx
Активность: 0.550.57
Статус: Участник
оптимист

Создано: 14 ноября 2014 15:53
· Личное сообщение · #12

Vamit
зачем переходить на личности Если не приват то скинь мне ))))

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


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


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

Создано: 15 ноября 2014 01:10
· Личное сообщение · #13

В общем такая штука, в TLS вмпрот ловит дебагер (каким образом пока неизвестно, ни Стронг, ни Фантом не помогают), затем в первой своей вм, которой накрыт ОЕП, прога терминирует. Колбак на TLS естественно виртуализован протом.
Простое решение предложил r99 (особая ему благодарность за это) - обнулить колбак (всё гениальное просто ). И что интересно такая прога полностью функционирует как под дебагером так и без него, прога TLS не юзает (компилятор VS 2012), а вмпрот и не вспомнил что его нет - облажались тут они .
Свипер, конечно, я не доработал, т.к. колбак не декомпилится, вот когда гуру Фантома или Стронга найдут решение тогда и можно будет добавить это в Свипер. Благодарю всех откликнувшихся

-----
Everything is relative...


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

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

Создано: 16 ноября 2014 04:31
· Личное сообщение · #14

У меня с фантомом и стронгод ловится на первом же IsDebuggerPresent. На TLS стронг не хочет делать остановку. В итоге вручную обошел все это - в стронге делаем Break on Ldr. После чего ловим два бряка в ntdll. Далее ставим бряк на IsDebuggerPresent, CheckRemoteDebuggerPresent...

Итог (на всякий случай ОС Windows 7 Home x64):
1. IsDebuggerPresent() - нас поймали! (фикс вручную)
2. CheckRemoteDebuggerPresent() - нас поймали! (фикс вручную)
3. Установка SEH обработчика 0xFAAC75
4. CloseHandle(0xDEADC0DE) - нас поймали!
5. Восстановление SEH
6. 5 раз CheckIfModuleExist() для модулей sice.sys, siwvid.sys, ntice.sys, iceext.sys, syser.sys (нас мало интересует)
7. NtQueryInformationProcess(-1, ProcessDebugObjectHandle, &hDebugObject, 4, NULL) - нас поймали! (фикс вручную)

Как проэмулировать исключение на CloseHandle вручную - фиг знает. После 7-ого пункта нас ловят. Плагины фактически не работают ни один.

Добавлено спустя 46 минут
Прогнал на VirtualBox с Windows XP - все ок! Фантом работает и связка фантом+стронг тоже работает. Программа нормально доходит до EP.

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


Ранг: 568.2 (!), 464thx
Активность: 0.550.57
Статус: Участник
оптимист

Создано: 16 ноября 2014 07:28 · Поправил: ClockMan
· Личное сообщение · #15

Интересное кино,СALLBACK

00FAC5BC 01794B0C
00FAC5C0 005B7B10
00FAC5C4 00000000

а теперь вопрос СALLBACK адреса могут исполнятся как цепочка? если по адресу 00FAC5C4 поставить скажем 00400000 то и на этот адрес произойдёт переход выполнения , чё то не разу на такое не обращал внимания
тогда не удевительно что TLS не ловится........ в мануале от мелкомягких не хрена об этом не описано......

Добавлено спустя -43 минут
ClockMan пишет:
в мануале от мелкомягких не хрена об этом не описано.....

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

Добавлено спустя -27 минут
Vamit пишет:
а вмпрот и не вспомнил что его нет - облажались тут они

почву прощупывает

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





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

Создано: 16 ноября 2014 11:29
· Личное сообщение · #16

int пишет:
Прогнал на VirtualBox с Windows XP - все ок!

Если тут ок, то можно и без бокса сделать чтоб тоже было ок.

-----
Everything is relative...





Ранг: 990.2 (! ! !), 380thx
Активность: 0.680
Статус: Модератор
Author of DiE

Создано: 16 ноября 2014 12:58
· Личное сообщение · #17

поправил фантик, все запускается на winXP, win7 x86, на 64 креш, видимо есть какие-то особенности, пока не понимаю.

-----
[nice coder and reverser]


| Сообщение посчитали полезным: 4kusNick, alexpol

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

Создано: 16 ноября 2014 20:57
· Личное сообщение · #18

Hellspawn пишет:
поправил фантик,


А где можно скачать? В топике "PhantOm plugin" его нет...

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


Ранг: 990.2 (! ! !), 380thx
Активность: 0.680
Статус: Модератор
Author of DiE

Создано: 17 ноября 2014 11:34
· Личное сообщение · #19

vnekrilov так на x64 все еще не понятен детект как только так сразу.

-----
[nice coder and reverser]





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

Создано: 17 ноября 2014 12:11
· Личное сообщение · #20

Hellspawn пишет:
на x64 все еще не понятен детект

причем здесь x64?
или речь не об Ollydbg идет?




Ранг: 990.2 (! ! !), 380thx
Активность: 0.680
Статус: Модератор
Author of DiE

Создано: 17 ноября 2014 12:25
· Личное сообщение · #21

r99 а что олли не работает на 64 винде?

-----
[nice coder and reverser]





Ранг: 568.2 (!), 464thx
Активность: 0.550.57
Статус: Участник
оптимист

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

r99 пишет:
причем здесь x64?

Win 7 - 64

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





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

Создано: 17 ноября 2014 12:46
· Личное сообщение · #23

блин
хотел одним вопросом ограничиться
ан не получается - ну и ладно
просто никогда фантомом не пользовался на 7-64



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

Создано: 17 ноября 2014 13:14
· Личное сообщение · #24

Hellspawn пишет:
так на x64 все еще не понятен детект как только так сразу.

А что непонятно? Читай мой пост выше - банальный PEB фантом не ловит. Может он не понимает, что уже пора работать? Ты же инжект делаешь, чтобы либы хучить. А что является событием для того, чтобы это сделать? Может просто TLS Callback не обрабатывается? StrongOD тоже не ловит бряк на TLS Callback ("Break On Tls"). Я смог отладить код только после того, как выставил флаг "Break On Ldr".

Короче есть мнение, что на 64-битной ОС API по-другому работают.




Ранг: 990.2 (! ! !), 380thx
Активность: 0.680
Статус: Модератор
Author of DiE

Создано: 17 ноября 2014 14:23
· Личное сообщение · #25

int надо проверить, систем бряк до TLS или после?

-----
[nice coder and reverser]




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

Создано: 17 ноября 2014 14:56
· Личное сообщение · #26

Систем бряк до TLS, да. На TLS можно поставить бряк.

Вот так стронг делает System бряк:
Code:
  1. 001D0000   CC               INT3
  2. 001D0001   90               NOP
  3. 001D0002   68 E99EEA7D      PUSH 0x7DEA9EE9
  4. 001D0007   C3               RET

Где-то он патчит вызов 0x7DEA9EE9 на вызов своего кода в выделенной памяти. Не ковырял этот вопрос детально.




Ранг: 990.2 (! ! !), 380thx
Активность: 0.680
Статус: Модератор
Author of DiE

Создано: 17 ноября 2014 15:08
· Личное сообщение · #27

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

-----
[nice coder and reverser]





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

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

http://www.slideshare.net/ReCrypt/deobfuscation-and-beyond
на 10 странице VMSweeper вспоминают



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

Создано: 17 ноября 2014 20:31
· Личное сообщение · #29

reversecode пишет:
на 10 странице VMSweeper вспоминают

Пусть хоть сколько угодно вспоминают. Деобфускация невозможна. И вброс "Eq" тоже понятен - типа эквивалентные алгоритмы. Опять же, фраза "все хрень, мы сделали круче". А как же алгоритмическая неразрешимость проблемы эквивалентности алгоритмов?

"Works well on about of 30% of virtualized samples"
Интересно, кто статистику собирал?



Ранг: 512.7 (!), 360thx
Активность: 0.270.03
Статус: Модератор

Создано: 19 ноября 2014 14:34
· Личное сообщение · #30

Аналог фантома (и для ИДА тоже)
http://scyllahide.tk/index.html



Ранг: 36.1 (посетитель), 11thx
Активность: 0.020
Статус: Участник

Создано: 01 декабря 2014 19:40
· Личное сообщение · #31

"Деобфускация невозможна" только для сферических коней в вакууме. То, что сегодня невозможно, завтра -возможно. --> Блохи и банка <--


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


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