Inžinieriai kartais turi galvoti atvirkščiai, kad analizuotų produktą. Pavyzdžiui, mechanikos inžinierius gali padaryti išvadas apie gaminio gamybą pagal jo dizainą ir fizines savybes. Jie netgi gali pagaminti tą patį produktą, jei gerai jį supranta.
Taip pat galite palyginti atvirkštinę inžineriją su matematinių lygčių įrodymais. Taigi, kaip naudojama atvirkštinė inžinerija?
Kas yra atvirkštinė inžinerija?
Atvirkštinė inžinerija yra sistemos analizės procesas, siekiant ją atkurti arba tobulinti. Jei pažvelgsite į atvirkštinės inžinerijos darbo sritis, pamatysite, kad ją galite naudoti įvairiems tikslams. Žvelgiant iš kibernetinio saugumo perspektyvos, taikant atvirkštinės inžinerijos metodus galima atlikti šias operacijas:
- Neatvirojo kodo programinės įrangos šaltinio analizė
- Pažeidžiamumo analizė
- Kenkėjiškų programų analizė
- Krekingas ir lopymas
Galite pamatyti atvirkštinę inžineriją, kuri šiais laikais naudojama net kompiuteriniuose žaidimuose. Pavyzdžiui, kūrėjai dažnai kuria programinės įrangos modifikacijas naudodami atvirkštinės inžinerijos metodus.
Atvirkštinės inžinerijos srityje yra du skirtingi analizės metodai: statinis ir dinaminis. Jūs atliekate statinę analizę, kai analizuojate programą, jos iš tikrųjų nevykdydami. Kita vertus, dinaminės analizės metodas reikalauja, kad paleistumėte programą, kad galėtumėte stebėti jos elgseną ir jos naudojamus duomenis.
Tačiau prieš atlikdami atvirkštinės inžinerijos analizę, turite žinoti keletą svarbių terminų kaip veikia kompiuterių architektūra.
Pagrindinės kompiuterių architektūros dalys
Atvirkštinė inžinerija praktiškai neįmanoma, nebent suprantate kompiuterio architektūrą. Turite išstudijuoti keturias pagrindines dalis:
- Įvestis: duomenų įvedimo metodų rinkinys.
- CPU: CPU apdoroja gaunamus duomenis ir perduoda juos savininkams. Tai yra centrinis procesorius.
- Atmintis: erdvė, kurioje laikinai saugomi duomenys apdorojimo metu.
- Išvestis: rezultatas, kurį mato galutinis vartotojas.
Visas šias pagrindines problemas galite turėti omenyje pateikę pavyzdį, pvz., kai paspaudžiate klaviatūros raidę A. Kai paspausite, įvyksta įvesties įvykis. Po šio etapo CPU apdoroja duomenis ir naudoja nedidelę atminties vietą jiems saugoti. Galiausiai ekrane pamatysite raidę A, kuri užbaigs procesą su išvestimi.
Pasinerkite į procesoriaus gelmes
Jei tikrai norite tapti atvirkštinės inžinerijos ekspertu ir gilintis į šią temą, turite turėti išsamių žinių apie aparatinę įrangą, žemo lygio kalbas ir ypač centrinį procesorių. Pagrindinės temos, kurias turite žinoti apie centrinį procesorių, yra šios:
- Valdymo blokas: Tai atsakinga už duomenų apdorojimą CPU ir jų perdavimą į atitinkamus laukus. Galite galvoti apie šį įrenginį kaip apie maršruto valdymo mechanizmą.
- ALU: Tai reiškia aritmetinį loginį vienetą. Čia atliekamos kai kurios aritmetinės ir loginės operacijos. Jei įsigilinsite į matematiką, pamatysite, kad pagrindinės keturios operacijos iš esmės yra sudėjimo variantai. Taigi ALU yra pagrįstas agregavimu. Pavyzdžiui, atimti du iš trijų yra tas pats, kas pridėti minus du prie trijų.
- Registrai: Tai yra procesoriaus viduje esančios sritys, kuriose saugomi apdoroti duomenys. Yra įvairių tipų registrai, panašiai kaip yra skirtingų tipų kintamieji programavimo kalboje. Registras yra atsakingas už jam priskirtų duomenų tipo ir atributų palaikymą.
- Signalai: Jei norite, kad centrinis procesorius atliktų daug skirtingų operacijų vienu metu, būtinas tam tikras jų organizavimo būdas. Elementai, kurie tai daro, vadinami signalais. Kiekviena operacija veikia pagal signalus, užtikrinančius, kad jis netrukdo kitam procesui.
- Autobusas: kelias, naudojamas duomenims perkelti iš vieno įrenginio į kitą. Atkreipkite dėmesį, kaip pavadinimas rodo transportą.
Sąvokos, kurias dažnai girdėsite atvirkštinėje inžinerijoje
Suprasti, kaip CPU apdoroja duomenis ir saugo juos atmintyje, kartu su registrų koncepcija gali būti labai naudinga atliekant atvirkštinę inžineriją. Visų pirma galite naudoti toliau pateiktą diagramą, kad geriau suprastumėte atminties sąvoką:
Galiausiai, norėdami atlikti atvirkštinės inžinerijos analizę, turite žinoti keletą pagrindinių sąvokų apie registrus. Tai viena iš temų, kurioms daugiausia dėmesio skirsite. Štai keletas paaiškinimų apie duomenis, rodykles ir indeksų registrus, kurie jums bus naudingi glausčiausiai:
- 1. EAX: reiškia Akumuliatorių registrą. Paprastai čia išsaugomi duomenys, kurie patenka į aritmetinių operacijų kategoriją.
- 2. EBX: reiškia bazinį registrą. Ji atlieka netiesioginio kreipimosi vaidmenį.
- 3. EDX: reiškia duomenų registrą. EDX padeda kitiems registrams.
- 4. EIP: Reiškia Instruction Pointer. Turi paleisti domeno adresą.
- 5. ESP: saugo bazinį adresą.
- 6. ESI: saugo šaltinio indekso informaciją.
- 7. EDI: Saugo paskirties indekso informaciją.
Turėtumėte ištirti visus šiuos dalykus atskirai, kad suprastumėte jų niuansus. Bet jei pažvelgsite į pagrindus ir bandysite suprasti verslo logiką, nesvarbu, su kokia procesoriaus architektūra dirbate, kodo analizė atvirkštinei inžinerijai bus gana paprasta.
Atvirkštinė inžinerija dažnai prasideda mašininiu kodu. Galite suprasti daugelį aukščiau pateiktų terminų, jei esate susipažinę su surinkimu arba mokate jį valdyti 32 bitų arba 64 bitų procesoriaus architektūra. Jei norite išmokti surinkti nuo pat pradžių, tai bus labai naudinga atvirkštinėje inžinerijoje.
Ką darysite su visu tuo?
Jei gerai išmanote atvirkštinę inžineriją, galite atlikti kodo analizę, nesvarbu, su kokia operacine sistema ar procesoriaus architektūra dirbate. Pavyzdžiui, galima rasti nulaužtas daugelio programų ar kompiuterinių žaidimų versijas. Tai visiškai neteisėtas metodas.
Tačiau, jei ketinate būti etiško kibernetinio saugumo profesionalu, turėsite pasitelkti atgalinius inžinierius, kad suprastumėte, kodėl šios nulaužtos programos yra nulaužiamos. Jei norite tobulėti atvirkštinės inžinerijos srityje arba tik pradedate, būtų geras pasirinkimas, jei pabandytumėte sužinoti apie aparatinės įrangos ir mašinos kodo ryšį.