Понякога някой иска да види какъв вид пълненев конкретна програма? Тогава той трябва да използва обратна техника. Какво е това? Как работи? Как протича този процес? Можете да научите за всичко това от тази статия.
Какво е обратен инженерен софтуер?
Това е името на процеса на разбор на приложения с целразберете как работи, за да пресъздадете този процес в бъдеще с необходимите промени. Обикновено за тези цели се използва грешка и асемблер. В зависимост от качеството на използвания софтуер, резултатът и времето, което трябва да се отдели за неговото нормализиране, ще се различават. Обясняването на обратен инженеринг за начинаещи е най-добре да се направи с пример. Това ще бъде приложение, написано за Android. А сега нека разберем какво и как.
Работа с приложения за Android
Първо, трябва да изясните някои моменти. Приложенията използват байт код и LogCat. Това са локални аналози на споменатия по-горе дебъгер и асемблер. Също така трябва да разберете структурата на самите приложения. И така, всяка програма е файл с разширение apk. Опакован е в цип. Интересуваме се от съдържанието му - ресурси за приложения, classes.dex и AndroidManifest.xml. Ако програмирате на Android, тогава не трябва да има въпроси с първия и последния. Но classes.dex е байт кодът на програмата, който се компилира специално за виртуалната машина. Няма да работи за извличане на изходния код на java от него, използвайки средствата, представени в Интернет. Но е възможно да получите dalvik opcode - специален набор от команди, които се използват за виртуална машина. За аналогия можем да кажем, че това е локален асемблер за разливи. Също така classes.dex може да се превърне във файл с разширение на jar. Вече в този случай, след като го декомпилирате, можете да получите java код, който ще бъде повече или по-малко четим. Ние ще следваме този път.
Декомпилация
Този процес ще се извърши с помощта наApk Manger програми. Преди да започнете работа, трябва да се уверите, че има необходимите драйвери, за да работи устройството, както и USB режим за отстраняване на грешки. Първоначално ще трябва да преместим файла, който ще бъде анализиран в директивата apk_managerplace-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 с по-малък размер, отколкото е бил. В този случай ще бъде много по-трудно да се разбере. Освен това предимството на тази програма е, че тя дори е въведена в системата за изграждане на приложения за Android след актуализацията на r9. Следователно всеки разработчик, който има стандартни инструменти за създаване и разработка, може да го използва.
заключение
Това не означава, че е възможно обратното инженерствопредставете си като нещо еднакво добро или лошо. Разбира се, от гледна точка на разработчиците, създали приложението, това изобщо не е щастливо събитие. Но от друга страна, в много случаи писането на необходимите файлове за опитни програмисти може да отнеме по-малко време, отколкото използването на такива инструменти. Докато обратното проектиране може да бъде чудесна услуга за начинаещи разработчици, ако нямате идея как да приложите нещо, дори грубите и не съвсем ясни скици могат да ви помогнат да постигнете целта си.