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

 eXeL@B —› Протекторы —› Декомпилятор ВМ
<< . 1 . 2 . 3 . 4 . 5 . 6 . 7 . 8 . 9 . 10 ... 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...





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

Создано: 14 мая 2010 16:08
· Личное сообщение · #2

mak пишет:
Если в ответ будет какая то реакция хотябы иногда

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

-----
Everything is relative...





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

Создано: 14 мая 2010 17:08
· Личное сообщение · #3

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

"приватный" свн как бы есть, жди ответа кто этим свн управляет, может и организуется )

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





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

Создано: 14 мая 2010 20:21
· Личное сообщение · #4

BoRoV пишет:
"приватный" свн как бы есть

Это хорошо, жду, но ещё хотелось бы приватный топик на форуме для общения участников проекта. Поймите правильно, это не "аппетип приходит во время еды, которой пока ещё и нет", просто есть аналогичный опыт работы с другими проектами, наличие Свн, места общения и кол-ва участников не больше 3-5 значительно повышает эффективность разработки ПО, при условии, что каждый из участников заинтересован в конечном результате.

-----
Everything is relative...





Ранг: 355.4 (мудрец), 55thx
Активность: 0.320
Статус: Uploader
5KRT

Создано: 14 мая 2010 20:34
· Личное сообщение · #5

Vamit
Это хорошо, жду, но ещё хотелось бы приватный топик на форуме для общения участников проекта.

Мне кажется не нужно таких крайних мер, пусть все будет видимо

-----
Gutta cavat lapidem. Feci, quod potui. Faciant meliora potentes





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

Создано: 14 мая 2010 23:16
· Личное сообщение · #6

Coderess пишет:
Мне кажется не нужно таких крайних мер, пусть все будет видимо

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

-----
Everything is relative...





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

Создано: 15 мая 2010 07:59
· Личное сообщение · #7

Coderess пишет:
Мне кажется не нужно таких крайних мер, пусть все будет видимо

+1
mak пишет:
это месть за молчание)))

вздроч...))) просто не понимаю обиды и капризы на пустом месте...

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





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

Создано: 15 мая 2010 17:25
· Личное сообщение · #8

Обещанная статейка по внутренностям декомпилятора.

2479_15.05.2010_CRACKLAB.rU.tgz - DecompilerInside.rar

-----
Everything is relative...





Ранг: 681.5 (! !), 405thx
Активность: 0.420.21
Статус: Участник
ALIEN Hack Team

Создано: 15 мая 2010 17:59
· Личное сообщение · #9

Хм, почитал статейку с описаньицем. Интересно. Я так понимаю - в шапке более старая версия. Описывалась не она. А ссылку на новую можно?

-----
Stuck to the plan, always think that we would stand up, never ran.





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

Создано: 15 мая 2010 19:49
· Личное сообщение · #10

ARCHANGEL пишет:
Я так понимаю - в шапке более старая версия.

Да, там только декомпилятор CodeVirtualizer анализаторов никаких нет, но вся структура декомпиляции и методы обработки те же.
А ссылку на новую можно?
На новую что? Если плагин, то последняя выложенная версия 1.2, что он может есть в посте, 1.3 еще не готов, нужно доделать декомпилятор VMProtect.

-----
Everything is relative...





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

Создано: 05 августа 2010 09:42 · Поправил: Vamit
· Личное сообщение · #11

