როგორ გადმოვწეროთ apk ფაილი შესაძლებელია Android-ის დანამატების გახსნა, შეცვლა და შეფუთვა. რა არის APK ფაილი?

ამ სტატიიდან შეიტყობთ, რა არის ანდროიდის დანამატი, როგორ გავხსნათ იგი APK ფაილიდა დამატებითი დახმარებისთვის ნებისმიერ პროგრამაში.

რა არის APK ფაილი?

APK - ოპერაციული სისტემის ფორმატი ანდროიდის სისტემები, რომელიც გამოიყენება დაარქივებული დანართის ფაილებისთვის და თავად ფაილის სახელი შეიძლება იყოს ნებისმიერი, და გაფართოება შეიძლება გამოიყურებოდეს this.apk. APK-ის ანალოგები სხვა ოპერაციულ სისტემებში არის .msi Windows-ში, Symbian - .sis, Linux-ში - .rpm ან .deb.

მაინტერესებს რა შუაშია
არსებითად. ZIP არქივებიგაოცება ამით შიდა მოწყობილობაშეგიძლიათ სწრაფი გაქცევა ფაილის მენეჯერიან არქივი, მაგალითად WinRAR ან მობილური აპლიკაცია X-Plore.




ამის გათვალისწინებით, თქვენ გამორიცხავს შიდა რესურსებზე ვიზუალურ წვდომას და საზღვრების რედაქტირების შესაძლებლობას.

მოდით შევხედოთ სტრუქტურას
Middle.apk-ში გვაქვს უამრავი ფაილი და საქაღალდე, მოდით გავარკვიოთ რას ემსახურებიან ისინი:

  • AndroidManifest.xml არის პროგრამების ერთგვარი „პასპორტი“, საიდანაც შეგიძლიათ გაიგოთ ყველა ძირითადი პუნქტის, შესაძლებლობების, ვერსიის, ნებართვების და ა.შ.
  • META-INF ეს ფაილი შეიცავს მეტამონაცემებს, როგორიცაა მონაცემები მონაცემების შესახებ, კონტროლის ჯამები, მონაცემებისკენ მიმავალი ბილიკები, ბილიკები და რესურსების კონტროლის რაოდენობა, სერთიფიკატები. თქვენ შეგიძლიათ გახსნათ ეს ფაილი ნებისმიერი გზით ტექსტის რედაქტორი, მაგრამ რეკომენდებულია Wikoristovati Notepad++-ის მიერ.
  • res საქაღალდეგანათავსეთ ყველა რესურსი პროგრამებით, გრაფიკით, როგორიცაა ხატები, სურათები, ტექსტები, გრაფიკული ინტერფეისის ელემენტები. ამ გზით შეგიძლიათ მარტივად მიიღოთ წვდომა საქაღალდეზე.
  • კლასები.dex - უშუალო პროგრამის კოდიპროგრამები, რომლებიც მუშაობს Dalvik VM ვირტუალურ მანქანაზე, გაითვალისწინეთ, რომ ამ ფაილის შუაში ასევე შეგიძლიათ .apk-ის დეკომპილაცია, როგორც ეს სხვა სტატიებში ჩანს. რესურსები.arsc -კომპილაციები XML ფაილი, ეს ფაილი შეიცავს მონაცემებს პროგრამის ყველა რესურსის შესახებ.
  • lib - საქაღალდე მშობლიური ბიბლიოთეკებით; რესურსებზე წვდომის აკრძალვა შესაძლებელია მხოლოდ სპეციალიზებული პროგრამების გამოყენებით. ასე რომ, APK-ში შეგიძლიათ შეიტანოთ ისეთი ფაილები და საქაღალდეები, როგორიცაა com, org, udk, მაგრამ არა სამუდამოდ.

ახლა მოდით შევხედოთ ანგარიშის შიდა სტრუქტურას, რომლისთვისაც გვჭირდება დეკომპილაციის პროგრამა, Java და APK ფაილი. .apk-ის დაშლის მთავარი ინსტრუმენტი არის Apktool, ასევე პროგრამის გათვალისწინებითის მუშაობს მხოლოდ ზედიზედ, რაც არც ისე ადვილია. უფრო სწრაფი და ხელით ანალიზისთვის შეგიძლიათ გამოიყენოთ APKing, ან თავად Apktool, ან იმუშაოთ კონტექსტური მენიუდან.


ასე რომ, ჩვენ ვაინსტალირებთ APKing-ს, თითქოს ეს იყოს დანამატი Windows-ისთვის და არჩევის შემდეგ.apk ვაჭერთ მას მაუსის მარჯვენა ღილაკით და ამავე დროს Shift-ს, რის შემდეგაც ვაგრძელებთ:



და აირჩიეთ საჭირო მოქმედება, მაგალითად, დეკომპილი მთლიანად, შემდეგ პროგრამა დაასრულებს ოპერაციას და შექმნის საქაღალდეს ამავე სახელწოდებით.



საქაღალდის გახსნით, ჩვენ უარვყოფთ წვდომას APK ფაილში არსებულ ყველა რესურსზე.



ახლა ყველა ტექსტური ფაილის რედაქტირება შესაძლებელია, ხოლო ძირითადი წესების დაცვით, შეგიძლიათ შეცვალოთ პოპულარული Notepad++ პროგრამა, მაგალითად, გადახედეთ AndroidManifest.xml-ს.

ვფიქრობდი SmartAPKTool პროგრამაზე. შეგიძლიათ გახსნათ, შეფუთოთ და ხელი მოაწეროთ შეცვლილ apk ფაილებს. მისი უპირატესობა არის გრაფიკული ინტერფეისის ხილვადობა. თუმცა, ეს სერიოზული პრობლემაა. SmartAPKTool დიდი ხანია არ განახლებულა და პროგრამა არასწორად ხსნის და აფუთებს პროგრამებს უახლესი ვერსიები Android. ამიტომ აქ ვეცდები აგიხსნათ, თუ როგორ უნდა მივცეთ ფული ამ შემოწირულობისთვის apktool.

