Инжењери понекад морају да размишљају обрнуто да би анализирали производ. На пример, машински инжењер може да донесе закључке о производњи производа на основу његовог дизајна и физичких својстава. Можда ће чак моћи да произведу исти производ ако га добро разумеју.
Такође можете упоредити обрнути инжењеринг са доказима математичких једначина. Дакле, како се користи обрнути инжењеринг?
Шта је обрнути инжењеринг?
Реверзни инжењеринг је процес анализе система у сврху репродукције или побољшања. Ако погледате радне области обрнутог инжењеринга, можете видети да га можете користити у многе различите сврхе. Ако то погледате из перспективе сајбер безбедности, могуће је извршити следеће операције методама обрнутог инжењеринга:
- Анализа извора софтвера који није отвореног кода
- Анализа рањивости
- Анализа малвера
- Црацкинг анд Патцхинг
Можете видети обрнути инжењеринг који се данас користи чак иу компјутерским играма. На пример, програмери често креирају софтверске модове користећи методе обрнутог инжењеринга.
У области обрнутог инжењеринга постоје две различите методе анализе: статичка и динамичка. Статичку анализу вршите када анализирате програм, а да га заправо не покренете. Метода динамичке анализе, с друге стране, захтева да покренете програм да бисте посматрали његово понашање и податке које користи.
Али пре него што извршите анализу за обрнути инжењеринг, постоје неки важни појмови о којима морате да знате како функционише архитектура рачунара.
Главни делови рачунарске архитектуре
Обрнути инжењеринг је практично немогућ осим ако не разумете архитектуру рачунара. Морате да проучите четири главна дела:
- Улазни: Скуп метода за унос података.
- Процесори: ЦПУ обрађује долазне податке и преноси их својим власницима. То је централна јединица за обраду.
- Меморија: Простор који привремено држи податке током обраде.
- Излаз: Резултат који види крајњи корисник.
Све ове главне проблеме можете имати на уму на примеру, на пример када притиснете слово А на тастатури. Када га притиснете, дешава се улазни догађај. Након ове фазе, ЦПУ обрађује податке и користи мали простор у меморији да их похрани. Коначно, видећете слово А на екрану, завршавајући процес са излазом.
Зароните у дубине ЦПУ-а
Ако заиста желите да постанете стручњак за обрнути инжењеринг и зароните дубоко у ову тему, потребно је да имате детаљно познавање хардвера, језика ниског нивоа, а посебно ЦПУ-а. Кључне теме које треба да знате о ЦПУ-у су:
- Контролна јединица: Ово је одговорно за обраду података у ЦПУ-у и њихов пренос у релевантна поља. Ову јединицу можете замислити као механизам за контролу рутирања.
- АЛУ: Ово је скраћеница од аритметичко-логичке јединице. Овде се одвијају неке аритметичке и логичке операције. Ако задубите у математику, видећете да су основне четири операције у суштини варијације на сабирању. Дакле, АЛУ се заснива на агрегацији. На пример, одузимање два од три је исто као и додавање минус два на три.
- Регистри: Ово су области унутар ЦПУ-а које држе обрађене податке. Постоје различити типови регистра, слично као што постоје различити типови променљивих у програмском језику. Регистар је одговоран за одржавање типа и атрибута података који су му додељени.
- Сигналс: Ако желите да ЦПУ обавља много различитих операција у исто време, потребан је неки метод њиховог организовања. Елементи који то раде називају се сигнали. Свака трансакција делује у складу са сигналима који обезбеђују да не омета други процес.
- Аутобус: Путања коју користе подаци за прелазак са једне јединице на другу. Обратите пажњу на то како име сугерише превоз.
Концепти које ћете често чути у обрнутом инжењерингу
Разумевање начина на који ЦПУ обрађује податке и складишти их у меморији, заједно са концептом регистара, може бити веома корисно при обрнутом инжењерингу. Конкретно, можете користити дијаграм испод да бисте боље разумели концепт меморије:
Коначно, за анализу обрнутог инжењеринга, морате знати неке основне концепте о регистрима. Оне су једна од тема на које ћете се највише фокусирати. Ево неких објашњења о подацима, показивачима и индексним регистрима која ће вам бити од користи на најсажетији начин:
- 1. ЕАКС: Означава регистар акумулатора. Обично чува податке који овде спадају у категорију аритметичких операција.
- 2. ЕБКС: Означава основни регистар. Она игра улогу у индиректном обраћању.
- 3. ЕДКС: Означава регистар података. ЕДКС помаже другим регистрима.
- 4. ЕИП: означава Инструцтион Поинтер. Садржи адресу домена за покретање.
- 5. ЕСП: Садржи адресу базе.
- 6. ЕСИ: Садржи информације о изворном индексу.
- 7. ЕДИ: Чува информације о индексу одредишта.
Требало би да истражите све ово одвојено да бисте разумели њихове нијансе. Али ако погледате основе и покушате да разумете пословну логику, без обзира са којом архитектуром процесора радите, анализа кода за обрнути инжењеринг ће бити прилично лака.
Обрнути инжењеринг често почиње са машинским кодом. Можда ћете разумети многе од горе наведених термина ако сте упознати са монтажом или имате команду 32-битна или 64-битна архитектура процесора. Ако желите да научите монтажу из темеља, то ће бити изузетно корисно у обрнутом инжењерингу.
Шта ћеш са свим овим?
Ако имате добро знање о обрнутом инжењерингу, можете да урадите анализу кода без обзира са којим оперативним системом или архитектуром процесора радите. На пример, могуће је пронаћи крековане верзије многих програма или компјутерских игрица. Ово је потпуно незаконит метод.
Међутим, ако желите да будете етички професионалац за сајбер безбедност, мораћете да користите обрнуте инжењере да бисте разумели зашто се ови крековани програми разбијају. Ако желите да напредујете у обрнутом инжењерингу или тек почињете, био би добар избор ако покушате да научите о односу између хардвера и машинског кода.