После продолжительного затишья в теме, но не в работе, можно подвести итоги практически пройденного этапа - Виртуализация инструкций CPU ВмПротектом и их практическая девиртуализация.
На сегодняшний день девиртуализованы практически все основные инструкции CPU, в большинстве их вариаций как по размеру операндов, так и по типам операндов. Построены универсальные шаблоны девиртуализации инструкций, в большинстве они охватывают все вариации операндов, но некоторые инструкции требуют отдельных шаблонов на разные вариации, например, на строковые инструкции MOVS, LODS и другие используется по три шаблона в зависимости от размера операнда (BYTE, WORD, DWORD).
Для определения алгоритмов виртуализации было написано около 200 тестовых примеров с использованием конкретных инструкций, затем эти примеры были обработаны ВмПротектом с разными опциями преобразования кода - виртуализация, мутация, шифрация регистров и скрытие констант. Далее полученные файлы обрабатывались Декомпилятором и проводился анализ виртуализации, на основе этого строились шаблоны и выполнялась практическая девиртуализация инструкций.

Основные общие принципы виртуализации инструкций (VmProtect):
1. Измененение основного представления инструкции.
Большинство инструкций имеют следующий формат или схожий с ним - code dst, src; где code - мнемоника инструкции, dst - входной операнд и одновременно операнд результата, src - входной операнд. За реальными примерами далеко ходить не нужно - add x, y; dec x и т.д. movs и аналогичные тоже попадают в эту категорию, т.к. имеют вполне реальные "скрытые" операнды.
Любая из этих инструкций, вернее её составная часть, представляется ВмПротектом следующим образом - dst = code src1, src2; Отсюда видно, что входной операнд и операнд результата разделены, таким образом осуществляется скрытие регистров CPU, т.к. на очередном присвоении они могут поменять свое месторасположение в регистрах ВМ.
2. Флаги CPU.
Флаги, где это возможно, отделены от инструкций и обрабатываются отдельно. Даже "невиртуализованные" инструкции, которые имеют отдельный примитив, состоят из нескольких блоков - сама инструкция + блок обработки флагов. Примеры - rcl, mul и другие.
3. Разбивка инструкции на составляющие части.
Простые логические инструкции виртуализованы через NOR примитив, арифметические - через ADD, некоторые инструкции сдвига - через SHLD, SHRD. Все остальные инструкции виртуализуются через эти простые составляющие.

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

Приведу один шаблон виртуализации инструкции RCL, где svm - стековая, а rvm - регистровая переменные:
Code:
  1. // RCL
  2. // rcl   rvm1, rvm2
  3.  
  4. /*       svm1 = and rvm_efl, 0x0001                  // выделение флага переноса
  5.          svm2 = shl svm1, 8                              // сдвиг флага переноса
  6.          svm3 = svm2 + rvm2                              // суммирование переноса с операндом
  7.          *svm4 = rcl rvm1, svm3          // сам сдвиг
  8.          +rvm_fl(3) = iEFL                                   // промежуточные флаги
  9.          rvm_Reg = svm4                              // результат сдвига
  10.          svm5 = and rvm_efl, 0x000000D4         // объединение промежуточных флагов с основными
  11.          svm6 = and rvm_fl(3), 0xFFFFFF2B
  12.          rvm_Efl = svm5 + svm6     */            // результирующие флаги операции


-----
Everything is relative...





Ранг: 756.3 (! !), 113thx
Активность: 0.610.05
Статус: Участник
Student

Создано: 08 августа 2010 03:38
· Личное сообщение · #12

Интересный проект!
Vamit пишет:
места общения и кол-ва участников не больше 3-5 значительно повышает эффективность разработки ПО

+1, мы в таких случаях использовали redmine.org для организации проектов
если правильно заточить, о становится вполне удобным

-----
z+Dw7uLu5+jqLCDq7vLu8PvpIPHs7uMh





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

Создано: 08 августа 2010 11:39 · Поправил: Vamit
· Личное сообщение · #13

Виртуализация переходов в VMProtect

Немного терминологии - каждый переход имеет две точки, назовем их так - точка ветвления и точка слияния. Условный переход в точке ветвления имеет два пути - прямой и переход. В точке ветвления происходит разрыв хеширования пикода, т.е. ключ хеширования в этой точке заново инициализируется адресом следующего пикода. В точке слияния разрыва хеширования пикода не происходит, для соблюдения этого условия имеется специальный алгоритм. Следовательно, прямого продолжения пикода в точке ветвления не происходит и выйти на прямой путь или переход можно только через примитив Cmd_Jmp (условный или безусловный).
Пример:
Code:
  1. label1:
  2.                  jz         label2      // jmp way
  3.                  ....      // direct way
  4. label2:
  5.                  ....