პატივისცემა 1.
SmartAPKTool პროგრამა, როგორც ადრე, შეიძლება გამოყენებულ იქნას ხელით შეგროვებული apk ფაილების გასაფორმებლად.
შენიშვნა 2.
Posilannya on zagadani აქვს statti პროგრამები ხელმისაწვდომი ↓

პროგრამა apktoolარ არის გრაფიკული ინტერფეისი. ეს არის მინუსი მათთვის, ვინც არ იცნობს ბრძანების სტრიქონი. ასევე არის პლიუსი: SmartAPKTool-ში შესვლით, ჩვენ შეგვიძლია წავიკითხოთ ყველა ცვლილება, რაც ნიშნავს, რომ ვიცით რა უნდა გამოვასწოროთ.

მოდით გადმოვწეროთ ორი არქივი: ერთი ყველა სისტემისთვის, მეორე ჩვენი სისტემისთვის (მაგალითად - Windows):

მოდით გავხსნათ არქივი იმავე ცარიელ საქაღალდეში (ჩვენს აპლიკაციაში C:\apktool\). სამაგიეროდ შეიძლება ასე გამოვიდეს:

ამ ეტაპზე ჩვენ შეგვიძლია პროგრამის ვიკორიზაცია apktool.

შენიშვნა 3.
Linux-ის 64-ბიტიანი ვერსიების მომხმარებლებს დასჭირდებათ ia32-libs პაკეტის დაყენება:

sudo apt-get დააინსტალირეთ ia32-libs

ამ საქაღალდეში ვათავსებთ ფაილს, რომელიც უნდა განვათავსოთ. მაგალითად, ეწოდოს მას orig.apk
დააჭირეთ Shift ღილაკს და გაათავისუფლეთ იგი, დააწკაპუნეთ მარჯვენა ღილაკიგადაადგილეთ ნებისმიერ ცარიელ საქაღალდეზე (დააწკაპუნეთ არა ფაილებზე!). ამის შემდეგ, აირჩიეთ პუნქტი "გახსენით ბრძანების ფანჯარა". კონსოლზე, რომელიც გამოჩნდება, ჩვენ ვწერთ:

apktool decode orig.apk

ფაილი გაიხსნება:

ახლა ჩვენს C:apktool დირექტორიაში არის საქაღალდე შეუფუთავი დანამატით. მას იგივე ჰქვია, რაც გამომავალ ფაილს, გაფართოებით: C: apktool orig. ჩვენ შეგვიძლია შევცვალოთ გამომავალი ფაილები, როგორც აღწერილია Android-ის სტატიაში: როგორ დავაყენოთ ორი ახალი პროგრამა ერთ ტელეფონზე. ცვლილებების განხორციელების შემდეგ, ჩვენ ავიღებთ იმ პროგრამების ასლს, რომლებმაც შეფუთეს გამომავალი ფაილები apk-ში:

apktool build orig result.apk

აქ result.apk არის ფაილის სახელი, რომელიც შევიყვანეთ სარეზერვო ასლისთვის. ვინაიდან შეწყალება არ არის, ფაილი შეიქმნება:

მნიშვნელოვანია ამ სტატისტიკის მიღმა გასვლა:

  1. თუ შეგროვების დროს იქნება შესწორებები, აუცილებელია გაირკვეს მათი მიზეზი და გამოსწორდეს.
  2. დამავიწყდა შედეგი.apk ფაილზე ხელმოწერა. თქვენ შეგიძლიათ გამოიყენოთ SmartAPKTool დახმარებისთვის, როგორც ზემოთ თქვეს; ყველაფერს ინტუიციურად ესმოდა. ასევე არსებობს apk ფაილზე ხელმოწერის სხვა გზები.
  3. ასლის დაინსტალირების შემდეგ, დაწყებამდე, ან რობოტებმა შეიძლება გამოიწვიოს შეცდომები. ისინი უნდა დაიჭიროთ adb უტილიტის გამოყენებით საწყობში შესასვლელად Android SDK.

თქვენ დაუყოვნებლივ უნდა მოაწეროთ ხელი დამატებას, წინააღმდეგ შემთხვევაში თქვენ არ მიიღებთ. შესწორებები არც თუ ისე ხშირად ხდება და მათგან წარმოქმნილი ყველაზე გავრცელებული პრობლემები აღწერილია სტატისტიკაში

Android მოწყობილობებისთვის სხვადასხვა პროგრამული უზრუნველყოფის ინსტალაციის პროცესში, ზოგჯერ საჭიროა სხვაგვარად შეცვალოთ დაინსტალირებული სისტემის პროგრამები. ოპერაციული სისტემა. უ ამ მასალასჩვენ კარგად დავაკვირდებით ჯაჭვს.

ბუნებრივია, თქვენ უნდა გადმოწეროთ და გადმოწეროთ სისტემის APK ფაილი, რათა ის შეუფერხებლად და სტაბილურად იმუშაოს. მოდით, ნელ-ნელა გავარკვიოთ, რისი შოვნაა საჭირო.

უპირველეს ყოვლისა, თქვენ უნდა დაიწყოთ სისტემის APK ფაილების დეოდექსირების პროცესი. მათ შესახებ, თუ როგორ უნდა გამოიმუშაოთ ფული, ჩვენ ვიცით.

ასევე, .apk ფაილი გამოიყენება დეოდექსირებისა და დეკომპილაციისთვის. შევხედოთ დამატებას, რა დაგვიძახოთ, დავარქვათ სახელი, სიზუსტისთვის, კონდახით, ჩარჩო- რეზ. apk. უფროსი ახსოვს, როგორც ორიგინალური პროგრამა.

