Дієтичний двигун - Capstone - The Ultimate Disassembler

Остаточний розбирач

disassembler

Побудова та програмування за допомогою “дієтичного” двигуна

Ця документація представляє, як побудувати Capstone для архітектури X86, щоб мінімізувати бібліотеки для цілей вбудування.

Пізніше частина представляє API, пов’язані з цією функцією, і рекомендує області, на які слід звернути увагу програмістам у своєму коді.

1. Побудова “дієтичного” двигуна

Як правило, ми використовуємо Capstone для звичайних застосувань, де вага бібліотеки насправді не має значення. Дійсно, станом на версію 2.1-RC1, весь двигун займає лише 1,9 МБ, включаючи всі архітектури, і цей розмір не викликає проблем у більшості людей.

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

До цього об'єкта, починаючи з версії 2.1, Capstone підтримує режим дієти, в якому видаляються деякі некритичні дані, що робить розмір двигуна принаймні на 40% меншим.

За замовчуванням Capstone будується у стандартному режимі. Для побудови дієтичного двигуна виконайте: (демонстрація на системах * nix)


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

Бібліотека архітектури Стандартний двійковий двійковий файл “Дієта” Зменшений розмір
Рука libcapstone.a
libcapstone.dylib
730 КБ
599 КБ
603 КБ
491 КБ
18%
19%
Arm64 libcapstone.a
libcapstone.dylib
519 КБ
398 КБ
386 КБ
273 КБ
26%
32%
Міпи libcapstone.a
libcapstone.dylib
206 КБ
164 КБ
136 КБ
95 КБ
34%
43%
PowerPC libcapstone.a
libcapstone.dylib
140 КБ
103 КБ
69 КБ
50 КБ
51%
52%
X86 libcapstone.a
libcapstone.dylib
809 КБ
728 КБ
486 КБ
452 КБ
40%
38%
Поєднайте всі арки libcapstone.a
libcapstone.dylib
2,3 МБ
1,9 МБ
1,6 МБ
1,3 МБ
31%
32%