label1 - точка ветвления, label2 - точка слияния. В точке ветвления имеем два пути - переход или прямой путь. В точке ветвления условно можно получить два адреса продолжения выполнения пикода - по переходу или по прямому пути. Условно потому, что в точке ветвления ВмПротект вычисляет только один адрес в зависимости от состояния нужных флагов, а затем следует безусловный переход на этот адрес.
Т.е. этот пример с точки зрения ВмПротекта на лету (в ходе выполнения) будет превращен в две модификации для обоих путей - перехода и прямого пути, соответственно:
Code:
  1. label1:
  2.                  // if(== 1)   // jmp way
  3.                  jmp       label2
  4.                  ....     // direct way
  5. label2:
  6.                  ....

Code:
  1. label1:
  2.                  // if(== 0)   // jmp way
  3.                  jmp       direct
  4. direct:
  5.                  ....     // direct way
  6. label2:
  7.                  ....

Теперь о том, как это конкретно работает - перед условным переходом ВмПротект записывает последовательно в стек два кодированных адреса, которые впоследствии превратятся в адреса переходов - direct и jmp. Далее производится анализ нужных флагов, причем анализ может проводиться как на установку, так и на сброс флагов, в результате анализа берется один из кодированных адресов из стека, производится его декодирование и происходит переход на этот адрес.
Таким образом парные (дуальные) переходы, например jz и jnz и т.д., представлены 8 комбинациями (по 4 на каждый): используется адрес перехода в стеке - 1 или 2, фактические флаги - установлены или сброшены, код проверяющий флаги - на установку или сброс и фактический переход - direct или jmp. Проанализировав все эти комбинации, можно 100% точно установить условие перехода в исходном коде.
Но это ещё не всё - вокруг точек ветвления и слияния ВмПротект строит определенные зоны, до точки - зона сохранения контента ВМ (регистры), после точки зона восстановления контента ВМ (регистры), причем восстановление проводится в регистры отличные от сохраненных, таким образом обеспечивается дополнительная защита по сокрытию регистров CPU. Есть ещё одна особенность зоны сохранения контента перед точкой слияния, в ней корректируется ключ хеширования таким образом, чтобы он в точке слияния равнялся адресу пикода, таким образом устраняется разрыв хеширования пикода в точке слияния.
В заключение - пара листингов:
1. Незначительно модифицированый промкод (до девиртуализации)
Code:
  1. 0042B0E0: rvm_08 = 1
  2. 0042B0EB: svm_3 = and ~rvm_08, ~rvm_08
  3. 0042B105: rvm_30 = iEFL
  4. 0042B10C: svm_4 = add 2, svm_3
  5. 0042B110: rvm_1C = iEFL
  6. 0042B117: svm_5 = and ~svm_4, ~svm_4
  7. 0042B126: rvm_38 = iEFL
  8. 0042B12D: rvm_10 = svm_5
  9. 0042B133: svm_6 = and ~rvm_1C, ~rvm_1C
  10. 0042B149: rvm_2C = iEFL
  11. 0042B150: svm_7 = and ~svm_6, 0x00000815
  12. 0042B15F: rvm_24 = iEFL
  13. 0042B166: svm_8 = and ~rvm_38, ~rvm_38
  14. 0042B17C: rvm_24 = iEFL
  15. 0042B183: svm_9 = and ~svm_8, 0xFFFFF7EA
  16. 0042B192: rvm_24 = iEFL
  17. 0042B199: svm_10 = add svm_7, svm_9
  18. 0042B19D: rvm_3C = iEFL
  19. 0042B1A4: rvm_30 = svm_10
  20. 0042B1AA: svm_11 = and ~rvm_30, ~rvm_30
  21. 0042B1D2: rvm_24 = iEFL
  22. 0042B1D9: svm_12 = and ~svm_11, 0x00000080
  23. 0042B1E8: rvm_2C = iEFL
  24. 0042B1EF: rvm_3C = svm_12
  25. 0042B1F5: svm_13 = and ~rvm_30, ~rvm_30
  26. 0042B20A: rvm_1C = iEFL
  27. 0042B211: svm_14 = and ~svm_13, 0x00000800
  28. 0042B220: rvm_3C = iEFL
  29. 0042B227: rvm_38 = svm_14
  30. 0042B22D: svm_15 = and ~rvm_2C, ~rvm_2C
  31. 0042B243: rvm_1C = iEFL
  32. 0042B24A: svm_16 = and ~rvm_3C, ~rvm_3C
  33. 0042B25F: rvm_24 = iEFL
  34. 0042B266: svm_17 = and ~svm_16, ~svm_15
  35. 0042B270: rvm_10 = iEFL
  36. 0042B277: svm_18 = and ~rvm_2C, ~rvm_3C
  37. 0042B28D: rvm_1C = iEFL
  38. 0042B294: svm_19 = and ~svm_18, ~svm_17
  39. 0042B29E: rvm_1C = iEFL
  40. 0042B2A5: rvm_1C = svm_19
  41. 0042B2B0: svm_20 = and ~rvm_1C, ~svm_19
  42. 0042B2C0: rvm_10 = iEFL
  43. 0042B2C7: rvm_24 = svm_20
  44. 0042B2CD: svm_21 = and ~rvm_24, ~rvm_24
  45. 0042B2E3: rvm_10 = iEFL
  46. 0042B2EA: svm_22 = and ~svm_21, 0x00000040
  47. 0042B2F9: rvm_1C = iEFL
  48. 0042B300: svm_23 = shr svm_22, 4
  49. 0042B307: rvm_2C = iEFL
  50. 0042B30E: svm_24 = add __$esp, svm_23
  51. 0042B312: rvm_1C = iEFL
  52. 0042B319: rvm_38 = [svm_24]
  53. 0042B323: rvm_24 = 0xA810D9D2
  54. 0042B329: rvm_1C = 0xA810D631
  55. 0042B32F: rvm_10 = rvm_38
  56. 0042B340: svm_25 = and ~rvm_10, ~rvm_38
  57. 0042B350: rvm_38 = iEFL
  58. 0042B357: svm_26 = and ~svm_25, 0xA85251F7
  59. 0042B366: rvm_1C = iEFL
  60. 0042B36D: svm_27 = and ~rvm_10, 0x57ADAE08
  61. 0042B382: rvm_24 = iEFL
  62. 0042B389: svm_28 = and ~svm_27, ~svm_26
  63. 0042B393: rvm_2C = iEFL
  64. 0042B39A: rvm_38 = svm_28
  65. 0042B408: jmp 0x0042B40D
  66. 0042B40D: label_42B40D:
  67. 0042B4CF: rvm_04 = 3
  68. 0042B59B: label_42B59B:
  69. 0042B65D: svm_29 = add 0xFFFFFFE0, rvm_10
  70. 0042B672: rvm_14 = iEFL
  71. 0042B679: [svm_29] = rvm_30

