Kyrrstæð greiningartól (e. Static Analysis Tools)
Kyrrstæð greining þýðir að skoða forrit án þess að keyra það.
Helstu flokkarnir eru:
- Baksmali: þýðir vélarkóða í smalamál (objdump, r2)
- Bakþýðandi: þýðir vélarkóða aftur í C-líkan kóða (Ghidra, IDA, Binary Ninja)
Bera saman bakþýðendur
dogbolt.org keyrir Ghidra, Binary Ninja og IDA á tvíundaskrána þína og sýnir úttak þeirra hlið við hlið — gagnlegt þegar eitt tól gefur óskýrt úttak. Virkar einungis fyrir mjög lítil forrit
strings
Prentar alla lesanlega textastrengina í tvíundaskránni. Stundum gagnlegt til að fá yfirsýn yfir hvað forritið gerir
strings challenge
strings -tx challenge # Sýnir vistfang hvers strengs (hex)
strings -n 5 challenge # Sýnir aðeins strengi sem eru 5+ stafir að lengd
file
Greinir gerð skráarinnar, hvort hún sé ELF, script, PDF osfrv.
file challenge
# challenge: ELF 64-bit LSB executable, x86-64, dynamically linked
objdump
Disassembly: þýðir vélarkóða í smalamál.
objdump -d challenge # Sýnir alla keyranlega hluta
objdump -d -M intel challenge # Notar Intel setningafræði
AT&T vs Intel setningafræði
objdump notar AT&T syntax sjálfkrafa (mov %rax, %rbx) en Intel syntax er lesanlegri (mov rbx, rax). Notaðu -M intel.
Ghidra
Ghidra er ókeypis bakþýðandi og baksmali frá NSA.
Uppsetning: Sækja af ghidra-sre.org
Helstu gluggar
| Gluggi | Lýsing |
|---|---|
| Symbol Tree | Listi yfir öll föll og tákn |
| Decompiler | Þýðir assembly yfir í C-líkan kóða |
| Listing | Sýnir assembly kóðann |
| Functions | Listi yfir öll föll |
Vinnulag
- Byrjaðu á
mainí Symbol Tree - Lestu úttak bakþýðandans og endurskírðu föll og breytur þegar þú skilur þau
- Athugaðu gagntýpur — Ghidra giskar stundum rangt, hægrismelltu og breyttu
- Þegar þú skilur reiknirit, settu það upp í Python og prófa á móti forritinu
Ráð
- Leitaðu að
mainfallinu í Symbol Tree til að byrja - Hægrismelltu á föll til að endurskíra þau, hjálpar til við að skilja kóðann
Glykillinn hoppar á vistfangCTRL+Fleitar í kóðanum
Dæmi um úttak Ghidra bakþýðanda:
void main(void) {
char local_48 [64];
puts("Sláðu inn lykilorðið: ");
gets(local_48);
if (strcmp(local_48, "swordfish") == 0) {
puts("Rétt!");
}
}
Binary Ninja
Annar bakþýðandi og baksmali, til frí útgáfa sem hefur eitthverjar takmarkanir en virkar vel fyrir flest CTF dæmi
Einkennist af mörgum intermediate representation-stigum sem hjálpa við skilning: High Level IL, Medium Level IL, og pseudo-C. Margir telja viðmótið einfaldara en Ghidra.
IDA
IDA hefur lengi vel verið talið besti bakþýðandinn, er hinsvegar mjög dýr en það er til IDA Free sem er ókeypis útgáfa fyrir 32/64-bit x86
Radare2 (r2)
Skipanalínutól fyrir disassembly. Flóknara en Ghidra en mjög kraftmikið.
r2 challenge # Opnar skrána
aa # Greinir öll föll (analyze all)
afl # Listar öll föll (analyze function list)
s main # Hoppar í main fallið
pdf # Sýnir disassembly fyrir fall (print disassembly function)
Note
Cutter er myndrænt viðmót fyrir radare2, auðveldara fyrir byrjendur.
Samanburður tóla
| Tól | Kostir | Gallar |
|---|---|---|
| Ghidra | Ókeypis, öflugur bakþýðandi | Hægt að setja upp, Java UI |
| Binary Ninja | Einfalt viðmót | Full útgáfa kostar |
| IDA Free | Áreiðanlegur | Takmarkanir á ókeypis útgáfu |
| objdump | Alltaf til staðar | Enginn bakþýðandi, einungis baksmali |
| r2 | Mjög öflugur | Flókin skipanafræði |
Mælum með að velja sér eitt tól og læra vel á það. Athugið að stundum þarf að nota Ghidra þar sem Ghidra er með mjög fjölbreyttan stuðning fyrir mismunandi högun