Motor de dietă - Capstone - Ultimul dezasamblator

Ultimul dezasamblator

motor

Construire și programare cu motor „dietă”

Această documentație introduce cum să construim arhitectura Capstone pentru X86 pentru a minimiza bibliotecile în scopul încorporării.

Partea ulterioară prezintă API-urile legate de această caracteristică și recomandă zonele pe care programatorii ar trebui să le acorde atenție în codul lor.

1. Construirea unui motor de „dietă”

De obicei, folosim Capstone pentru aplicații obișnuite, unde greutatea bibliotecii nu contează cu adevărat. Într-adevăr, începând cu versiunea 2.1-RC1, întregul motor are doar 1,9 MB, inclusiv toți arhitecții, iar această dimensiune nu ridică nicio problemă majorității oamenilor.

Cu toate acestea, există cazuri în care dorim să încorporăm Capstone în medii speciale, cum ar fi driverul kernel-ului OS sau firmware-ul, în care dimensiunea acestuia ar trebui să fie cât mai mică posibil din cauza restricției de spațiu. Deși putem întotdeauna să compilăm doar arhitecți selectați pentru a face bibliotecile mai compacte, totuși dorim să le reducem mai mult.

Spre acest obiect, de la versiunea 2.1, Capstone acceptă modul dietă, în care sunt eliminate unele date non-critice, făcând astfel dimensiunea motorului cu cel puțin 40% mai mică.

În mod implicit, Capstone este construit în modul standard. Pentru a construi un motor de dietă, faceți: (demonstrația este pe sistemele * nix)


Dacă construim doar arhitecți selectați, motorul este și mai mic. Găsiți mai jos dimensiunea pentru fiecare arhitectură individuală compilată în modul dietă.

Biblioteca de arhitectură Binar standard „Diet” binar Dimensiune redusă
Braţ libcapstone.a
libcapstone.dylib
730 KB
599 KB
603 KB
491 KB
18%
19%
Arm64 libcapstone.a
libcapstone.dylib
519 KB
398 KB
386 KB
273 KB
26%
32%
Mips libcapstone.a
libcapstone.dylib
206 KB
164 KB
136 KB
95 KB
34%
43%
PowerPC libcapstone.a
libcapstone.dylib
140 KB
103 KB
69 KB
50 KB
51%
52%
X86 libcapstone.a
libcapstone.dylib
809 KB
728 KB
486 KB
452 KB
40%
38%
Combinați toate arcurile libcapstone.a
libcapstone.dylib
2,3 MB
1,9 MB
1,6 MB
1,3 MB
31%
32%