Чи можливо "декомпілювати" Windows .exe? Або хоча б переглянути Асамблею?


237

Мій друг завантажив з Facebook щось зловмисне програмне забезпечення, і мені цікаво подивитися, що це робить, не заразивши себе. Я знаю, що ви не можете дійсно декомпілювати an .exe, але чи можу я принаймні переглянути його у зборах чи приєднати налагоджувач?

Відредагуйте, щоб сказати, що це не виконавчий файл .NET, не заголовок CLI.


3
зловмисне програмне забезпечення з facebook ?? ви могли б пояснити це
Адітя Мукерджі

Вибачте за надто пізню відповідь ... але я вважаю, що це сталося так: вона запустила шматок шкідливого програмного забезпечення, яке в якийсь момент розсипало всі її контакти у ФБ (мені) із посиланням на "відео", яке просило вас завантажити "новий кодек". Я припускаю, що він поводився як черв'як у цьому сенсі.
swilliams

Відповіді:


446

За допомогою налагоджувача ви можете пройти інтерактивну збірку програми.
За допомогою розбирача ви можете переглянути збірку програми більш детально.
За допомогою декомпілятора ви можете повернути програму в частковий вихідний код, припускаючи, що ви знаєте, про що вона написана (про що ви можете дізнатися з безкоштовними інструментами, такими як PEiD - якщо програма упакована, вам доведеться розпакувати її спочатку АБО Визначте - це просто, якщо ви не можете знайти PEiD ніде. У DIE на даний момент є потужна спільнота розробників на github ).

Налагоджувачі:

  • OllyDbg , безкоштовно, чудовий 32-розрядний налагоджувач, для якого ви можете знайти численні плагіни та сценарії, створені користувачем, щоб зробити його ще кориснішим.
  • WinDbg , безкоштовно, досить здібний налагоджувач від Microsoft. WinDbg особливо корисний для перегляду внутрішніх систем Windows, оскільки він знає більше про структури даних, ніж інші налагоджувачі.
  • SoftICE , SICE для друзів. Комерційний розвиток та розвиток припинилися в 2006 році. SoftICE - це настільки важкий інструмент, який працює під операційною системою (і зупиняє всю систему при виклику). SoftICE все ще використовується багатьма професіоналами, хоча це може бути важко отримати і може не працювати на деяких апаратних засобах (або програмному забезпеченні, а саме - не працюватиме на картах Vista або NVIDIA gfx).

Розбирачі:

  • IDA Pro (комерційний) - верхня частина лінії розбиральник / відладчик. Використовується більшістю професіоналів, як аналітики зловмисного програмного забезпечення тощо. Хоча коштує досить багато доларів (існує безкоштовна версія , але вона досить обмежена)
  • W32Dasm (безкоштовно) - трохи застаріла, але робота виконана. Я вважаю, що W32Dasm в цей час залишає програмне забезпечення, і є численні створені користувачем хаки, щоб додати дуже корисну функціональність. Вам доведеться озирнутися, щоб знайти найкращу версію.

Декомпілятори:

  • Visual Basic: VB Decompiler , комерційний, виробляє дещо ідентифікований байт-код.
  • Delphi: DeDe , безкоштовно, видає вихідний код хорошої якості.
  • C: HexRays , комерційний, плагін для IDA Pro тієї ж компанії. Дає чудові результати, але коштує великий долар і не продаватиметься нікому (або я так чую).
  • .NET (C #): dotPeek , безкоштовно, декомпілює .NET 1.0-4.5 збірки до C #. Підтримка файлів .dll, .exe, .zip, .vsix, .nupkg та .winmd.

Деякі пов'язані інструменти, які можуть стати у пригоді у будь-якому, чим ви займаєтесь, - це редактори ресурсів, такі як ResourceHacker (безкоштовний) та хороший шестигранний редактор, наприклад Hex Workshop (комерційний).

Крім того, якщо ви робите аналіз зловмисного програмного забезпечення (або використовуєте SICE) , я від усієї душі пропоную запустити все у віртуальній машині, а саме VMware Workstation . У випадку SICE він захистить вашу фактичну систему від BSOD, а у випадку зловмисного програмного забезпечення захистить вашу фактичну систему від цільової програми. Про аналіз зловмисного програмного забезпечення з VMware ви можете прочитати тут .

Особисто я працюю з Olly, WinDbg & W32Dasm та деякими меншими утилітами.

Також пам’ятайте, що розбирання або навіть налагодження програмного забезпечення інших людей, як правило, проти EULA :)