2. Девиртуализованный декомпилятором код
Code:
  1. 0042B0E0: rvm_08 = 1
  2. 0042B0EB: rvm_10 = cmp rvm_08, 2
  3. 0042B1D9: jnl 0x0042B59B
  4. 0042B4CF: rvm_04 = 3
  5. 0042B59B: label_42B59B:
  6. 0042B65D: svm_29 = rvm_10 + 0xFFFFFFE0
  7. 0042B679: [svm_29] = rvm_30

3. А это исходный код, который был защищен
Code:
  1.                  mov       eax, 1
  2.                  cmp       eax, 2
  3.                  jnl       label6
  4.                  mov       eax, 3
  5. label6:
  6.                  mov       res, eax

чтобы получить его, как видно, осталось совсем немного - нужно сделать три шага:
- произвести поглощение стековых переменных (svm)
- восстановить цепочку соответствий регистров CPU регистрам ВМ (rvm)
- ассемблировать этот условный код

-----
Everything is relative...





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

Создано: 18 августа 2010 16:19
· Личное сообщение · #14

Последние три шага сделаны, вот исходный код куска защищенной функции, полученный декомпилятором:
Code:
  1. ++++++++++++++++++++++++++++++++++++
  2.   Section asm
  3. ++++++++++++++++++++++++++++++++++++
  4.  
  5. 0042B0DD: lea esp, dword ptr [esp + 4]
  6. 0042B0E0: mov eax, 1
  7. 0042B0EB: cmp eax, 2
  8. 0042B408: jnl 0x004011DB
  9. 0042B4CF: mov eax, 3
  10. 0042B679: mov dword ptr [ebp + 0xFFFFFFE0], eax


