Kod grotta

En kodgrotta är en serie oanvända byte i en processminne . Kodgrottan inuti en processminne är ofta en referens till ett avsnitt som har kapacitet för att injicera anpassade instruktioner.

Vanliga användningsområden

Konceptet med en kodgrotta används ofta av hackare och omvänd ingenjörer för att exekvera godtycklig kod i ett kompilerat program. Det kan vara en användbar metod att göra ändringar i ett kompilerat program i exemplet med att inkludera ytterligare dialogrutor, variabla modifieringar eller till och med ta bort kontroller av programnyckelvalidering. Med hjälp av en anropsinstruktion som ofta finns på många CPU-arkitekturer , hoppar koden till den nya subrutinen och skjuter nästa adress till stacken. Efter exekvering av subrutinen kan en returinstruktion användas för att poppa den föregående platsen från stacken i programräknaren. Detta gör att det befintliga programmet kan hoppa till den nyligen tillagda koden utan att göra betydande ändringar i själva programflödet.

Fördelar

  • Enkelt och snabbt – Detta innebär att ändringsprocessen är snabb och enkel. När man modifierar den befintliga koden med verktyg som Ollydbg , kan de tillagda funktionerna monteras och testas utan några externa beroenden.
  • Inget behov av källkod – Att använda kodgrottor kan vara extremt effektivt även om det inte finns någon källkod för programmeraren. Detta gör att programmeraren kan göra justeringar som att lägga till eller ta bort funktioner i koden utan att behöva skriva om hela programmet eller koppla några externa beroenden till ett befintligt projekt.

Nackdelar

  • Lätt att bryta programmet – I många fall ändras den körbara filen. Detta innebär att det kanske inte finns en befintlig kodgrotta i det befintliga skriptet för någon kodinjektion på grund av bristen på resurser som tillhandahålls i skriptet. Varje ersättning av det befintliga skriptet kan leda till programfel/krasch.
  • Brist på mångsidighet – Att injicera kod i ett befintligt skript innebär att det begränsade utrymmet som ges endast tillåter enkla instruktionsändringar och att språket som används endast är montering. Detta kan mildras genom användning av delade biblioteksinjektorer ( DLL-injektion [Windows] eller LD_PRELOAD [Linux]) så att det injicerade biblioteket innehåller redan kompilerad kod och befintliga instruktioner i målbinären helt enkelt modifieras för att använda den.

Verktyg

  • pycave: Enkelt verktyg för att hitta kodgrottor i Portable Executable (PE) filer.
  • Ollydbg : en debugger för kodanalys. Det spårar skriptanrop och körs, samt visar eventuella iterationer i biblioteken och binärfilerna. Kod kan injiceras eller tas bort i/från EXE-filen direkt med denna felsökning.
  • PE: Utforskaren: den tillåter en användare att öppna och redigera körbara filer som kallas PE-filer (bärbara körbara filer). Detta inkluderar .EXE, .DLL och andra mindre vanliga filtyper.
  • Cheat Engine : ett kraftfullt verktyg som läser processminne och skriver processminne. Detta innebär att alla datavärden på klientsidan kan ändras och redigeras. Den kan också visa ändringar i värdena.
  • TSearch: ett kraftfullt verktyg som läser processminne och skriver processminne. Precis som Cheat Engine kan den ändra värdedata på klientsidan.

externa länkar