16
Я вдячний останнім абзацом за його загальну, добру пораду, але це цікаво в контексті питання: я сумніваюся, що вірус приходить з EULA! ;-)
PhiLho

4
Насправді, деякі зловмисні програми і навіть трояни пізніх пізніше мали правові документи EULA (ох, ці росіяни ..) Звичайно, їх можна ігнорувати (і) ігнорувати дослідженнями, тому що можна припустити, що ніхто не висунеться подати їх до суду. .. Крім того, вони, як правило, занадто погано написані, щоб означати що-небудь у суді в будь-якому випадку.
anon6439

2
Зауважте, що попередня версія IDA Pro безкоштовна для некомерційного використання.
Саймон Бучан

6
Зауважте, що більшість шкідливих програм за ці дні (принаймні, зібрані зловмисні програми) можуть легко виявити, чи працює вона у VMWare, Virtual PC, WINE, VirtualBox тощо
Mick

Якщо ви працюєте у вітрині, стежте за атакою Blue Pill.
Сікі Лін

44

Чудовий пост psoul відповідає на ваше запитання, тому я не повторюю його добру роботу, але я вважаю, що це допоможе пояснити, чому це одразу цілком правильне, але також жахливо нерозумне питання. Зрештою, це місце для навчання, правда?

Сучасні комп'ютерні програми виробляються за допомогою ряду перетворень, починаючи з введення текстових інструкцій, що читаються людиною (звані "вихідний код") і закінчуючи комп'ютерним текстом інструкцій (називаються альтернативно "двійковим" або "машинним" код ").

Спосіб, яким комп'ютер виконує набір інструкцій машинного коду, зрештою дуже простий. Кожна дія, яку може здійснити процесор (наприклад, прочитати з пам'яті, додати два значення), представлена ​​числовим кодом. Якби я сказав вам, що число 1 означає крик, а число 2 - хихикання, а потім тримав картки з 1 або 2 на них, очікуючи, що ви кричатимете чи хихикатимемо відповідно, я б використовував те, що є по суті тією ж системою, яку використовує комп'ютер діяти.

Бінарний файл - це лише набір тих кодів (зазвичай називають "коди оп") та інформації ("аргументи"), на яку діють коди оп.

Тепер, мова складання - це комп'ютерна мова, де кожне командне слово на мові представляє рівно один оп-код на процесорі. Існує прямий переклад 1: 1 між командою мови збірки та оп-кодом процесора. Ось чому збірка кодування для процесора x386 відрізняється від збірки кодування для процесора ARM.

Розбирання відбувається просто так: програма читає двійковий код (машинний код), замінюючи оп-коди на їх еквівалентні команди мовної збірки та виводить результат у вигляді текстового файлу. Це важливо зрозуміти; якщо ваш комп'ютер може читати двійкове, ви також можете його читати також вручну, з таблицею оп-коду в руці (ick) або через розбирач.

У розборщиків є кілька нових хитрощів, і все, але важливо розуміти, що розбирач - це врешті-решт механізм пошуку та заміни. Ось чому будь-яка особа, яка забороняє її, в кінцевому рахунку продуває гаряче повітря. Ви не можете відразу дозволити комп'ютеру читати дані програми, а також заборонити комп'ютеру читати дані програми.

