hacktricks/crypto-and-stego/cryptographic-algorithms/unpacking-binaries.md

5.4 KiB

Leer AWS-hacking vanaf nul tot held met htARTE (HackTricks AWS Red Team Expert)!

Ander maniere om HackTricks te ondersteun:

Identifiseer gepakte binêre lêers

  • Gebrek aan strings: Dit is algemeen om te vind dat gepakte binêre lêers amper geen string het nie.
  • Baie ongebruikte strings: Ook, wanneer 'n kwaadwillige program 'n soort kommersiële pakker gebruik, is dit algemeen om baie strings sonder kruisverwysings te vind. Selfs as hierdie strings bestaan, beteken dit nie dat die binêre lêer nie gepak is nie.
  • Jy kan ook van hulpmiddels gebruik maak om te probeer vind watter pakker gebruik is om 'n binêre lêer te pak:
  • PEiD
  • Exeinfo PE
  • Language 2000

Basiese Aanbevelings

  • Begin deur die gepakte binêre lêer van onder af in IDA te analiseer en beweeg opwaarts. Ontpakkers verlaat sodra die ontspande kode verlaat word, dus is dit onwaarskynlik dat die ontspakker uitvoering aan die ontspande kode gee aan die begin.
  • Soek na JMP's of CALLs na registers of geheue-areas. Soek ook na funksies wat argumente druk en 'n adresrigting en dan retn aanroep, omdat die terugkeer van die funksie in daardie geval die adres kan aanroep wat net na dit op die stok gedruk is.
  • Plaas 'n afkap-punt op VirtualAlloc aangesien dit spasie in geheue toewys waar die program ontspanne kode kan skryf. Hardloop na gebruikerskode of gebruik F8 om die waarde binne EAX te kry na die uitvoering van die funksie en "volg daardie adres in die dump". Jy weet nooit of dit die area is waar die ontspanne kode gestoor gaan word.
  • VirtualAlloc met die waarde "40" as 'n argument beteken Lees+Skryf+Uitvoer (sekere kode wat uitvoering benodig, gaan hier gekopieer word).
  • Terwyl jy kode ontspan, is dit normaal om verskeie oproepe na rekenkundige bewerkings en funksies soos memcopy of VirtualAlloc te vind. As jy jouself in 'n funksie bevind wat blykbaar net rekenkundige bewerkings uitvoer en miskien 'n paar memcopy , is die aanbeveling om te probeer die einde van die funksie te vind (miskien 'n JMP of oproep na 'n register) of ten minste die oproep na die laaste funksie en hardloop dan daarna aangesien die kode nie interessant is nie.
  • Terwyl jy kode ontspan, merk jy elke keer wanneer jy geheue-areas verander aangesien 'n verandering in geheue-area die begin van die ontspanne kode kan aandui. Jy kan maklik 'n geheue-area dump deur Process Hacker (proses --> eienskappe --> geheue) te gebruik.
  • Terwyl jy probeer kode ontspan, is 'n goeie manier om te weet of jy reeds met die ontspanne kode werk (sodat jy dit net kan dump) om die strings van die binêre lêer te ondersoek. As jy op 'n punt 'n sprong maak (miskien deur die geheue-area te verander) en jy besef dat baie meer strings bygevoeg is, kan jy weet jy werk met die ontspanne kode.
    Maar as die pakker reeds baie strings bevat, kan jy sien hoeveel strings die woord "http" bevat en sien of hierdie getal toeneem.
  • Wanneer jy 'n uitvoerbare lêer van 'n geheue-area dump, kan jy sommige koppe regmaak deur PE-bear te gebruik.
Leer AWS-hacking vanaf nul tot held met htARTE (HackTricks AWS Red Team Expert)!

Ander maniere om HackTricks te ondersteun: