Anti-disassembly eksempel fra udfordring
|
21-05-2016, 22:20
(Denne besked var sidst ændret: 04-02-2017, 12:46 af iTick.
Årsag: Stavefejl rettet
)
|
|||
|
|||
Anti-disassembly eksempel fra udfordring
Dette er assembly/level 7 koden til August 2015 - Levelbaseret skattejagt
Når koden er assembleret og evt. linket hvis man har lyst til det, snyder det mange disassemblers. Årsagen er den byte der er angivet i junk delen. Det er bare en (velvalgt) byte, som kunne være tekst eller andet. Det er ikke en opcode. Det tror disassemblers, fordi der er en jump til den byte junk. Så disassemblers tror den skal starte med at disassemble der fra, hvilket forrykker alle opcodes her efter. Det jump der er til den junk byte, bliver aldrig kaldt, da sammenligningen der påvirker dette jump, altid giver det samme resultat, og er der kun for at snyde disassemblers. For at undgå faste adresser, bruges eax som en placeholder, når der jumpes til de rigtige opcodes i "ok" sektionen. Det kan nemlig også fortælle en disassembler, at det er den rigtige start af koden. confusion.asm:
Om ikke andet, kan i da lege med det. Koden er her et sted. ;)Jeg har brugt nedenstående bash script til at compile med: (Man behøver ikke linke)
Når man kører dette script, kan man se objdumps fortolkning af disse opcodes. Man kan se, objdump ikke viser den oprindelige assembly:
Hvis intet af dette giver mening, kan du kigge lidt på Linux assembler - En kort introduktion
---
Writing a shellcode decoder stub in assembly is like talking gibberish in such a way that it is still perfectly intelligible. - iTick |
|||
22-05-2016, 00:11
|
|||
|
|||
RE: Antidisassembly eksempel fra udfordring
CMP sætter Zflaget til 0 = FALSE. Derfor hhopper JE instruktionen ikke ned til "junk" - Right? Hvorfor skriver du, "0/TRUE" i kommentaren? Er det mig, der er for længe oppe? :p
|
|||
22-05-2016, 00:23
(Denne besked var sidst ændret: 22-05-2016, 00:26 af iTick.)
|
|||
|
|||
RE: Antidisassembly eksempel fra udfordring
(22-05-2016, 00:11)RalphP Skrev: CMP sætter Zflaget til 0 = FALSE. Derfor hhopper JE instruktionen ikke ned til "junk" - Right? Hvorfor skriver du, "0/TRUE" i kommentaren? Er det mig, der er for længe oppe? :p Det har du ret i. Jeg tænker mere at udsagnet aldrig bliver sandt, eller resultatet aldrig bliver nul, så zero flaget ikke bliver sat, og der bliver aldrig hoppet til junk. :) Som du siger, flaget er sat, når det er 1. :) Jeg har rettet lidt i teksten nu.
---
Writing a shellcode decoder stub in assembly is like talking gibberish in such a way that it is still perfectly intelligible. - iTick |
|||
22-05-2016, 12:03
|
|||
|
|||
RE: Antidisassembly eksempel fra udfordring
(22-05-2016, 00:23)iTick Skrev: Det har du ret i. Jeg tænker mere at udsagnet aldrig bliver sandt, eller resultatet aldrig bliver nul, så zero flaget ikke bliver sat, og der bliver aldrig hoppet til junk. :) Aha - okay. Sjov lille anti-diss. finte :p |
|||
22-05-2016, 12:18
|
|||
|
|||
RE: Antidisassembly eksempel fra udfordring
(22-05-2016, 12:03)RalphP Skrev: Aha - okay. Sjov lille anti-diss. finte :p Jep. Og den er super simpel. :)
---
Writing a shellcode decoder stub in assembly is like talking gibberish in such a way that it is still perfectly intelligible. - iTick |
|||
|
User(s) browsing this thread: 1 Gæst(er)