Ingenjörer behöver ibland tänka omvänt för att analysera en produkt. Till exempel kan en maskiningenjör dra slutsatser om en produkts produktion baserat på dess design och fysikaliska egenskaper. De kanske till och med kan producera samma produkt om de har en grundlig förståelse för den.
Du kan också likna omvänd ingenjörskonst med bevisen för matematiska ekvationer. Så, hur används reverse engineering?
Vad är reverse engineering?
Reverse engineering är processen att analysera ett system i syfte att reproducera eller förbättra det. Om du tittar på arbetsområdena för reverse engineering kan du se att du kan använda den för många olika ändamål. Om du tittar på det ur ett cybersäkerhetsperspektiv är det möjligt att utföra följande operationer med reverse engineering-metoder:
- Källanalys av programvara som inte är öppen källkod
- Sårbarhetsanalys
- Analys av skadlig programvara
- Sprickbildning och lappning
Du kan se reverse engineering användas även i datorspel nuförtiden. Till exempel skapar utvecklare ofta programvarumoddar med omvända konstruktionsmetoder.
Inom området reverse engineering finns det två olika analysmetoder: statisk och dynamisk. Du utför statisk analys när du analyserar ett program utan att faktiskt köra det. En dynamisk analysmetod kräver å andra sidan att du kör programmet för att observera dess beteende och data som det använder.
Men innan du gör en analys för reverse engineering, finns det några viktiga termer du behöver känna till hur datorarkitektur fungerar.
Viktiga delar av datorarkitektur
Reverse engineering är praktiskt taget omöjligt om du inte förstår datorarkitektur. Du måste studera de fyra huvuddelarna:
- Inmatning: En uppsättning metoder för att mata in data.
- CPU: CPU: n bearbetar inkommande data och överför den till sina ägare. Det är den centrala bearbetningsenheten.
- Minne: Det utrymme som tillfälligt håller data under bearbetning.
- Produktion: Resultatet som slutanvändaren ser.
Du kan ha alla dessa huvudproblem i åtanke med ett exempel, som när du trycker på bokstaven A på tangentbordet. När du trycker på den inträffar en inmatningshändelse. Efter detta steg bearbetar processorn data och använder ett litet utrymme i minnet för att lagra dem. Slutligen kommer du att se bokstaven A på skärmen, vilket avslutar processen med utdata.
Dyk ner i CPU: ns djup
Om du verkligen vill bli expert på omvänd ingenjörskonst och dyka djupt in i det här ämnet måste du ha detaljerad kunskap om hårdvara, lågnivåspråk och speciellt CPU. De viktigaste ämnena du behöver veta om CPU: n är:
- Styrenhet: Denna ansvarar för behandlingen av data i CPU: n och dess överföring till relevanta fält. Du kan tänka på den här enheten som en routingkontrollmekanism.
- ALU: Detta står för Arithmetic Logic Unit. Det är här som vissa aritmetiska och logiska operationer äger rum. Om du gräver djupare i matematiken kommer du att se att de fyra grundläggande operationerna i huvudsak är variationer på addition. Så ALU är baserad på aggregering. Att till exempel subtrahera två från tre är detsamma som att lägga till minus två till tre.
- Register: Det här är områdena inuti CPU: n som innehåller den bearbetade datan. Det finns olika typer av register, ungefär som det finns olika typer av variabler i ett programmeringsspråk. Ett register ansvarar för att upprätthålla typen och attributen för de uppgifter som tilldelats det.
- Signaler: Om du vill att CPU: n ska utföra många olika operationer samtidigt, är någon metod för att organisera dem nödvändig. De element som gör detta kallas signaler. Varje transaktion agerar enligt signaler som säkerställer att den inte stör en annan process.
- Buss: Den sökväg som används av data för att flytta från en enhet till en annan. Notera hur namnet antyder transport.
Koncept du ofta hör i reverse engineering
Att förstå hur processorn bearbetar data och lagrar den i minnet, tillsammans med konceptet med register, kan vara mycket användbart vid reverse engineering. I synnerhet kan du använda diagrammet nedan för att bättre förstå begreppet minne:
Slutligen, för omvänd ingenjörsanalys, behöver du känna till några grundläggande begrepp om register. De är ett av de ämnen du kommer att fokusera mest på. Här är några förklaringar om data, pekare och indexregister som kommer att vara användbara för dig på det mest kortfattade sättet:
- 1. EAX: Står för Accumulator Register. Den sparar vanligtvis data som faller under kategorin aritmetiska operationer här.
- 2. EBX: Står för Base Register. Det spelar en roll vid indirekt adressering.
- 3. EDX: Står för Data Register. EDX hjälper andra register.
- 4. EIP: Står för Instruktionspekare. Innehåller adressen till domänen som ska köras.
- 5. ESP: Håller basadressen.
- 6. ESI: Innehåller källindexinformationen.
- 7. EDI: Behåller destinationsindexinformationen.
Du bör undersöka alla dessa separat för att förstå deras nyanser. Men om du tittar på grunderna och försöker förstå affärslogiken, oavsett vilken processorarkitektur du arbetar med, kommer kodanalys för reverse engineering att vara ganska lätt.
Reverse engineering börjar ofta med maskinkod. Du kanske förstår många av termerna ovan om du är bekant med montering eller har kunskaper om 32-bitars eller 64-bitars processorarkitekturer. Om du vill lära dig montering från grunden kommer det att vara extremt användbart i reverse engineering.
Vad ska du göra med allt detta?
Om du har goda kunskaper i reverse engineering kan du göra kodanalys oavsett vilket operativsystem eller processorarkitektur du arbetar med. Det är till exempel möjligt att hitta knäckta versioner av många program eller datorspel. Detta är en helt olaglig metod.
Men om du ska bli en etisk cybersäkerhetsprofessionell måste du använda omvända ingenjörer för att förstå varför dessa knäckta program knäcks. Om du vill avancera inom reverse engineering eller precis har börjat, skulle det vara ett bra val om du försöker lära dig om förhållandet mellan hårdvara och maskinkod.