-----
Everything is relative...




Ранг: 12.3 (новичок), 2thx
Активность: 0.010
Статус: Участник

Создано: 18 августа 2010 16:38
· Личное сообщение · #15

Выглядит заманчиво ) Когда можно будет потестить vmp-декомпилятор?




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

Создано: 18 августа 2010 18:17
· Личное сообщение · #16

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

-----
Everything is relative...





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

Создано: 19 августа 2010 18:06
· Личное сообщение · #17

Vamit пишет:
и получать рабочий дамп

Если больше одной ВМ, чтоб получить рабочий дамп, декомпилить надо код загрузчика.

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





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

Создано: 20 августа 2010 09:30
· Личное сообщение · #18

Bronco
Какая разница сколько ВМ, они ведь не сидят друг на друге а работают последовательно. А рабочий дамп - имеется ввиду под дебагером, OllyDbg в частности, когда прога уже распакована по своим сегментам и можно выполнять её код, это необходимо для работы декомпилятора.

-----
Everything is relative...




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

Создано: 07 сентября 2010 17:15
· Личное сообщение · #19

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

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





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

Создано: 10 октября 2010 18:55 · Поправил: Vamit
· Личное сообщение · #20

Декомпилирован первый реальный сеанс вмпротекта. Вот результат:
Code:
  1. 01AB60A0: pushfd 
  2. 01AB60C3: cmp dword ptr [1AB1A76], 0      // 0
  3. 01AB62C0: jz 0x01AAD926                   // 1AB68F2
  4. 01AB638E: cmp dword ptr [1AB1A76], 1
  5. 01AB6574: jz 0x01AAD8FD                   // 1AB6760
  6. 01AB6626: popfd 
  7. 01AB66B2: retn 
  8. 01AB6760: pop ecx
  9. 01AB6844: hlt                             // break picode tape
  10. 01AB68F2: mov ebp, esp
  11. 01AB6929: sub esp, 0x00000800
  12. 01AB6A26: mov esi, dword ptr [1A3F8A0]    // kernel32.VirtualProtect
  13. 01AB6A4B: cld 
  14. 01AB6A83: push ebp
  15. 01AB6A8A: push 4
  16. 01AB6A8F: push 0x0007A786
  17. 01AB6AA0: push 0x00401000
  18. 01AB6AA0: call esi
  19. 01AB6B7D: push ebp
  20. 01AB6B83: push 4
  21. 01AB6B88: push 0x00012327
  22. 01AB6B99: push 0x0047C000
  23. 01AB6B99: call esi
  24. 01AB6C76: push ebp
  25. 01AB6C7C: push 4
  26. 01AB6C81: push 0x00009B40
  27. 01AB6C92: push 0x01A0A000
  28. 01AB6C92: call esi
  29. 01AB6D8A: mov eax, 0x01A515F8
  30. 01AB6DB1: mov edx, 0x00401000
  31. 01AB6DC2: mov esi, 0x01AACF78
  32. 01AB6E31: jmp 0x01AACF78


