Skip to content

Kyrrstæð greiningartól (e. Static Analysis Tools)

Kyrrstæð greining þýðir að skoða forrit án þess að keyra það.

Helstu flokkarnir eru:

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

  1. Byrjaðu á main í Symbol Tree
  2. Lestu úttak bakþýðandans og endurskírðu föll og breytur þegar þú skilur þau
  3. Athugaðu gagntýpur — Ghidra giskar stundum rangt, hægrismelltu og breyttu
  4. Þegar þú skilur reiknirit, settu það upp í Python og prófa á móti forritinu

Ráð

  • Leitaðu að main fallinu í Symbol Tree til að byrja
  • Hægrismelltu á föll til að endurskíra þau, hjálpar til við að skilja kóðann
  • G lykillinn hoppar á vistfang
  • CTRL+F leitar í 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