ყველა მისაღებია მოთხოვნების შეცვლაჩვენ განვახორციელეთ დამატებითი გადახდები. ჩვენ ვისაუბრებთ APK ფაილების ყველა ასპექტზე. ახლა თქვენ უნდა შეფუთოთ იგი. მზა შეფუთული დანამატი გონებაში ახსოვს, როგორც დანამატის 2-ის მოდიფიკაცია.

ახლა განვმარტოთ, საჭირო იყო პროგრამების დამახსოვრება, როგორც ორიგინალური და შეცვლილი 2. არჩეულია ApkTool პროგრამის მიერ (ან SmartApkTool პლატფორმაზე ინტერფეისის გრაფიკული გაფართოების დახმარებით), დამატება არ იქნება გამოყენებული, მაგრამ ეს არის პრობლემა არ არის. ჩვენ შეგვიძლია შევიტანოთ შემდეგი მოქმედებები:

ამ ფაილების APK-ში დაბრუნება მარტივია. ამისათვის თქვენ უნდა გაუშვათ apktool სპეციალური შეგროვების შეკვეთით და გადაიტანოთ ის საქაღალდეში დეკომპილირებული დანამატით შუაში. მაგალითად, თუ გვაქვს აპლიკაციის საქაღალდე, რომელიც მდებარეობს იმავე დირექტორიაში, როგორც apktool, მაშინ ბრძანება ასე გამოიყურება:

ჭურვი

java -jar apktool.jar b app

java - jar apktool .jar b app

მზა APK ფაილის შეგროვების შემდეგ, ის იქნება კატალოგში. აპლიკაცია/ნაგებობა. შემდეგ თქვენ უნდა მოაწეროთ ხელი APK-ს. მნიშვნელოვანია დავრწმუნდეთ, რომ პროგრამა მუშაობს გარე შენობებზე, რათა დაცული იყოს მშენებლობა. ასეთ მოწყობილობებზე ხელმოუწერელი პროგრამების გაშვება აკრძალულია. ანგარიში ციფრული სერთიფიკატების და ფაილების ხელმოწერის პროცედურის შესახებ შეგიძლიათ წაიკითხოთ აქ.

ფაილზე ხელმოწერა ძალიან მარტივია: ვისთვის? სპეციალური უტილიტასახელწოდებით signapk. თქვენ უნდა გაუშვათ ის, გადასცეთ არგუმენტები სერთიფიკატზე, შემდეგ გადადით დანამატზე და შეარჩიეთ გზა ხელმოწერილი დანამატისთვის (შედეგი, სად შეინახოთ იგი). ეს დაახლოებით ასე გამოიყურება:

ჭურვი

java -jar signapk.jar testkey.x509.pem testkey.pk8 *.apk apk_signed.apk

java - jar signapk .jar testkey .x509 .pem testkey .pk8 * .apk apk_signed .apk

სად შეიძლება ასეთი სერთიფიკატის მიღება ვკითხე? სერთიფიკატები შეგიძლიათ იხილოთ ინტერნეტში. ან თავად შექმენით იგი. დეტალური ინსტრუქციებითქვენ შეგიძლიათ გაიგოთ ყველა საჭირო ფაილის დაყენებისა და გენერირების შესახებ, მაგალითად, .

ვისნოვოკი

როგორც ხედავთ, APK ფაილების დეკომპილაცია და დაკეცვა მარტივი პროცესია, რომელიც ასევე შეიძლება ავტომატიზირებული იყოს, რაც რობოტს გაუადვილებს თვალყურის დევნებას. თავად Dalvik-ის ვირტუალური მანქანა ასევე მარტივი შესასწავლია და იხსნება, რაც, ერთი მხრივ, ამცირებს საცალო ვაჭრობის შესვლის ბარიერს, მეორეს მხრივ, ეს არის ამდენი მეკობრეობის მთავარი მიზეზი. ანდროიდის პლატფორმები. ამიტომ, დისტრიბუტორები, მაგალითად, ძირითადად არ არიან ორიენტირებულნი ამ საკითხზე დიდი თამაშებინაკვეთით. ამ ურთიერთობას ბევრი სარგებელი მოაქვს კორისტუვაჩივ კლეპატის შორის, რომლებიც ძალიან ჰგავს ერთ ფერმას შემოწირულობით. ამიტომ, დანამატების შეძენა საცალო მოვაჭრეების მიერ წახალისებულია და, შედეგად, ამოღებულია დიდი შინაარსი. და საერთოდ არ არის საჭირო ღერძის შემოწირულობა!

ყველას გისურვებთ ახალ მეგობრობამდე.

Android-ის ზოგიერთ აპლიკაციაში, გთხოვთ, არ გამოიყენოთ კონტროლერი. კონდახის მსგავსად, შეგიძლიათ განათავსოთ რეკლამა. თორემ ასე ხდება - პროგრამა სულ კარგია, მაგრამ მისი თარგმანი ან უხეშია, ან სულ რაღაც დღე. ან, მაგალითად, პროგრამა საცდელია, მაგრამ ახალი ვერსიაარანაირი შესაძლებლობა არ არის. როგორ შევცვალო სიტუაცია?

შედი

TsII statts იმათზეა ლაპარაკი, yak Rosіbrati APK APK დანართით, გარეგნულად, მახინჯი სტრუქტურა არის სტრუქტურა, dizamblemo, decompіtlyuy სატყუარას-კოდი და შესაძლებელია მისი მიტანა dodatkiv kilka Zmin, yaki. შეუძლია მოგვიტანოს Tu Inshu Vigo Vigoda.

