Програмне забезпечення та комп'ютерне будівництво
Використання диспамплерів і декомпілярів для аналізу програмного забезпечення Proprietary
Table of Contents
Що таке декомпіляри та декомпіляри?
Аналізуючи фірмове програмне забезпечення без доступу до свого початкового коду часто вимагає спеціалізованих інструментів. Розбирання та декомпетери є двома категоріями реверсотехнікних інструментів, які дозволяють дослідникам, аналітикам безпеки та розробникам вивчити виконувані бункери на різних рівнях абстракції. диспасемлер] читає код машини і переводить його в мову збирання людини, що відображає низький рівень інструкцій процесора. decompiler не має можливості реконструювати більш високий рівень програмування або складене програмне забезпечення, яке працює на початковому рівні.
Як працює демонтажники
Бібліотечний аналіз даних та зображень для диспансерів, які працюють безпосередньо на бінарних файлах—ПЕ, ELF, Mach-O або сирих прошивок — за допомогою інструкцій байтів та картування їх відповідної збірки. Процес спирається на архітектуру процесора (ISA), такі як x86, ARM, MIPS. Розбирання використовують лінійні ковтки (покроковування через код послідовно) або рекурсивні траєктори (потоку контролю за плином) для визначення інструкцій. Рекурсивний дисасамблі є більш точним для обробки коду, змішаних з даними або застарілими конструктивними. Сучасні дисемблеми [A:0F1F2G]
Як працює декомпіляри
Декомпетери об'єднують декомблікацію з аналізом, що проходить, щоб підвищити рівень абстрагації. Спочатку вони розбирають бінарні. Потім вони виконують контрольно-flow аналіз для побудови графіка руху управління (CFG) і аналізу даних для відстеження змінного використання та типів. Візерунок відповідає і гілістика застосовуються для реконструкції типових конструкцій високого рівня: петлі, якщо ‐then‐else блоки, вимикача виписок та функції викликів. Вихід зазвичай є структурованою, читувальної форми, як C‐подібний псевдокод. Ні декомпіллер може відмінно відновити втрачені коментарі, локальні імена або оригінальна структура коду, але інструменти, такі як [[F:0] Decom-сервер[H‐Raug‐Raug‐Ram[H‐Ramer[H-Raug‐Ramer[Hoster:] Decom] Decom] Decomramer:] Decomramer:] Decomramedexramer:
Використання диспансерів та декомпетентів у практиці
Аналіз безпеки та дослідження вразливостей
Фахівці безпеки регулярно використовують диспасерти та декомпетери для перевірки фірмового програмного забезпечення для слабких сторін. За допомогою вивчення бінарних, вони можуть виявити помилки з питань запобігання пам'яті, неправильне введення, або твердихкодованих облікових даних. Нестабільні інциденти — так як відкриття вразливої вразливості серця у OpenSSL або задняті в прошивки —часто почалися з бінарним аналізом. Побудований код допомагає аналітикам зрозуміти логіку складних функцій без голодування на сторінках складання.
Аналіз шкідливих програм
Зразки шкідливих програм практично ніколи не розподілені з вихідним кодом. Аналізи спираються на розбирання, щоб зрозуміти шкідливе навантаження, визначити зміни шифрування, а також контрольний зв'язок. Декомпетери прискорюють цю роботу шляхом перетворення обфускованих бінарних брутів в більш кероване представлення псевдокоду. Інструменти, такі як Radare2 і Ghidra особливо популярні в цій області, оскільки вони безкоштовні і помітні.
Відновлення втраченого або спадкового коду
Організація, що підтримує древнє програмне забезпечення, іноді втрачають вихідне джерело через поганий контроль або кадровий оборот. Декомпіляція може допомогти реконструювати функціональний еквівалент бази коду, що дозволяє обслуговувати або перевозити на сучасні платформи. Хоча декомпіляція може вимагати суттєвого очищення, вона забезпечує початкову точку, яка не може бути неможливим для отримання.
Вивчення пропріетних алгоритмів та взаємозамінності
Компетатори або відкриті-source-проекти можуть знадобитися переохотитити з фірмовими протоколами або форматами файлів. Розбирання відповідних бункерів показує структуру алгоритму, формати даних та державні машини. Це поширене у розробці сумісних замінних крапель для програмного забезпечення для спадщини. Аналогічно розробники хочуть писати плагіни або продовжити закриті програми, повинні часто зворотно активувати бінарні інтерфейси.
Популярні дисперси та декомпіляри
IDA Pro (Інтерактивний демонтажник)
IDA Pro є дефолтом для бінарного аналізу. Він підтримує десятки архітектури процесора, пропонує потужний інтерфейс сценаріїв (IDAPython), і інтегрується з плагіном Hex‐Rays. Його крос-референції, графі види, і дебугер робить його комплексною платформою для обох розбирання і декомпіляції. IDA є комерційним програмним забезпеченням, але версія Freeware (IDA Free) доступна для обмеженого використання.
Гидра
Розроблено Національним агентством безпеки і випустили як відкритий джерело, Ghidra суперників IDA в багатьох відношеннях. Він включає вбудований декомпілер, програмований API (Python або Java), а також спільні функції аналізу. Декомпетент Ghidra особливо сильний для x86, ARM та PowerPC. Він безкоштовно використовувати і має велику спільноту розробників плагінів. Для отримання додаткової інформації див. Ghidra офіційному сайті.
Рад2
Radare2 – це команда, керована реінжинірінгова рамка, яка пропонує декомпіляція (через або плагіни, і можливості для дебурування. Він є дуже модульним і скриптовим, що робить його ідеальним для автоматизації та інтеграції в більші трубопроводи аналізу. Radare2 є безкоштовним і відкритим вихідним.
Hex-Rays Декомпетер
Hex‐Rays є комерційним декомпілером для IDA Pro, який підтримує x86, x64, ARM та PowerPC. Він виробляє помітно чистий C-подібний псевдокод і широко розглядається як найбільш точний декомпілер доступний. Багато фірм безпеки та дослідників вразливостей розглядають Hex‐Rays, необхідні для їх робочих процесів.
Інші інструменти
- Hopper (macOS і Linux) – пропонує як розбирання та декомпіляція з зручним інтерфейсом.
- Binary Ninja] – сучасна реверс-платформа з фокусом на проникності та міцної проміжної мови.
- objdump] і / (GNU binutils) – базові дисамплери для швидкого огляду на системи Unix.
Виклики та обмеження
Комплексність розрахунків
Компіляторні оптимізації (вкл., петля непрокат, постійний склад) виробляють машинний код, який істотно розширюється з оригінального джерела. Декомпіляри повинні реконструювати високорівневі семантики з низьких послідів рівня, які можуть призвести до неоднорідних або неправильних виходів. Розширені техніки обфускації — наприклад, віртуалізація — на основі паток, контрольно-розкладні, а також припливні предика — це нескладний аналіз.
Юридична практика та ліцензування
Зворотне інженерне програмне забезпечення є правово обмеженим у багатьох юрисдикціях. Цифровий закон про авторське право (DMCA) в Сполучених Штатах, Директива ЄС та аналогічні закони по всьому світу містять положення, які можуть звільнити зворотну інженерію для взаємозабілізації, дослідження безпеки або освіти, але межі різні. Завжди консультуйте юридичний радник перед розбиранням або декомпіляція продукту, який ви не володієте або маєте дозвіл на аналіз. Корисний ресурс є Електронний огляд Frontier Foundation's .
Неповторний вихід
Не можна обробляти всі методи обробки (наприклад, непрямі стрибки через комп'ютерні адреси), а декомпетери можуть не реконструювати складні структури даних або функції в режимі онлайн. Вихід часто вимагає ручного виправлення і анотації. Досвідчені аналітики розвивають психічні моделі програми шляхом зміни між розбиранням і декомпільованими видами.
Юридична та етична рамка
Використання дисамплерів і декомпілярів без авторизації може порушити контракти або закони про авторське право. Однак існує кілька юридичних безпечних гавань. Дослідники безпеки зазвичай захищені при проведенні досліджень вразливостей, визнаних Актом з питань кібербезпеки США (CISA) та настанов з відділу правосуддя. Директива Європейського Союзу щодо авторського права в цифровому одноринку дозволяє реінжинірувати інженерію для взаємозамінності, доки інструменти не використовуються для незаконних цілей. Крім того, доктрина «порушення» в США може обкладати декомпіляція для аналізу, освіти або пародія.
Етичний використання вимагає дотримання прав розробника програмного забезпечення. Не використовуйте вилучення коду, щоб відтворити точний функціонал, який не публікувати конфіденційні алгоритми власності без дозволу. Промислові найкращі практики заохочують відповідальне розкриття вразливостей, які знаходяться через зворотну інженерію.
Для більш глибокого занурення в юридичні аспекти, враховуйте читання U.S. Index Використовувати офіс і CISA text.
Майбутні тренди в декомплаєнсі та декомпіляції
Machine‐Learning Enhanced Аналіз
Останні дослідження використовують нейромережі для класифікації функцій, виявлення змінних типів, а також декомпілювати бінарні хіппети безпосередньо на високорівневі мовні виписки. Хоча ще експериментальні, AI‐assisted зворотна інженерія обіцяє прискорити аналіз нефузованих або великих сполучних речовин.
Покращений покриття платформи
Як нові навчальні набори з'являються (RISC‐V, WebAssembly та ін.), демонтажники та декомпілери додають підтримку. Ghidra, наприклад, вже підтримує понад 30 архітектурних архітектурних та громадських внесків, що продовжують свій доступ до мікроконтролерів Інтернету речей та віртуальних машин.
Хмарно-розмальована співпраця
Утилитi, як хмарний аналіз Бінарних Ninja та спільні файли проекту Ghidra дозволяють розподіленим зворотним інженерам. Цей тренд дзеркалює ширше переміщення до розробки програмного забезпечення та особливо вигідно для аналізу великих, складних порушень або програм зловмисних програм.
Висновок
Розбирання та декомпіляри є незамінними інструментами для отримання видимості в фірмовому програмному забезпеченні. Вони дозволяють проводити аудит безпеки, аналіз шкідливих програм, відновлення коду та взаємопроникність без доступу до оригінального коду джерела. IDA Pro, Ghidra, Radare2 та Hex‐Rays кожен пропонує відмінні переваги, а прозора середовище open‐source продовжує демократизувати ці потужні інструменти. Однак користувачі повинні орієнтуватися на правові та етичні обмеження, щоб забезпечити більш надійний рівень програмної забезпечення та декомпіляції.