-----
Everything is relative...





Ранг: 748.2 (! !), 390thx
Активность: 0.370
Статус: Участник
bytecode!

Создано: 10 октября 2010 19:11
· Личное сообщение · #21

красота!

-----
Флэш, ява, дотнет - на завтрак, обед и ужин. Unity3D на закуску.





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

Создано: 10 октября 2010 19:13
· Личное сообщение · #22

это ручной перевод псевдокода?

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




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

Создано: 10 октября 2010 19:15
· Личное сообщение · #23

Нет, это F1.




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

Создано: 11 октября 2010 01:22 · Поправил: daFix
· Личное сообщение · #24

Как долго все ждали этого!
Когда появится в доступе?
И до кучи - всё ещё обязательно создание дампа + цепляние секции виртуальной машины?

-----
Research For Food





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

Создано: 11 октября 2010 08:10
· Личное сообщение · #25

Если кто не понял - это декомпилированный код старенькой версии самого вмпрота, начиная с ОЕП.
daFix пишет:
Когда появится в доступе?

Ответ в посте №16 на этой странице. Это же только первый реальный код...
всё ещё обязательно создание дампа
не знаю что это такое - какой заход в вм хотим декомпилировать, тот и должен быть доступен в Ольке
цепляние секции виртуальной машины
это для декомпиляции обязательно, но для кода совсем не смертельно...

-----
Everything is relative...




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

Создано: 11 октября 2010 08:59
· Личное сообщение · #26

daFix
Создание дампа не обязательно. Но это декомпилер, а не распаковщик. Поэтому нужно найти адрес на котором программа будет после распаковки и брякнуться там. После этого вызовы ВМ можно расчистить.

daFix пишет:
цепляние секции виртуальной машины

Бред... Вы когда-нибудь снимали вмпротект? Какие ещё дампы секций? Вмпрот в отличие от многих своих братьев хранит ВМ не в выделенной памяти, а в своих же секциях. О каком цепляние секции виртуальной машины может идти речь?




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

Создано: 11 октября 2010 09:07 · Поправил: ClockMan
· Личное сообщение · #27

int пишет:
Бред... Вы когда-нибудь снимали вмпротект? Какие ещё дампы секций?

daFix Имел в веду что для работы VMSweeper нужно прикручивать пустую секцию в конец файла...

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





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

Создано: 11 октября 2010 10:37
· Личное сообщение · #28

Vamit, int, ClockMan, извините, думал что он хранит виртуалку в выделенной памяти

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

Спасибо за разъяснение

int пишет:
Вы когда-нибудь снимали вмпротект?

Да, но без опции виртуальной машины

-----
Research For Food




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

Создано: 11 октября 2010 12:44
· Личное сообщение · #29

daFix пишет:
Да, но без опции виртуальной машины

это как? в вмпротекте нельзя выбрать чтобы было без вм, там только их количество от 1 до 10.



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

Создано: 11 октября 2010 13:06
· Личное сообщение · #30

ThugboyZ пишет:
это как? в вмпротекте нельзя выбрать чтобы было без вм, там только их количество от 1 до 10.


Можно, Опция Mutation - обфускация без виртуализации. RTFM



Ранг: 1045.7 (!!!!), 31thx
Активность: 0.570
Статус: Участник

Создано: 11 октября 2010 13:08
· Личное сообщение · #31

ThugboyZ пишет:
это как? в вмпротекте нельзя выбрать чтобы было без вм, там только их количество от 1 до 10.

Просто навесить как пугало не обрабатывая процедуры.


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


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