ყველაფრის დამოუკიდებლად გასაკეთებლად, დაგჭირდებათ Java ენის საბაზისო ცოდნა, რომელშიც იწერება პროგრამები Android-ისთვის და ყველგან გამოყენებული XML ენა Android-ში - იხილეთ თავად პროგრამების აღწერა და მათი წვდომის უფლებები, სანამ შეინახავთ რიგებს, რომლებიც ეკრანზე გამოჩნდება. თქვენ ასევე დაგჭირდებათ სპეციალიზებული კონსოლის პროგრამული უზრუნველყოფის გამოყენება.

მაშ, რა არის APK პაკეტი, რომელიც შეიცავს აბსოლუტურად ყველა პროგრამას Android-ისთვის?

დანამატების დეკომპილაცია

ჩვენი სტატისტიკა მუშაობდა მხოლოდ დაშლილი პროგრამის კოდით, დაცვით დიდი პროგრამებიშეიტანეთ სერიოზული ცვლილებები, smali კოდის შეცვლა ბევრად უფრო რთული იქნება. საბედნიეროდ, ჩვენ შეგვიძლია დეკომპილირებული dex Java კოდი, რომელიც გინდათ, არ არის ორიგინალი და არ კეთდება უკუღმა, მაგრამ მაინც ადვილად იკითხება და გასაგებია რობოტული პროგრამების ლოგიკა. ფულის შოვნისთვის ჩვენ გვჭირდება ორი ინსტრუმენტი:

  • dex2jar - Dalvik bytecode-ის თარჯიმანი JVM bytecode-ზე, იმის მიხედვით, თუ როგორ შეგვიძლია გადავთარგმნოთ Java კოდი;
  • jd-gui არის თავად დეკომპილერი, რომელიც საშუალებას გაძლევთ ამოიღოთ იკითხებადი Java კოდი JVM ბაიტექოდიდან. ალტერნატივის სახით შეგიძლიათ ეწვიოთ ჯადს (www.varaneckas.com/jad); ძველის დასრულება მინდა, მაგრამ ზოგ შემთხვევაში უფრო მეტს გამოიმუშავებს კოდი წასაკითხად, ნიჟ ჯდ-გუი

Vikoristovat მათი კვალი ასე. ამიერიდან ჩვენ ვიწყებთ dex2jar-ს, სადაც მითითებულია, თუ როგორ მიდის არგუმენტი apk პაკეტში:

%dex2jar.sh mail.apk

შედეგად, Java პაკეტი mail.jar გამოჩნდება სტრიმინგ კატალოგში, რომელიც შეიძლება გაიხსნას jd-gui-ში Java კოდის სანახავად.

APK პაკეტების გამოყენება და მათი წაშლა

პლასტიკური ჩანთა ანდროიდის პროგრამებიარსებითად, არის ორიგინალური ZIP ფაილი; განბლოკვის ნაცვლად ნახვას არ სჭირდება რაიმე სპეციალური ინსტრუმენტები. საკმარისი არქივატორია 7zip Windows-ისთვის ან კონსოლის unzip Linux-ისთვის. ალე წე შოდო ობგორკი. რა შუაშია? შუაში, ჩვენ გვაქვს შემდეგი სტრუქტურა ზაგალნის ფილიალში:

  • META-INF/- განათავსეთ პროგრამაში ციფრული სერტიფიკატი, რომელიც ადასტურებს მის შემქმნელს და პაკეტის ფაილების საკონტროლო ჯამს;
  • res/ - სხვადასხვა რესურსი, რომელიც მატებს თქვენს სამუშაოს ღირებულებას, მაგალითად, სურათები, ინტერფეისის დეკლარაციული აღწერილობები, ასევე სხვა მონაცემები;
  • AndroidManifest.xml- პროგრამის აღწერა. აქ, მაგალითად, საჭიროა საჭირო ნებართვების სია ანდროიდის ვერსიააუცილებელია ეკრანის გამოყოფა;
  • კლასები.dex- ბაიტეკოდის პროგრამების შედგენა ვირტუალური ხელსაწყოდალვიკი;
  • რესურსები.arsc- იგივე რესურსები, მაგრამ სხვა სახის - დახურეთ რიგები (დიახ, ეს ფაილი შეიძლება შეიცვალოს რუსიფიკაციისთვის!).

ყველას არ აქვს ფაილების და დირექტორიების სია, მაგრამ შესაძლოა მათ უმეტესობას აქვს APK. თუმცა, თქვენ შეგიძლიათ გამოიცნოთ ფაილის/საქაღალდის გაფართოებების რაოდენობა:

  • აქტივები- რესურსების ანალოგი. მთავარი განსხვავება ისაა, რომ რესურსზე წვდომისთვის საჭიროა იცოდეთ მისი იდენტიფიკატორი; აქტივების სია შეიძლება დინამიურად შეირჩეს პროგრამის კოდში AssetManager.list() მეთოდის გამოყენებით;
  • lib– Linux-ის მშობლიური ბიბლიოთეკები დაწერილი NDK-ის (Native Development Kit) დახმარებით.

ეს კატალოგი შეიცავს igor-ების შემქმნელებს, რომლებიც ათავსებენ ძრავებს, წერენ C/C++-ში, ასევე მაღალპროდუქტიული დანამატების შემქმნელებს (მაგალითად, გუგლ ქრომი). ჩვენ გავერთიანდით მოწყობილობასთან. როგორ გამოვიტანო თავად პროგრამის პაკეტის ფაილი, რა უნდა გავაკეთო? შეუძლებელია მოწყობილობიდან APK ფაილების მიღება root-ის გარეშე (ის დევს /data/app დირექტორიაში) და rooting ყოველთვის არ არის აუცილებელი, მაგრამ პროგრამის ფაილის თქვენს კომპიუტერში გადატანის მინიმუმ სამი გზა არსებობს:

  • APK Downloader გაფართოება Chrome-ისთვის;
  • რეალური APK Leecher დამატება;
  • არსებობს სხვადასხვა ფაილების გაზიარების სერვისები და ვარეზნიკები.

