КампутарыБяспеку

Рэверс-інжынірынг для пачаткоўцаў. Абарона Android-прыкладанняў ад рэверс-інжынірынгу

Часам хто-небудзь хоча паглядзець, а якая ж начынне ў пэўнай праграме? Тады яму даводзіцца выкарыстоўваць рэверс-інжынірынг. Што гэта такое? Як дзейнічае? Якім чынам адбываецца гэты працэс? Пра ўсё гэта вы зможаце даведацца з гэтага артыкула.

Што такое рэверс-інжынірынг праграм?

Так называюць працэс разбору прыкладання з мэтай зразумець, як яно працуе, каб у будучыні узнавіць гэты працэс з унясеннем неабходных зменаў. Звычайна для гэтых мэтаў выкарыстоўваюцца адладчык і асэмблер. У залежнасці ад якасці выкарыстоўванага праграмнага забеспячэння будуць адрознівацца вынік і колькасць часу, якое неабходна выдаткаваць на яго прывядзенне ў нармальны выгляд. Тлумачыць рэверс-інжынірынг для пачаткоўцаў лепш за ўсё на прыкладзе. У якасці оного выступіць дадатак, напісанае для Android. А цяпер давайце будзе пазнаваць, што і як.

Праца з Android-праграмамі

Для пачатку неабходна растлумачыць некаторыя моманты. У прыкладаннях выкарыстоўваецца байт-код і LogCat. Гэта мясцовыя аналагі раней згаданых адладчыка і асэмблера. Таксама неабходна разумець структуру саміх прыкладанняў. Так, кожная праграма з'яўляецца файлам з пашырэннем apk. Пакуецца ён zip'ом. Нас цікавіць яго змесціва - рэсурсы прыкладання, classes.dex і AndroidManifest.xml. Калі вы займаецеся праграмаваннем на Android, то пытанняў з першымі і апошнім быць не павінна. А вось classes.dex - гэта байт-код праграмы, які кампілюецца спецыяльна для віртуальнай машыны. Вывудзіць з яго зыходны код java прадстаўленымі ў інтэрнэце сродкамі не атрымаецца. Але магчымым з'яўляецца атрыманне dalvik opcodes - спецыяльнага набору каманд, якія выкарыстоўваюцца для віртуальнай машыны. Для аналогіі можна сказаць, што гэта асэмблер мясцовага разліву. Таксама classes.dex можа быць ператвораны ў файл з пашырэннем jar. Ужо ў такім выпадку пасля яго дэкампіляцыя можна атрымаць java-код, які будзе больш-менш чытаным. Па такім шляху мы і пойдзем.

дэкампіляцыя

Гэты працэс будзе праводзіцца з выкарыстаннем праграмы Apk Manger. Перш чым прыступаць да працы, неабходна пераканацца, што ёсць патрэбныя драйверы для працы девайса, а таксама функцыянуе рэжым USB-debugging. Першапачаткова нам неабходна будзе перамясціць файл, які будзе разбірацца ў дырэктыву apk_manager \ place-apk-here-for-modding. Пасля гэтага варта запусціць Script.bat. Калі ніякіх праблем няма, то запусціцца кансоль, на якой будуць зялёныя надпісы. Выбіраем пункт нумар дзевяць - «дэкампіляваць». Пасля таго як будзе запушчаны працэс, неабходна не зачыняць кансоль. Потым варта адкрыць цікавіць apk-файл з дапамогай архіватара і атрымаць з яго classes.dex, які трэба апрацаваць праграмай dex2jar. Для неабходнага нам выніку яго трэба перамясціць на аб'ект з пашырэннем .bat. З'явіцца файл, які будзе заканчвацца на .jar. Пакуль што акно не спыняем.

аналізуем дадзеныя

