Ingeniører skal nogle gange tænke omvendt for at analysere et produkt. For eksempel kan en maskiningeniør drage konklusioner om et produkts produktion baseret på dets design og fysiske egenskaber. De kan endda være i stand til at producere det samme produkt, hvis de har en grundig forståelse af det.
Du kan også sammenligne reverse engineering med beviserne for matematiske ligninger. Så hvordan bruges reverse engineering?
Hvad er reverse engineering?
Reverse engineering er processen med at analysere et system med det formål at reproducere eller forbedre det. Hvis du ser på arbejdsområderne for reverse engineering, kan du se, at du kan bruge det til mange forskellige formål. Hvis du ser på det fra et cybersikkerhedsperspektiv, er det muligt at udføre følgende operationer med reverse engineering-metoder:
- Kildeanalyse af ikke-open source-software
- Sårbarhedsanalyse
- Malware analyse
- Revner og patching
Du kan se reverse engineering bruges selv i computerspil i dag. For eksempel skaber udviklere ofte software-mods ved hjælp af reverse engineering-metoder.
Inden for reverse engineering er der to forskellige analysemetoder: statisk og dynamisk. Du udfører statisk analyse, når du analyserer et program uden egentlig at køre det. En dynamisk analysemetode kræver på den anden side, at du kører programmet for at observere dets adfærd og de data, det bruger.
Men før du udfører analyse til reverse engineering, er der nogle vigtige udtryk, du skal kende til hvordan computerarkitektur fungerer.
Store dele af computerarkitektur
Reverse engineering er praktisk talt umuligt, medmindre du forstår computerarkitektur. Du skal studere de fire hoveddele:
- Input: Et sæt metoder til indtastning af data.
- CPU: CPU'en behandler indgående data og sender dem til sine ejere. Det er den centrale behandlingsenhed.
- Hukommelse: Det rum, der midlertidigt opbevarer data under behandlingen.
- Produktion: Resultatet som slutbrugeren ser.
Du kan huske på alle disse hovedproblemer med et eksempel, som når du trykker på bogstavet A på dit tastatur. Når du trykker på den, opstår der en inputhændelse. Efter dette trin behandler CPU'en dataene og bruger en lille plads i hukommelsen til at gemme dem. Til sidst vil du se bogstavet A på din skærm, som afslutter processen med output.
Dyk ned i CPU'ens dybder
Hvis du virkelig ønsker at blive ekspert i reverse engineering og dykke dybt ned i dette emne, skal du have detaljeret kendskab til hardware, lavniveau-sprog og især CPU'en. De vigtigste emner, du skal vide om CPU'en, er:
- Styreenhed: Denne er ansvarlig for behandlingen af data i CPU'en og dens overførsel til de relevante felter. Du kan tænke på denne enhed som en routing-kontrolmekanisme.
- ALU: Dette står for Arithmetic Logic Unit. Det er her nogle aritmetiske og logiske operationer finder sted. Hvis du graver dybere ned i matematikken, vil du se, at de grundlæggende fire operationer i det væsentlige er variationer af addition. Så ALU er baseret på aggregering. For eksempel er at trække to fra tre det samme som at lægge minus to til tre.
- Registre: Dette er de områder inde i CPU'en, der indeholder de behandlede data. Der er forskellige typer registre, ligesom der er forskellige typer variable i et programmeringssprog. Et register er ansvarligt for at vedligeholde typen og attributterne for de tildelte data.
- Signaler: Hvis du ønsker, at CPU'en skal udføre mange forskellige operationer på samme tid, er det nødvendigt med en eller anden måde at organisere dem på. De elementer, der gør dette, kaldes signaler. Hver transaktion handler i henhold til signaler, der sikrer, at den ikke forstyrrer en anden proces.
- Bus: Stien, som dataene bruger til at flytte fra en enhed til en anden. Bemærk, hvordan navnet antyder transport.
Begreber, du ofte vil høre i reverse engineering
At forstå, hvordan CPU'en behandler data og gemmer dem i hukommelsen, sammen med konceptet med registre, kan være meget nyttigt ved omvendt konstruktion. Især kan du bruge diagrammet nedenfor til bedre at forstå begrebet hukommelse:
Til sidst, til reverse engineering analyse, skal du kende nogle grundlæggende begreber om registre. De er et af de emner, du vil fokusere mest på. Her er nogle forklaringer om data, pointere og indeksregistre, som vil være nyttige for dig på den mest kortfattede måde:
- 1. EAX: Står for Akkumulatorregister. Det gemmer normalt data, der falder ind under kategorien aritmetiske operationer her.
- 2. EBX: Står for Base Register. Det spiller en rolle i indirekte adressering.
- 3. EDX: Står for Dataregister. EDX hjælper andre registre.
- 4. EIP: Står for Instruction Pointer. Indeholder adressen på det domæne, der skal køres.
- 5. ESP: Indeholder basisadressen.
- 6. ESI: Indeholder kildeindeksoplysningerne.
- 7. EDI: Bevarer destinationsindeksoplysningerne.
Du bør undersøge alle disse separat for at forstå deres nuancer. Men hvis du ser på det grundlæggende og prøver at forstå forretningslogikken, uanset hvilken processorarkitektur du arbejder med, vil kodeanalyse til reverse engineering være ret let.
Reverse engineering begynder ofte med maskinkode. Du forstår måske mange af ovenstående udtryk, hvis du er fortrolig med montering eller har en kommando over 32-bit eller 64-bit processorarkitekturer. Hvis du vil lære montering fra bunden, vil det være yderst nyttigt i reverse engineering.
Hvad vil du gøre med alt dette?
Hvis du har et godt kendskab til reverse engineering, kan du lave kodeanalyse uanset hvilket operativsystem eller processorarkitektur du arbejder med. Det er for eksempel muligt at finde crackede versioner af mange programmer eller computerspil. Dette er en fuldstændig ulovlig metode.
Men hvis du skal være en etisk cybersikkerhedsprofessionel, bliver du nødt til at bruge reverse engineering til at forstå, hvorfor disse crackede programmer bliver knækket. Hvis du ønsker at komme videre i reverse engineering eller lige er startet, ville det være et godt valg, hvis du forsøger at lære om forholdet mellem hardware og maskinkode.