რომელი მათგანია გამარჯვებული - მარჯვნივ მიხარია; ჩვენ პატივს ვცემთ პროგრამების საუკეთესო გამოყენებას, როგორიცაა Real APK Leecher, რომელიც უფრო ფართოდ იწერება Java-ში და, როგორც ჩანს, გამოიყენება როგორც Windows-ის, ასევე Nike-ის მიერ.

პროგრამის გაშვების შემდეგ თქვენ უნდა შეავსოთ სამი ველი: ელფოსტა, პაროლი და მოწყობილობის ID - და აირჩიეთ ენა. პირველი ორი არის თქვენი Google ანგარიშის ელფოსტა და პაროლი, რომელსაც იყენებთ მოწყობილობაზე. მესამე არის მოწყობილობის იდენტიფიკატორი და მისი წვდომა შესაძლებელია კოდის აკრეფით # #8255## და შემდეგ გაარკვიეთ მოწყობილობის ID მწკრივი. თუ შევსებულია, მოგიწევთ ID-ის შეყვანა ანდროიდის პრეფიქსის გარეშე.

შევსების და შენახვის შემდეგ ხშირად ჩნდება შეტყობინება "შეცდომა სერვერთან დაკავშირებისას". არ აქვს მნიშვნელობა სანამ Google Playასე რომ, უგულებელყოთ იგი და მოძებნეთ პაკეტები, რომ დაწეროთ თქვენთვის.

გადახედვა და მოდიფიკაცია

ვთქვათ, თქვენ იცით პაკეტი, რომელიც გჭირდებათ ჩამოტვირთოთ, ჩამოტვირთოთ, გახსნათ... და როცა სცადეთ, გადახედავთ ზოგიერთ XML ფაილს და გაკვირვებით აღმოაჩენთ, რომ ფაილი არ არის ტექსტური ფაილი. როგორ შეგვიძლია დეკომპილირება და პაკეტებთან გამკლავება? ნამდვილად საჭიროა SDK-ის დაყენება? არა, SDK-ის დაყენება სავალდებულო არ არის. საჭირო აქსესუარი ინსტრუმენტები APK პაკეტების ყველა ამოხსნის, მოდიფიკაციისა და შეფუთვისთვის:

  • ZIP არქივატორიგასახსნელად და შესაფუთად;
  • პატარა- Dalvik ვირტუალური აპარატის ბაიტიკოდის ასამბლერი/დაშლა (code.google.com/p/smali);
  • აპტ- რესურსების შეფუთვის ინსტრუმენტი (შეფუთვის შემდეგ რესურსები ინახება ორობით ხედში პროგრამის პროდუქტიულობის ოპტიმიზაციისთვის). შედით Android SDK სტოკში, მაგრამ ასევე შეგიძლიათ Otrimany Okremo;
  • ხელმომწერი- ინსტრუმენტი ციფრული ხელმოწერაშეცვლილი პაკეტი (bit.ly/Rmrv4M).

შესაძლებელია ყველა ამ ხელსაწყოს პირდაპირ გამოყენება, მაგრამ არა ხელით, მაგრამ უმჯობესია სწრაფად გამოიყენოთ მათზე დაფუძნებული მაღალი ხარისხის პროგრამული უზრუნველყოფა. თუ იყენებთ Linux ან Mac OS X, არის ინსტრუმენტი სახელწოდებით apktool. ის საშუალებას გაძლევთ გახსნათ რესურსები თავდაპირველ ფორმაში (მათ შორის, XML ორობითი და arsc ფაილები), ხელახლა აირჩიოთ პაკეტი შეცვლილი რესურსებიდან და არ მოაწეროთ ხელი პაკეტებს, ასე რომ თქვენ უნდა გაუშვათ ხელმომწერის პროგრამა ხელით. იმისდა მიუხედავად, რომ პროგრამა Java-ზეა დაწერილი, მისი ინსტალაცია არასტანდარტულია. ახლა მოდით შევხედოთ თავად jar ფაილს:

$ cd /tmp $ wget http://bit.ly/WC3OCz $ tar -xjf apktool1.5.1.tar.bz2

$ wget http://bit.ly/WRjEc7 $ tar -xjf apktool-install-linux-r05-ibot.tar.bz2