Каб атрымаць інфармацыю аб дадатку, неабходна адкрыць яго маніфест. Па ім вызначаем, што выступае ў ролі галоўнай актыўнасці. Яна-то і ўяўляе для нас цяпер найбольшую важнасць. Таксама пажадана паглядзець у самы ніз праграмы. Калі ўнізе будзе інфармацыя аб мэнэджару ліцэнзій, то гэта істотна ўскладніць правядзенне рэверсным інжынірынгу. Калі пераключыцца на jd-gui і разгарнуць дрэва, то мы ўбачым некалькі прастор імёнаў. Дапусцім, што іх тры. У першым знаходзяцца файлы, звязаныя з рэкламай. У другім будуць класы мэнэджара ліцэнзій. У трэцім знаходзяцца нам неабходныя дадзеныя. У яго-то мы і заходзім. Тут неабходна будзе знайсці і выдаліць ключ, а потым і астатнія радкі, якія правяраюць, ці з'яўляецца ліцэнзійнай якая працуе версія. Усё гэта трэба пачысціць. Потым у нашым Apk Manager шукаем месца, куды паказана размяшчаць байт-код. Цяпер зробім невялікае адступленне і закомментируем каманды, з якімі патэнцыйна могуць узнікнуць праблемы. Пасля гэтага нам засталося толькі сабраць уласнае праграму.

зборка прыкладання

У гэтым нам дапаможа ўсё той жа Apk Manager. У акне кансолі, якое намі не зачынялася, выбіраем пункт №14. Далей справа тэхнікі. Калі дадатак даволі складанае, то пры запуску яно можа часткова або цалкам страціць сваю працаздольнасць. Не засмучайцеся, гэта значыць, што мы толькі на паўдарозе і ёсць яшчэ куды ісці. Працягваем праводзіць рэверс-інжынірынг Android-прыкладанняў. Сказаць, што трэба рабіць у пэўным выпадку, агульнымі словамі, нажаль, немагчыма. Таму шукаць праблемнае месца давядзецца самастойна. Так, калі акно прыкладання блакуецца ўсплывальным акном, то неабходна праглядзець код і выдаліць тую яго частку, што адказвае за гэты дыялог. Дапамагчы з гэтым зможа jd-gui. Як бачыце, рэверсны інжынірынг не з'яўляецца лёгкім справай, і ён патрабуе наяўнасці значнага багажу ведаў. Нават калі ўсё без праблем запусцілася, неабходна будзе пратэставаць працаздольнасць прыкладання. Гэта значыць рэверс-інжынірынг з'яўляецца яшчэ затратным па часе дзеяннем. Працягваем працаваць, пакуль не будуць выяўленыя ўсе праблемы.

бяспеку

А што, калі нам патрэбна абарона Android-прыкладанняў ад рэверс-інжынірынгу? У такім выпадку ёсць два варыянты: выкарыстанне спецыяльных праграм або стварэнне кодавай канструкцыі, якая будзе перашкаджаць здзяйсняць разбор напісанага. Апошні варыянт падыходзіць выключна дасведчаным спецыялістам, таму мы разгледзім толькі першы спосаб абароны. У якасці спецыялізаванага праграмнага забеспячэння выкарыстоўваем ProGuard. Гэта дадатак, якое выкарыстоўваецца для скарачэння, абфускацыі і аптымізацыі кода. Калі праграму «прагнаць» праз яго, то мы атрымаем файл з пашырэннем * .apk меншага памеру, чым ён быў. У такім выпадку яго будзе значна складаней разабраць. Прычым перавагай гэтай праграмы з'яўляецца тое, што яна нават была ўкаранёная ў сістэму зборкі Андроід-прыкладанняў з абнаўлення r9. Таму скарыстацца ёю можа любы распрацоўшчык, які мае стандартныя прылады стварэння і распрацоўкі.

заключэнне

Нельга сказаць, што рэверс-інжынірынг можна прадставіць як нешта аднастайна дрэннае ці добрае. Вядома, з пункту гледжання распрацоўнікаў, якія стварылі прыкладанне, гэта зусім не радасная падзея. Але з іншага боку, у многіх выпадках напісанне вопытнымі праграмістамі неабходных файлаў можа быць па часе менш затратным, чым выкарыстанне падобнага інструментара. Хоць для пачаткоўцаў распрацоўнікаў рэверс-інжынірынг можа саслужыць нядрэнную службу, калі няма ўяўлення пра тое, як рэалізаваць нешта, нават прыблізныя і не зусім зразумелыя накіды могуць дапамагчы з дасягненнем пастаўленай мэты.

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

Copyright © 2018 be.birmiss.com. Theme powered by WordPress.