Извор слике: пикабаи.цом

Питхон је језик високог нивоа. Иако многи од вас могу помислити, то није језик програмирања, али није. То је језик скрипта. Нигде не долази ни близу шифре машине или језика машине. Шта је онда што је питхон толико занимљив? Ако имате искуства са убијањем пензија или сте разговарали са многим стручњацима за веб безбедност или анализаторима злонамјерног софтвера, они би увек предложили питхон као њихов основни језик за развој злоупотребе или искоришћавања.

Иако неки људи више воле Ц, Ц ++ или перл, лично бих гласао за питхон-а. Разлог није само користан као алат за писање програма, већ је корисно и разбити га.

Шта је обрнути инжењеринг?

Реверсе Енгинееринг је врло широк појам. Не могу га заправо дефинисати једноставним синтаксама. Правилан концепт обрнутог инжењеринга је да разгради шифру на једноставније делове, разумемо је, модификујемо и унапређујемо је према сопственим циљевима, а затим је поново састављамо како би се прилагодили нашим потребама. Да поједноставим, дозволите ми да вам дам неколико екстремних уобичајених примера.

Узмимо пример Андроид мобилног телефона. Произвођачи креирају залихе и продају га својим потрошачима. Али већином пута садржи много средстава за стварање и постаје бујна. Дакле, постоје људи на веб локацијама попут КСДА и андроидцентрал који инжењерима преусмере свој пут у РОМ, побољшају га и учине га заосталим. Један практични пример би био ЦианогенМод Ром.

Али ово је био само пример да схватите шта је то. Реверсе Енгинееринг има исти концепт, али је његов пут превише компликован него само модификовање РОМ-а.

Компилација и Питхон

Ако имате искуства у Питхон-у, онда знате да приликом писања скрипте питхон-а може да се ради о вирусу, корисном оптерећењу, тројану или било којој датотеци, он ће радити само на рачунарима у којима је питхон инсталиран. Дакле, рецимо, написао сам одличан рачунарски тројанац који може заобићи било који антивирусни вирус, и започињем га увести у Виндовс систем, али ако Виндовс систем нема инсталиран преводник питхон-а, онда то неће радити. Дакле, треба саставити сваку датотеку писаног скрипта питхон у извршну датотеку и затим је разместити у Виндовс систему.

Реверсе Енгинееринг Виндовс Екецутаблес

Сада знате да морамо саставити питхон скрипте да би се изводили у виндовс-у, такође морате знати да мора постојати преводилац, који претвара питхон скрипте у извршну датотеку. Да, има. Име му је Пи2еке. Пи2еке је једноставан инсталатер који претвара скрипте питхон у самосталне Виндовс програме. Сада постоји и други алат који претвара извршне датотеке у Виндовс-у написане у питхону назад у питхон скрипте. Име му је Пиинсталлер Еке Ребуилдер.

Поправка програма Пиинсталлер еке је алат за прекомпоновање / преокретање извршених датотека које је генерисао Пиинсталлер без приступа изворном коду. Када покренете ЕКСЕ - он се не пакује у меморију. Ово укључује .пиц датотеке (питхон код који се претвара у бајт код). У основи оно што раде пиинсталлер и пи2еке су библиотеке пакета и зависности заједно, тако да можете покренути самостални ЕКСЕ без да их преузимате или припремате машину помоћу питхон интерпретера.

Постоји и други алатни програм који вас доводи до врло близу изворном коду. Назив је ПиРетиц, што означава Обфусифиед Битцоде Питхон Битецоде Реверсе Енгинеер. Овај алат вам омогућава да вратите предмет у меморију на изворни код, без потребе за приступом бајт-коду директно на диску. Ово може бити корисно ако су пиц-ове апликације на диску замрзнуте на један од многих начина.

Препоручени курсеви

  • Тренинг о хибернацији Јава
  • Онлине обука за сертификацију у Јава пролећу
  • ВордПресс програм
  • Обука за сертификацију у Руби-у

Обрнути инжењеринг На тежи начин

Сада је горњи део лако разумети, а практично то урадите када удовољите основном знању из питхона. Али то није увек случај. Понекад немате никакву документацију или коментаре у скрипту питхон-а, а постоје и датотеке које могу да разумете сами. Сада постоји сјајна књига о овом делу, али нећу се много концентрисати на то.

Назив књиге је „Учинковит рад са наслијеђеним кодом“. Књига је независна од питхона или било којег другог језика и дат ће вам идеју за обрнути инжењеринг на готово било којем језику. Када покушавате да разумете део кода, кључни фокус је разлог зашто га желите разумети.

Без обзира да ли желите да преиначите код за инжењеринг да бисте га модификовали или да га пребаците, приступ за обоје би био сасвим другачији. Дакле, инструментирање наслеђеног кода, са батеријама и скелама тестова и праћењем / записивањем је пресудан пут на дугом, тешком слогу до разумевања и модификовања сигурно и одговорно.

Реверсе Енгинееринг Тоолс