$ mv apktool.jar ~/bin $ mv apktool-install-linux-r05-ibot/* ~/bin $ export PATH=~/bin:$PATH

თუ თქვენ მუშაობთ Windows-ზე, მაშინ მისთვის არის შესანიშნავი ინსტრუმენტი სახელწოდებით Virtuous Ten Studio, რომელიც ასევე აგროვებს ყველა ამ ინსტრუმენტს (თავად apktool-ის ჩათვლით) და CLI ინტერფეისის ნაცვლად სისტემას აძლევს ინტუიციურ ფუნქციონირებას ძლიერი გრაფიკული ინტერფეისი, დახმარებით. რომელთაგან შეგიძლიათ შეარჩიოთ ოპერაციები შეფუთვის, დაშლისა და დეკომპილაციისგან რამდენიმე დაწკაპუნებით. ხელსაწყო არის დონაციის მოწყობილობა, ასე რომ ზოგიერთი ადამიანი მთავრდება ლიცენზიის გაუქმების წინადადებით, წინააღმდეგ შემთხვევაში შესაძლებელია მისი აღიარება. არ არის სწორი მისი აღწერა, რადგან თქვენ შეგიძლიათ შეხვიდეთ ინტერფეისში ღირებულების მცირე ნაწილით. და apktool ღერძი, მისი კონსოლის ბუნებიდან გამომდინარე, განხილული იქნება ანგარიშში.


მოდით შევხედოთ apktool-ის დაყენებას. მოკლედ, არსებობს სამი ძირითადი ბრძანება: d(decode), b(build) და if(install frame). რადგან ყველაფერი ნათელი გახდა პირველ ორ გუნდთან, შემდეგ მესამე გუნდთან ტვინის ოპერატორი? ვონი ხსნის UI ჩარჩოს, რაც აუცილებელია ამ სიტუაციებში, თუ თქვენ ამზადებთ რაიმე სისტემურ პაკეტს.

მოდით შევხედოთ პირველი ბრძანების შესაძლო ვარიანტებს:

  • -ს- არ დაშალოთ dex ფაილები;
  • -რ- არ გააფუჭოთ რესურსები;
  • -ბ- არ ჩადოთ ღირებული ინფორმაცია dex ფაილის დაშლის შედეგებში;
  • --ჩარჩო-გზა- გამოიყენეთ UI ჩარჩო apktool-ში იმპორტირებულის ნაცვლად. ახლა მოდით გადავხედოთ b ბრძანების რამდენიმე ვარიანტს:
  • -ვ- იძულებითი დაკეცვა ცვლილებების შებრუნების გარეშე;
  • -ა- აშკარად გადადით aapt-ზე (აირჩიეთ APK არქივის შესაგროვებლად), თუ რაიმე მიზეზით გსურთ ამ სხვა მოწყობილობის ვიკორიზაცია.

apktool-ზე წვდომა ძალიან მარტივია, რისთვისაც უბრალოდ უნდა შეიყვანოთ ერთ-ერთი ბრძანება და გადახვიდეთ APK-ზე, მაგალითად:

$apktool dmail.apk

ამის შემდეგ, პაკეტის ყველა გადმოწერილი და დაშლილი ფაილი გამოჩნდება ფოსტის კატალოგში.

მომზადება. ჩართეთ რეკლამა

თეორია, რა თქმა უნდა, კარგია, მაგრამ არის თუ არა ის ნამდვილად საჭირო, რადგან არ ვიცით რა ვუყოთ შეუფუთავ პაკეტს? მოდი ვცადოთ თეორიის პერსპექტივაში გადატანა, თავად პროგრამული უზრუნველყოფის მოდიფიკაცია ისე, რომ ის გვიჩვენებს რეკლამას. კონდახისთვის, ეს იყოს ვირტუალური ჩირაღდანი - ვირტუალური ფისოვანი გამოტოვება. ჩვენთვის ეს პროგრამა იდეალურია, რადგან ის სავსეა შემაშფოთებელი რეკლამით და ასევე მარტივი გამოსაყენებელია, რათა არ დაიკარგოს კოდში.


ასე რომ, ერთ-ერთი ამ მეთოდის დასახმარებლად, აიღეთ დანამატი ბაზრიდან. თუ აირჩევთ Virtuous Ten Studio-ს გამოყენებას, უბრალოდ გახსენით APK ფაილი აპიდან და გახსენით იგი პროექტის შესაქმნელად (ფაილი -> ახალი პროექტი), შემდეგ კონტექსტური მენიუაირჩიეთ იმპორტის ფაილი პროექტისთვის. თუ თქვენი არჩევანი apktool-ზეა, ყველაფერი რაც თქვენ უნდა გააკეთოთ არის ერთი ბრძანების შეყვანა:

$apktool d com.kauf.particle.virtualtorch.apk

ამის შემდეგ, დირექტორიაში com.kauf.particle.virtualtorch ექნება წინა განყოფილებაში აღწერილის მსგავსი ფაილის ხე, გარდა დამატებითი დირექტორია, რომელიც შეცვლის dex ფაილებს და apktool.yml ფაილს. პირველი არის პროგრამის dex-ფაილის დაშლილი კოდის განთავსება, მეორე - სერვისის ინფორმაცია, რომელიც აუცილებელია apktool-ისთვის პაკეტის უკან დასაკეცად.

რა თქმა უნდა, პირველი ადგილი, რომელიც უნდა ვეძებოთ, არის AndroidManifest.xml. და აქ ჩვენ დაუყოვნებლივ ვამკაცრებთ წინსვლის რიგს:

არ არის მნიშვნელოვანი იმის გამოცნობა, რომ ეს დანამატი ეფუძნება ინტერნეტ კავშირის მუდმივად მზარდ მნიშვნელობას. ფაქტობრივად, თუ უბრალოდ გვინდა რეკლამისგან თავის დაღწევა, ჩვენთვის, ყველაფრისთვის საკმარისი იქნება ინტერნეტის დაბლოკვა. ვცადოთ ფულის გამომუშავება. ჩვენ ვშლით ინსტრუქციების რიგს და ვცდილობთ ჩამოტვირთოთ პროგრამული უზრუნველყოფა apktool-ის გამოყენებით:

$apktool b com.kauf.particle.virtualtorch

დირექტორია com.kauf.particle.virtualtorch/build/ აჩვენებს მიღებულ APK ფაილს. თუმცა, მისი ინსტალაცია შეუძლებელია; ზოგიერთი მათგანი არ შეიცავს ციფრულ ხელმოწერას და აკონტროლებს ფაილების ჯამებს (მას უბრალოდ არ აქვს META-INF/ დირექტორია). ჩვენ ვალდებულნი ვართ ხელი მოვაწეროთ პაკეტს დამატებითი კომუნალური apk-signer-ისთვის. Დაიწყო. ინტერფეისი შედგება ორი ჩანართისგან - პირველზე (Key Generator) თქვენ ქმნით გასაღებებს, მეორეზე (APK Signer) ხელს აწერთ. ჩვენი პირადი გასაღების შესაქმნელად, უნდა გვახსოვდეს შემდეგი ველები:

  • სამიზნე ფაილი- გასაღებების შენახვის ფაილი; თითოეული ადამიანი ინახავს ერთ წყვილ გასაღებს;
  • პაროლიі დაადასტურეთ- პაროლი კვანძისთვის;
  • მეტსახელი- გასაღები თავშესაფრიდან მაქვს;
  • მეტსახელის პაროლიі დაადასტურეთ- საიდუმლო გასაღების პაროლი;
  • მოქმედების ვადა- ტერმინი dii (კლდეებში). მწარმოებლებისთვის ღირებულება ოპტიმალურია.

სხვა ველები, zagalom, ზედმეტად - მაგრამ თქვენ უნდა შეავსოთ ერთი.


გაფრთხილება

პროგრამაზე ხელმოწერისთვის დამატებითი apk-signer-ით შეგიძლიათ დააინსტალიროთ Android SDK და მიუთითოთ ახალი გზა პროგრამის პარამეტრებში.

ყველა ინფორმაცია მოცემულია მხოლოდ საინფორმაციო მიზნებისთვის. არც რედაქტორებს და არც ავტორს არ ეკისრებათ პასუხისმგებლობა ამ სტატიის მასალებიდან გამოწვეულ შესაძლო ზიანს.

ახლა თქვენ შეგიძლიათ ხელი მოაწეროთ APK-ს ამ გასაღებით. APK Signer ჩანართზე აირჩიეთ ფაილი, რომელიც უნდა გენერირდეს, შეიყვანეთ პაროლი, გასაღების მეტსახელი და პაროლი, შემდეგ იპოვეთ APK ფაილი და ამოიბეჭდეთ Sign ღილაკი. თუ ყველაფერი კარგად წავა, პაკეტს მოეწერება ხელი.

ინფორმაცია

ასე რომ, ვინაიდან ჩვენ ხელი მოვაწერეთ პაკეტს ჩვენი ოფიციალური გასაღებით, ის არ ეწინააღმდეგება ორიგინალურ დანამატს, რაც ნიშნავს, რომ როდესაც ვცდილობთ პროგრამული უზრუნველყოფის განახლებას ბაზრის მეშვეობით, ჩვენ უარს ვამბობთ.

ციფრული ხელმოწერა საჭიროა მხოლოდ მესამე მხარის პროგრამული უზრუნველყოფისთვის, თუ თქვენ ხართ მოდიფიცირებული სისტემის დანამატები/system/app/ დირექტორიაში დაინსტალირებული ასლები არ საჭიროებს ხელმოწერას.

პაკეტის თქვენს სმარტფონზე ჩამოტვირთვის შემდეგ, ის დაინსტალირებული და გაშვებულია. Voila, რეკლამა დასრულდა! ამის ნაცვლად, მან შეგვატყობინა, რომ ჩვენ არ გვაქვს წვდომა ინტერნეტზე ან რაიმე სხვა ყოველდღიური ნებართვა. ამ იდეის მიღმა ვინ შეიძლებოდა დაისაჯა, მაგრამ ინფორმაცია ტაქტიანად გამოიყურება და, მართალი გითხრათ, ჩვენ უბრალოდ დაგვლოცა სულელური ზედმეტი. პროგრამული უზრუნველყოფა ჩვეულებრივ დაწერილია, ის შეიძლება გამოყენებულ იქნას ყველაფერში, გაარკვიოთ თქვენი ინსტრუქციები ან შეამოწმოთ ინტერნეტ კავშირის ხელმისაწვდომობა და სხვაგვარად უბრალოდ სცადეთ დაწყება. იაკ ბუთი უ ცომუ ვიპადკუ? კარგი, დაარედაქტირე კოდი.

მოითხოვეთ, რომ დანამატის ავტორებმა შექმნან სპეციალური კლასები რეკლამების ჩვენებისთვის და გამოიყენონ ამ კლასების მეთოდები პროგრამების გაშვების ან მათი ერთ-ერთი აქტივობის დროს (მარტივად რომ ვთქვათ, პროგრამის ეკრანები). შევეცადოთ გავიგოთ ეს კლასი. მოდით გადავიდეთ დირექტორიაში smali, შემდეგ com (ორგში არის მხოლოდ დამალული გრაფიკული ბიბლიოთეკა cocos2d), შემდეგ kauf (თავად იქ, რადგან დისტრიბუტორის სახელი და ყველა კოდი იქ არის) – და ღვინის ღერძი, მარკეტინგი. დირექტორია. შუაში არის რამოდენიმე ფაილი smali გაფართოებებიდან. ეს არის კლასები და მათგან ყველაზე შესამჩნევი არის Ad.smali კლასი, სახელის გამო არ არის მნიშვნელოვანი გამოცნობა, რომ შეგიძლიათ რეკლამის ჩვენება.

ჩვენ შეგვეძლო შეგვეცვალა ჩვენი მუშაობის ლოგიკა, მაგრამ ბევრად უფრო მარტივი იქნებოდა, უბრალოდ, ჩვენი რომელიმე მეთოდის მინიშნებები თავად ჩიხიდან გამოგვეყვანა. ასე რომ, ჩვენ გადავდივართ მარკეტინგის დირექტორიადან და გადავდივართ ნაწილაკების დირექტორიაში, შემდეგ კი ვირტუალურ ჩირაღდზე. განსაკუთრებით ფაილის MainActivity.smali-ს წყალობით. ეს არის სტანდარტული კლასი Android-ისთვის, რომელიც შექმნილია Android SDK-ის მიერ და დაინსტალირებულია როგორც პროგრამაში შესვლის წერტილი (C-ში მთავარი ფუნქციის ანალოგი). გახსენით ფაილი რედაქტირებისთვის.

შუაში არის smali კოდი (mesce assembler). ეს არის დაბნეულობის წყარო და მნიშვნელოვანია მისი დაბალი დონის წაკითხვისთვის, ამიტომ ჩვენ არ გავაცნობთ მას, არამედ უბრალოდ გავარკვევთ რეკლამის კლასის ყველა გამოცანებს კოდში და გამოვთქვათ კომენტარი. ჩვენ ვატარებთ სტრიქონში „რეკლამას“ ძიებაში და ვაკლებთ მას 25-ე მწკრივს:

საველე პირადი რეკლამა:Lcom/kauf/მარკეტინგი/რეკლამა;

აქ რეკლამის ველი იქმნება ობიექტის რეკლამის კლასში შესანახად. ჩვენ გვსურს კომენტარი გავაკეთოთ რიგის წინ ### ნიშნის დამატებით კორექტირებაზე. განვაგრძოთ ძებნა. რიგი 423:

ახალი ინსტანციის v3, Lcom/kauf/მარკეტინგი/რეკლამა;

აქ ჩნდება ობიექტის შექმნა. კომენტარი გააკეთა. ძიება გრძელდება 433, 435, 466, 468, 738, 740, 800 და 802 სტრიქონებში Ad კლასის მეთოდებამდე. კომენტარი გააკეთა. Სულ ეს არის. გადავარჩინოთ. ახლა თქვენ უნდა აიღოთ პაკეტი უკან და შეამოწმოთ მისი სარგებლობა და რეკლამის ავთენტურობა. ექსპერიმენტის სისუფთავისთვის, ჩვენ ვაბრუნებთ სტრიქონს AndroidManifest.xml-დან, ვირჩევთ პაკეტს, ხელს ვაწერთ მას და დავაინსტალირებთ.

ჩვენი ბოლო კურდღელი. რეკლამა ჩანს

უი! რეკლამა გამოჩნდა მხოლოდ პროგრამებთან მუშაობის ერთი საათის შემდეგ, მაგრამ დაიკარგა მთავარი მენიუდან, რასაც ვაკეთებთ პროგრამის გაშვებისას. მაშ, შეამოწმეთ, თუ შესვლის წერტილი იგივეა, რაც MainActivity, მაგრამ რეკლამა გამოჩნდა პროგრამის გაშვების დროს, მაგრამ დაიკარგა მთავარ მენიუში, მაშინ შესვლის წერტილი განსხვავებულია? ეფექტური შესვლის წერტილის იდენტიფიცირებისთვის კვლავ გახსენით AndroidManifest.xml ფაილი. ასე რომ, ამას აქვს შემდეგი რიგები:

ისინი გვეუბნებიან (და, რაც მთავარია, ანდროიდზე) მათ შესახებ, რომ აქტივობა სახელწოდებით Start შეიძლება გაშვებული იყოს intent (pod) android.intent.action.MAIN კატეგორიიდან android.intent.category-ის გენერირების საპასუხოდ. .გამშვები. ეს იდეა წარმოიქმნება გამშვებში პროგრამის ხატულაზე დაჭერით, რომელიც მიუთითებს შესვლის წერტილზე და თავად Start კლასზე. კიდევ უკეთესი, პროგრამისტმა ჯერ დაწერა პროგრამა მთავარი მენიუს გარეშე, შესვლის წერტილით ზოგიერთ სტანდარტულ MainActivity კლასში, შემდეგ კი დაამატა ახალი ფანჯარა (აქტივობა) Start კლასში აღწერილი მენიუს დასაყენებლად და ხელით შექმნა ჩანაწერად. წერტილი.

გახსენით ფაილი Start.smali და კვლავ იპოვნეთ Ad row, ნაპოვნი 153 და 155 რიგებში FirstAd კლასის ქვეშ. ის ასევე ხელმისაწვდომია შაბათ-კვირას და სახელწოდებით თუ ვიმსჯელებთ, ის ასევე მიუთითებს ხმის მთავარ ეკრანზე ჩვენებაზე. როგორც ჩანს, როდესაც იქმნება FirstAd კლასის ეგზემპლარი, კონტენტი დაკავშირებულია ამ მაგალითთან და შემდეგ ლეიბლი cond_10, გონებრივი გადასვლა ხდება კლასში ინსტანციის შექმნამდე:

If-ne p1, v0, :cond_10 .ხაზი 74 new-instance v0, Landroid/content/Intent; ... :cond_10

პროგრამა ხომ სწრაფად ითვლის, საჭიროა თუ არა მთავარ ეკრანზე რეკლამის ჩვენება და თუ არა, გადავა cond_10-ზე. კარგი, ვაპატიოთ მისი სიზარმაცე და გონებრივი გადასვლა გიჟურით შევცვალოთ:

#if-ne p1, v0, :cond_10 goto:cond_10

კოდში აღარ არის FirstAd საიდუმლოებები, ამიტომ ჩვენ ვხურავთ ფაილს და კვლავ ვირჩევთ ჩვენს ვირტუალურ ჩირაღდნებს დამატებითი apktool-ის გამოყენებით. დააკოპირეთ სმარტფონზე, დააინსტალირეთ, გაუშვით. ვოილა, ყველა რეკლამა გაქრა, ჩვენ მკვდრები დავტოვეთ და წავედით.

ჩანთები

ეს სტატია არის მოკლე შესავალი ანდროიდის დანამატების გახსნისა და შეცვლის მეთოდებზე. კულისებში ბევრი ძალა დაიკარგა, როგორიცაა დაცვის მოხსნა, ბუნდოვანი კოდის ანალიზი, რესურსების გადატანა და ჩანაცვლება პროგრამებით, ასევე დამატებების შეცვლა. Wikoristanny Android NDK. თუმცა, მიუხედავად ძირითადი ცოდნისა, დროა დავიწყოთ.