(Не зрозумійте мене неправильно. Були спроби зробити це. Вони працюють як DRM на файлах пісень.)

Однак існують застереження щодо підходу до розбирання. Імена змінних неіснуючі; такої речі не існує у вашому процесорі. Бібліотечні дзвінки заплутані як пекло і часто вимагають розбирати подальші бінарні файли. І складання важко, як чорт, читати в кращих умовах.

Більшість професійних програмістів не можуть сидіти і читати мову складання, не боліючи. Для любителя це просто не відбудеться.

Так чи інакше, це дещо затьмарене пояснення, але, сподіваюся, це допомагає. Кожен може сміливо виправляти будь-які неправильні твердження з мого боку; пройшло багато часу. ;)


1
Це детальніше розбирає, але я хотів би почути детальну інформацію про декомпіляцію. Це, ймовірно, так само безрезультатно? Які його застереження?
Прометей

@has: Декомпіляція нативного коду - досить складна проблема, часто виправлення неможливо. Оптимізатори надзвичайно агресивні, часто переводячи вихідний код взагалі нічого. Ви нічого не можете декомпілювати.
Неочікуваний


11

Будь-який гідний налагоджувач може це зробити. Спробуйте OllyDbg . (ред .: який має чудовий розбирач, який навіть декодує параметри викликів WinAPI!)




6

Якщо ви просто намагаєтеся з'ясувати, що робить зловмисне програмне забезпечення, може бути набагато простіше запустити його під чимось на зразок безкоштовного інструменту Process Monitor, який звітуватиме щоразу, коли він намагається отримати доступ до файлової системи, реєстру, портів тощо ...

Також використання такої віртуальної машини, як безкоштовний сервер VMWare , дуже корисно для такої роботи. Ви можете створити "чисте" зображення, а потім просто повертатися до цього щоразу, коли запускаєте шкідливе програмне забезпечення.


4

Ви можете отримати деяку інформацію, переглядаючи її в зборі, але я думаю, що найпростіше це зробити - запустити віртуальну машину і подивитися, що вона робить. Переконайтесь, що у вас немає відкритих акцій або подібного, що воно може перескочити, хоча;)


Так, я подумав про це, але я краще не переживаю проблем із встановленням VM просто для того, щоб його вбити :)
swilliams

1
Щоправда, це клопот у цьому випадку, але я завжди вважаю корисним тримати VM для тестування нового програмного забезпечення або подібних матеріалів. Тоді я можу робити все, що мені заманеться, і просто вирішити не зберігати стан наприкінці і повернутися до чистого VM для наступного запуску.
Роб Прус

4

Бумеранг також, можливо, варто перевірити.


Не зовсім. він руйнується і горить для чогось складнішого, ніж найбільш тривіальних виконуваних файлів.
shoosh


3

Я не можу повірити, поки ніхто не сказав нічого про налагоджувач імунітету .

Імунітет налагоджувач - це потужний інструмент для запису подвигів, аналізу шкідливих програм та зворотних бінарних файлів інженера. Спочатку він базувався на вихідному коді Ollydbg 1.0, але з виправленою помилкою відновлення імен. У ньому добре підтримується Python API для легкої розширюваності, тому ви можете написати свої сценарії python, щоб допомогти вам у аналізі.

Крім того, є хороший Пітер з команди Corelan , який називається mona.py , чудовий інструмент btw.


2

Якщо ви хочете запустити програму, щоб побачити, що вона робить, не заражаючи комп’ютер, використовуйте таку віртуальну машину, як VMWare або Microsoft VPC, або програму, яка може пісочницю програму, як SandboxIE




2

Я б сказав, що у 2019 році Ghidra ( https://ghidra-sre.org/ ) варто перевірити. Це відкритий код (і безкоштовний), має феноменальні можливості аналізу коду, включаючи можливість декомпілювати весь шлях до досить читабельного коду С.


Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.