Сада постоји још једна метода да се мало олакша, а коју можете следити пратећи горње кораке. Постоји сајт који се зове Епидоц. На овом месту ће проверити код и креирати неку документацију за њега. Резултат неће бити тако добар као оригинална документација, али у најмању руку ће вам дати идеју како тачно ради. Чинећи ово, можете почети са писањем сопствене документације, а након што делимично напишете документ, можете поново генерисати преостали делимични документ са веб локације за преостали део.

Можете чак и да користите ИДЕ алат за анализу кода. То вам обично даје довршавање кода, али што је још важније у овом случају, то је могуће да само цтрл кликнете променљивом да бисте видели одакле долази. Ово стварно убрзава ствари када желите да разумете код других народа.

Такође, морате да научите и исправљање погрешака. У завидним деловима кода мораћете да их пређете помоћу алата за уклањање погрешака да бисте видели шта код заправо ради. Питхонс пдб ради, али многи ИДЕ-ови имају интегрисане програме за исправљање грешака, што олакшава исправљање грешака. ПиРеверсе од Логилаба и ПиНСоурце од Андија Булка такође су корисни за генерисање УМЛ дијаграма.

Постоји поступак за производњу модела класе УМЛ из датог улаза изворног кода. Помоћу тога можете додатно преокренути снимак базе вашег кода у УМЛ класе и даље користити дијаграм класа. Увођењем садржаја кода у визуелни УМЛ модел, ово помаже програмерима или софтверским инжењерима да прегледају имплементацију, идентификују потенцијалне грешке или недостатке и потраже могућа побољшања.

Поред овога, програмери могу обрнути библиотеку кода као УМЛ класе и са њима конструисати модел, попут преокретања оквира генеричке колекције и развоја сопственог оквира проширивањем генеричког. У овом поглављу ћемо проћи кроз тренутачни преокрет Питхон-а.

Објекти и прајмери

Да бисте у потпуности разумели унутрашње деловање Питхона, прво се треба упознати са начином на који Питхон компајлира и извршава код. Када се код компајлира у Питхон-у, резултат је објект кода. Објект кода је непромјењив и садржи све информације потребне преводиоцу за покретање кода. Инструкција бајтног кода представљена је као једносатна вриједност бајта, а по потреби и аргументи. Подаци се користе индексом у једно од других својстава кодног објекта.

Стринг бајта изгледа овако:

\ к64 \ к02 \ к64 \ к08 \ к66 \ к02

Питхон бите код делује на хрпи ставки. Подузетније проширење био би покушај декомпирања бајтног кода на читљив изворни код Питхон-а, заједно с именима објеката и функција. Питхон код се може дистрибуирати у бинарном облику коришћењем маршал модула. Овај модул пружа могућност сериализације и десериализације кодних објеката користећи функције складиштења и учитавања.

Најчешћи бинарни формат је састављена датотека Питхон (.пиц) која садржи магични број, временску ознаку и сериализовани објект. Овај тип датотеке обично тумачи Питхон као предмеморија компајлираног објекта да би се избегло вишеструко рашчлањивање извора. Ове технике се ослањају на лакоћу приступа бајтним шифрама и информацијама о типу.

Помоћу бајта кодног објекта објекта, логика кода може се потпуно изменити или чак потпуно заменити. Извлачење информација о типу може помоћи у разумијевању дизајна програма и идентификацији функције и сврхе објекта.

Замагљивање и отврдњавање бајтова апликације увијек ће бити утрка између имплементатора и оних који га желе разбити. Да бисте се одбранили од проналажења бајт кода, први је логични корак ка решењу за превођење током извршења.

Својства објекта кода могу се сачувати у било којем потписаном, шифрираном или на други начин закривљеном формату који се де-обфускира или преводи током извођења и користи се за инстанцирање новог објекта. Могло би се чак и променити начин претраживања променљиве имена унутар преводиоца да би се обесхрабриле информације о именовању. Додавањем слоја за превод између претраживања стварних имена и имена у изворном коду, програмер може додатно ублажити покушаје преокретања уназад.

Закључак

Након што прочитате све ово, можда ћете осећати потребу да одете и експериментишете са неким наплатама. Дакле, ево неколико алата који вам могу помоћи да обрнете инжењер у путу ка вашем питхон коду:

  1. Паимеи
  1. Суллеи
  1. Тхе Царрера Цоллецтион
  1. ПиЕму
  1. ИДАПитхон
  1. ИммДбг

Све су то сјајни дијелови кода, али оно што их заиста чини изванредним је када се користе заједно. Имајте на уму да ово никако није потпуна листа, само оне које ја највише користим и мислим како флексибилност питхона може учинити тако сложен задатак као што је обрнути инжењеринг подесив.

Препоручени чланци

Ево неколико чланака који ће вам помоћи да сазнате више детаља о обрнутом инжењерингу са Питхон-ом, па само пређите на линк.

  1. 25 најневероватнијих питања и одговора на Питхон интервју
  2. Започните са Питхон и Дјанго за веб развој
  3. Које су предности и ограничења употребе Питхона?
  4. Каријере у Питхон-у
  5. Реверсе Енгинееринг Тоолс

Категорија: