როგორ დაიშალა საფონდო Android firmware. როგორ ააწყოთ საკუთარი მზა firmware-დან. Android, DIY firmware mod

გამარჯობა ჰაბრ!

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

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

გავიდა ნახევარი წელი და ჩემი მორგებული firmware წარმატებით გამოიყენება მთელ მსოფლიოში.

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

პრეამბულა

Ისე! ჯერ განვსაზღვროთ ცნებები, რომლებიც გამოყენებული იქნება მოცემულისტატია. თუმცა, თქვენი ჩვეულებრივი გაგება შეიძლება ძალიან განსხვავებული იყოს.

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

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

გარემოს მომზადება

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

1 . Android SDK. ეს არის აპლიკაციის განვითარების გარემო ანდროიდისთვის. ცვლილებების შესატანად აუცილებლად უნდა გადავამოწმოთ ჩვენი პროგრამის კოდი. განვითარების გარემო არის საუკეთესო, რაც შეგვიძლია გამოვიყენოთ.
2 . ანდროიდის სამზარეულო. ეს პროგრამა საშუალებას მოგცემთ იმუშაოთ ოფიციალური ან არაოფიციალური პროგრამული უზრუნველყოფის სისტემის დანაყოფების სურათებთან.
3 . JD-GUI. ჯავის კოდის დეკომპილერი. დაუყოვნებლივ მინდა აღვნიშნო, რომ ეს არის საუკეთესო დეკომპილერი გამოყენების სიმარტივის თვალსაზრისით.
4 . DJ Java Decompiler. ჯავის ენის პროგრამის კოდის კიდევ ერთი დეკომპილერი, ან დემონტაჟი, როგორც ზოგიერთს მოსწონს. მისი გამოყენება არ არის მოსახერხებელი, მაგრამ ის აანალიზებს კოდს, რომელსაც JD-GUI ზოგჯერ არ ესმის.
5 . სმალი. კიდევ ერთი დემონტაჟი, მაგრამ ამჯერად დალვიკის კოდი. smali საჭიროა დაშლისთვის, ხოლო backsmali საჭიროა კოდის აწყობისთვის.
6 . dex2jar. პროგრამა Dalvik კოდის შესრულებადი ფაილების კონვერტაციისთვის.

პროგრამული უზრუნველყოფის კონვერტაცია

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

მას შემდეგ, რაც firmware ოპტიმიზებული ვერსიიდან (ODEX - ოპტიმიზებული dalvik შესრულებადი კოდი, თუ ჩემი მეხსიერება სწორად მემსახურება) შეიცვალა DEODEX-ზე (ანუ არა ოპტიმიზირებული), ყველა შესრულებადი ფაილი მზად არის მოდიფიკაციისთვის.

პირდაპირი ცვლილებები

პატჩების შექმნა
როგორც უკვე ვთქვი, ჩემს ტელეფონს თავდაპირველად აეკრძალა Google-ის გამოყენება. კარგი, რაც არ უნდა იყოს, თქვენ ვერ შეხვალთ Playstore-ში, ვერ შექმნით ანგარიშს, ტელეფონის წიგნი ნამდვილად არ სინქრონიზდება. რატომ გჭირდებათ ასეთი ანდროიდი? თავად მოწყობილობის ლოგინში დიდი ხნის გათხრების შემდეგ, აღმოვაჩინე ჩანაწერები, სადაც ნათქვამია, რომ Google-ის გამოყენება აკრძალულია. ყველაზე უხერხული რამ Android-ში არის ის, რომ ხედავთ ჟურნალს, მაგრამ არ იცით რომელი სისტემის აპლიკაცია აწარმოებს მას. იმის გასარკვევად, თუ საიდან მოდიოდა ჩემი ფეხები, მომიწია სისტემის ყველა აპლიკაციის ამოღება დაშლილი Java კოდისთვის. ამას დიდი დრო დასჭირდა, მაგრამ მე მაინც ვიყენებ იმ სამუშაოს, რაც გავაკეთე ანალიზისა და სწორი კოდის პოვნისას. ასეთი ხელსაწყოების მისაღებად ნაბიჯები შემდეგია:
1 . გააკეთეთ DEODEX ყველა firmware
2 . თქვენი ახალი DEODEX firmware საჭირო იქნება აწყობილი და თქვენს ტელეფონზე ციმციმირება. როგორ კეთდება ეს სხვა სტატიის თემაა.
3 . /system/framework-ში მდებარე თითოეული ფაილიდან ამოიღეთ classes.dex ფაილი და გადააკეთეთ იგი JAR-ში dex2jar-ის გამოყენებით.
4 . გახსენით თითოეული მიღებული JAR JD-GUI-ში და ხელახლა შეინახეთ წყაროს კოდში
5 . ამოიღეთ წყაროს კოდი არქივიდან.

საბოლოოდ, მე მივიღე იმდენი საქაღალდე, რამდენიც იყო JAR ფაილი /system/framework-ში და თითოეულ საქაღალდეს ჰქონდა Java-ს წყარო კოდის სტრუქტურა.
მარტივი მანიპულაციების საშუალებით, მე სწრაფად ვიპოვე ადგილი, რომელიც ქმნიდა ჩანაწერებს logcat-ში.

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

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

კოდი იყო ფაილში HTCExtension.jar, და კლასი, რომელიც შეიცავდა ამ ქვეპროგრამას იყო

ორიგინალური ფაილის ამოღება და ანალიზი
1 . პირველ რიგში, ჩვენ უნდა ავიღოთ ორიგინალური DEODEX JAR ფაილი, რომელიც პასუხისმგებელია კოდის ჩვენთვის საჭირო ნაწილზე. ჩვენს შემთხვევაში HTCExtension.jar.
2 . გახსენით ნებისმიერი არქივირით და ამოიღეთ classes.dex იქიდან
3 . გამოიყენეთ dex2jar კონვერტორი JAR ფაილად გადასაყვანად. ბრძანება: dex2jar.bat classes.dex
4 . გახსენით მიღებული classes_dex2jar.jar ფაილი JD-GUI-ში.
5 . დიახ, ყველაზე ხშირად JD-GUI ანაწილებს კოდს არა ისე, როგორც ორიგინალში ჩანს, გასაგებია, მაგრამ საკმაოდ იკითხება. საწყის კოდში ჩვენ ვხედავთ, რომ ქვეპროგრამა ამოწმებს პროექტის პარამეტრებს და firmware ენის დროშას. ჩვენს სამწუხარო შემთხვევაში, TRUE დაბრუნდა.
საჯარო სტატიკური ლოგიკური არისChina() ( if ((HtcBuildFlag.Htc_PROJECT_flag == 216) || (HtcBuildFlag.Htc_PROJECT_flag == 218) || (HtcBuildFlag.Htc_PROJECT_flag =F_Hflag =FRJECT_flag =F_Hlag) = 1) && (2 == HtcBuildFlag.Htc_LANGUAGE_flag)) || (HtcBuildFlag.Htc_PROJECT_flag == 27)) დააბრუნოს true;
6 . პაჩის გასაკეთებლად საჭიროა თავად დალვიკის კოდის დაშლა. ამისთვის ვიყენებთ ბაქსმალს. ყველაზე მოსახერხებელი გზაა ცალკე საქაღალდის შექმნა და იქ სამი ფაილის ერთად განთავსება: HTCExtension.jar, სმალი.ჯარიდა ბაქსმალი.ჯარი. მიეცით ბრძანება java -Xmx512m -jar baksmali.jar -a -d -o HTCExtension -x HTCExtension.jar

ეს არის API Android-ის თქვენი ვერსიისთვის. JB-სთვის არის 16
- საქაღალდე, სადაც განთავსებულია ყველა firmware ჩარჩო.

ჩემს შემთხვევაში ეს იყო ბრძანება
java -Xmx512m -jar baksmali.jar -a 16 -d S:\dev\Android\Android-Kitchen\WORKING_JB_15\system\framework -o HTCExtension -x HTCExtension.jar
7 . ჩვენს ახლად შექმნილ საქაღალდეში გამოჩნდა HTCExtension საქაღალდე და მასში ჩვენი ფაილები Dalvik კოდით.
8 . ფაილის პოვნა გზაზე \com\htc\util\contacts\BuildUtils$Customization.javaდა გადახედე კოდს:
.method public static isChina()Z .registers 3 .prologue const/4 v0, 0x1 .line 276 sget-short v1, Lcom/htc/htcjavaflag/HtcBuildFlag;->Htc_PROJECT_flag:S const/16 v0xd2 , v2, :cond_13 sget-short v1, Lcom/htc/htcjavaflag/HtcBuildFlag;->Htc_PROJECT_flag:S const/16 v2, 0xda if-eq v1, v2, :cond_13 sget-short/HtcBuildFlag, 0xda if-eq v1, v2, :cond_13 sget-short/HtcBuildFlag ;->Htc_PROJECT_flag:S const/16 v2, 0x17 if-ne v1, v2, :cond_14 .ხაზი 297:cond_13:goto_13 return v0 .ხაზი 283:cond_14 sget-short v1, Lcom/Hctflag>Build/htfl Htc_PROJECT_flag:S if-ne v1, v0, :cond_1d .სტრიქონი 285 const/4 v1, 0x2 sget-short v2, Lcom/htc/htcjavaflag/HtcBuildFlag;->Htc_LANGUAGE_flag:Scont/4 v1, 0x2 291:cond_1d sget-short v1, Lcom/htc/htcjavaflag/HtcBuildFlag;->Htc_PROJECT_flag:S const/16 v2, 0x1b if-eq v1, v2, :cond_13 .სტრიქონი 297:00,04, . მეთოდი
9 . საშინელებაა, არა? არაფერი არ არის ნათელი. მაგრამ ეს გამოსწორებადი საკითხია. რამდენიმე თქვენი საკუთარი პატჩის შექმნით და ამით გამოცდილების მიღების შემდეგ, შეგიძლიათ მარტივად შეცვალოთ კოდი მესამე მხარის ხელსაწყოების გარეშე. ჩვენს შემთხვევაში, ამ კოდში
.prologue const/4 v0, 0x1 ცვლადს v0 ანიჭებს მნიშვნელობას 1, ანუ TRUE. შემდეგ არის ყველა სახის შემოწმება და თუ ტელეფონი არ არის ჩინური, მაშინ ცვლადის მნიშვნელობა იცვლება:
.ხაზი 297 const/4 v0, 0x0 goto:goto_13
10 . რუსული დემოკრატიის მამის გადარჩენის უმარტივესი გზაა კოდის შეცვლა შემდეგში:
.prologue const/4 v0, 0x0, ანუ შეცვალეთ ცვლადის მნიშვნელობა 1-დან 0-მდე. ანუ, რაც არ უნდა მოხდეს, მნიშვნელობა FALSE ყოველთვის დაბრუნდებოდა და JD-GUI კოდი გამოიყურებოდა საჯარო სტატიკურივით. ლოგიკური isChina() ( if (( HtcBuildFlag.Htc_PROJECT_flag == 216) || (HtcBuildFlag.Htc_PROJECT_flag == 218) || (HtcBuildFlag.Htc_PROJECT_flag ==(PROJECT_flag == 23H ) && ( 2 == HtcBuildFlag. Htc_LANGUAGE_flag) || (HtcBuildFlag.Htc_PROJECT_flag == 27))
11 . დიახ, მეთოდი იმუშავებს. მაგრამ ჩვენ არ ვეძებთ მარტივ გზებს - ამჯერად. მეორეც, ეს არ არის ზუსტად ლამაზი. რაღაც მსგავსი კოდი მინდა
საჯარო სტატიკური ლოგიკური isChina() (retur false;)
12 . როგორ მივიღოთ Dalvik კოდი ამ წყაროს კოდისთვის? დამწყებთათვის ჩვენ გავაკეთებთ პატარა ხრიკს.

Dalvik კოდის შექმნა
1 . გახსენით Android SDK.
2 . ჩვენ ვქმნით ახალ პროექტს და ვწერთ შემდეგ კოდს ჩვენს ერთადერთ სატესტო კლასში
პაკეტი ru.habrahabr.test; საჯარო კლასის ტესტი (საჯარო სტატიკური ლოგიკური isChina() (დაბრუნება false;))
3 . ჩვენ ვადგენთ ჩვენს პროექტს და შემდეგ ვიღებთ აწყობილ აპლიკაციას სამუშაო სივრციდან.
4 . აწყობილი აპლიკაცია ჩავსვით საქაღალდეში, სადაც JAR ფაილი გავანადგურეთ.
5 . მიეცით ბრძანება java -Xmx512m -jar baksmali.jar -a -d -o ტესტი -x ტესტი .apk
6 . ჩვენ დავშალეთ ახლად აშენებული აპლიკაცია Dalvik კოდში.
7 . გახსენით ჩვენი test.smali ფაილი და იხილეთ კოდი იქ
.metod public static isChina()Z .რეგისტრირებს 1 .პროლოგი .ხაზი 7 const/4 v0, 0x0 return v0 .end მეთოდი
8 . ესე იგი, პაჩის კოდი მზად არის.
პატჩის გადახვევა
1 . Dalvik კოდი სავსეა მარკერებით, რომლებიც მიუთითებს კოდის ხაზს ორიგინალურ ფაილში. ეს აუცილებელია თქვენს პროგრამაში შეცდომების, ასეთის არსებობის შემთხვევაში, ჩვენებისას. კოდი ასევე კარგად მუშაობს ხაზების მითითების გარეშე.
2 . ჩვენ ვშლით ხაზებს სტრიქონების ნუმერაციით, ვაკოპირებთ და ვცვლით მეთოდს (ქვეპროგრამას) ჩვენს \com\htc\util\contacts\BuildUtils$Customization.javaფაილი.
.metod public static isChina()Z .რეგისტრირებს 1 .პროლოგი const/4 v0, 0x0 return v0 .end მეთოდი
3 . შეინახეთ ფაილი. დიახ, დამავიწყდა მეთქვა, გჭირდებათ ნორმალური რედაქტორი, მაგალითად Notepad++ ან EditPlus. ვის რომელი მოსწონს?
დაპატჩირებული JAR ფაილის შედგენა და აგება
1 . Backsmali-ის გამოყენებით, ჩვენ გავანადგურეთ ჩვენი JAR ფაილი და ახლა ჩვენ უნდა დავაბრუნოთ იგი.
2 . მიეცით ბრძანება java -Xmx512m -jar smali.jar -a 16 HTCExtension -o classes.dex
3 . classes.dex ფაილი გამოჩნდება ჩვენს საქაღალდეში
4 . ისევ გახსნა HTCExtension.jarფაილი არქივირით და შეცვალეთ მასში არსებული კლასები.dexჩვენს ახლად შექმნილს.
5 . ესე იგი, ჩვენი HTCExtension.jarშეიცავს შეცვლილ პროგრამის კოდს.
ორიგინალური ფაილის შეცვლა დაპატჩირებულით
ჩვეულებრივ, ჩვეულებრივი მომხმარებლებისთვის იქმნება სპეციალური სკრიპტები, რომლებიც იცვლება აღდგენის გზით. მაგრამ ჩვენ ეს არ გვაინტერესებს. ჯერ ერთი, ეს გრძელი და დამღლელია და მეორეც, ჩვენ გამოცდილი მომხმარებლები ვართ და შეგვიძლია გარკვეული დახვეწილობის საშუალება.

1 . თქვენ შეგიძლიათ შეცვალოთ მიმდინარე სამუშაო ფაილი შემდეგი ბრძანებებით, თუ უკვე გაქვთ DEODEX firmware და გაქვთ root წვდომა:

Adb push HTCExtension.jar /sdcard/HTCExtension.jar adb shell su mount -o remount -rw /system dd if=/system/framework/HTCExtension.jar of=/system/framework/HTCExtension.jar.back dd if=/sdcard /HTCExtension.jar of=/system/framework/HTCExtension.jar chmod 644 /system/framework/HTCExtension.jar rm /data/dalvik-cache/system@ [ელფოსტა დაცულია]@classes.dex გადატვირთვა

პირველი ბრძანება ატვირთავს შესწორებულ ფაილს ფლეშ დისკზე
მე-2 ბრძანება ხსნის გარსს
მე-3 ბრძანება იძლევა root წვდომას
მე-4 ბრძანება ამონტაჟებს სისტემას წაკითხვის/ჩაწერის რეჟიმში
მე-5 ბრძანება ქმნის ფაილის სარეზერვო ასლს
მე-6 ბრძანება გადაწერს არსებულ ფაილს ახალი შესწორებულით.
მე-7 ბრძანება აკონფიგურირებს ნებართვებს
მე-8 ბრძანება შლის ქეშს
მე-9 ბრძანება გადატვირთავს მოწყობილობას.

2 . გმადლობთ, რომ წაიკითხეთ აქამდე, ცოტა დარჩა.
3 . გადატვირთვის შემდეგ, თქვენი ახალი დაყენებული კოდი ამოქმედდება.
4 . თუ კოდი არ მუშაობს ან მოხდა შეცდომა, მაშინ მარტივი კომბინაციების გამოყენებით შეგიძლიათ დააბრუნოთ სარეზერვო ასლი.
adb shell su mount -o remount -rw /system dd if=/system/framework/HTCExtension.jar.back of=/system/framework/HTCExtension.jar rm /data/dalvik-cache/system@ [ელფოსტა დაცულია]@classes.dex გადატვირთვა

ეპილოგი

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

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

P.S. თუ რამე არ არის ნათელი ან გაუგებარია, დასვით კითხვები - ყოველთვის სიამოვნებით გიპასუხებ და ავხსნი.

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

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

რა თქმა უნდა, საკმაოდ რთულია გაჯეტის სრულად გამორთვა, მაგრამ სამწუხარო ანდროიდის სრული „განადგურება“ სავსებით შესაძლებელია. შემდეგ ჩნდება მოწყობილობის ციმციმის საკითხი და ჩვენ გეტყვით, თუ როგორ უნდა გააკეთოთ ეს თავად ამ სტატიაში.


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

ციმციმება კომპიუტერის გამოყენებით

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

როგორ გააკეთოთ firmware Android-ისთვის საკუთარ თავს

თქვენ უნდა იპოვოთ firmware ვერსია თქვენი მოწყობილობისთვის. ინტერნეტს აქვს ყველაფერი, რაც ამისთვის გჭირდებათ. ჩვენ გირჩევთ გამოიყენოთ სანდო საიტები, რათა თავიდან აიცილოთ ვირუსის პროგრამები თქვენს კომპიუტერში ჩატვირთვასთან ერთად. ერთ-ერთი ასეთი საიტია 4pda.

აქ შეგიძლიათ იპოვოთ არა მხოლოდ firmware, არამედ "მოციმციმე პროგრამა", რომელიც ასევე დაგვჭირდება. მაგალითად, Samsung-ისთვის ეს არის Odin პროგრამა, Sony Ericsson-ისთვის ეს არის PC Companion და თქვენ უნდა იპოვოთ ასეთი პროგრამის ვერსია თქვენი მოწყობილობისთვის. პროგრამული უზრუნველყოფის ჩამოტვირთვის შემდეგ, თქვენ უნდა "ჩააგდოთ" ის ასეთ პროგრამაში და დაიწყოთ მუშაობა.

ასე რომ, თქვენ გჭირდებათ:

  • თქვენი გაჯეტი;
  • USB კაბელი;
  • პროგრამა ციმციმისთვის;
  • Firmware.

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

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

გამარჯობა ჰაბრ!

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

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

გავიდა ნახევარი წელი და ჩემი მორგებული firmware წარმატებით გამოიყენება მთელ მსოფლიოში.

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

პრეამბულა

Ისე! ჯერ განვსაზღვროთ ცნებები, რომლებიც გამოყენებული იქნება მოცემულისტატია. თუმცა, თქვენი ჩვეულებრივი გაგება შეიძლება ძალიან განსხვავებული იყოს.

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

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

გარემოს მომზადება

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

1 . Android SDK. ეს არის აპლიკაციის განვითარების გარემო ანდროიდისთვის. ცვლილებების შესატანად აუცილებლად უნდა გადავამოწმოთ ჩვენი პროგრამის კოდი. განვითარების გარემო არის საუკეთესო, რაც შეგვიძლია გამოვიყენოთ.
2 . ანდროიდის სამზარეულო. ეს პროგრამა საშუალებას მოგცემთ იმუშაოთ ოფიციალური ან არაოფიციალური პროგრამული უზრუნველყოფის სისტემის დანაყოფების სურათებთან.
3 . JD-GUI. ჯავის კოდის დეკომპილერი. დაუყოვნებლივ მინდა აღვნიშნო, რომ ეს არის საუკეთესო დეკომპილერი გამოყენების სიმარტივის თვალსაზრისით.
4 . DJ Java Decompiler. ჯავის ენის პროგრამის კოდის კიდევ ერთი დეკომპილერი, ან დემონტაჟი, როგორც ზოგიერთს მოსწონს. მისი გამოყენება არ არის მოსახერხებელი, მაგრამ ის აანალიზებს კოდს, რომელსაც JD-GUI ზოგჯერ არ ესმის.
5 . სმალი. კიდევ ერთი დემონტაჟი, მაგრამ ამჯერად დალვიკის კოდი. smali საჭიროა დაშლისთვის, ხოლო backsmali საჭიროა კოდის აწყობისთვის.
6 . dex2jar. პროგრამა Dalvik კოდის შესრულებადი ფაილების კონვერტაციისთვის.

პროგრამული უზრუნველყოფის კონვერტაცია

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

მას შემდეგ, რაც firmware ოპტიმიზებული ვერსიიდან (ODEX - ოპტიმიზებული dalvik შესრულებადი კოდი, თუ ჩემი მეხსიერება სწორად მემსახურება) შეიცვალა DEODEX-ზე (ანუ არა ოპტიმიზირებული), ყველა შესრულებადი ფაილი მზად არის მოდიფიკაციისთვის.

პირდაპირი ცვლილებები

პატჩების შექმნა
როგორც უკვე ვთქვი, ჩემს ტელეფონს თავდაპირველად აეკრძალა Google-ის გამოყენება. კარგი, რაც არ უნდა იყოს, თქვენ ვერ შეხვალთ Playstore-ში, ვერ შექმნით ანგარიშს, ტელეფონის წიგნი ნამდვილად არ სინქრონიზდება. რატომ გჭირდებათ ასეთი ანდროიდი? თავად მოწყობილობის ლოგინში დიდი ხნის გათხრების შემდეგ, აღმოვაჩინე ჩანაწერები, სადაც ნათქვამია, რომ Google-ის გამოყენება აკრძალულია. ყველაზე უხერხული რამ Android-ში არის ის, რომ ხედავთ ჟურნალს, მაგრამ არ იცით რომელი სისტემის აპლიკაცია აწარმოებს მას. იმის გასარკვევად, თუ საიდან მოდიოდა ჩემი ფეხები, მომიწია სისტემის ყველა აპლიკაციის ამოღება დაშლილი Java კოდისთვის. ამას დიდი დრო დასჭირდა, მაგრამ მე მაინც ვიყენებ იმ სამუშაოს, რაც გავაკეთე ანალიზისა და სწორი კოდის პოვნისას. ასეთი ხელსაწყოების მისაღებად ნაბიჯები შემდეგია:
1 . გააკეთეთ DEODEX ყველა firmware
2 . თქვენი ახალი DEODEX firmware საჭირო იქნება აწყობილი და თქვენს ტელეფონზე ციმციმირება. როგორ კეთდება ეს სხვა სტატიის თემაა.
3 . /system/framework-ში მდებარე თითოეული ფაილიდან ამოიღეთ classes.dex ფაილი და გადააკეთეთ იგი JAR-ში dex2jar-ის გამოყენებით.
4 . გახსენით თითოეული მიღებული JAR JD-GUI-ში და ხელახლა შეინახეთ წყაროს კოდში
5 . ამოიღეთ წყაროს კოდი არქივიდან.

საბოლოოდ, მე მივიღე იმდენი საქაღალდე, რამდენიც იყო JAR ფაილი /system/framework-ში და თითოეულ საქაღალდეს ჰქონდა Java-ს წყარო კოდის სტრუქტურა.
მარტივი მანიპულაციების საშუალებით, მე სწრაფად ვიპოვე ადგილი, რომელიც ქმნიდა ჩანაწერებს logcat-ში.

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

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

კოდი იყო ფაილში HTCExtension.jar, და კლასი, რომელიც შეიცავდა ამ ქვეპროგრამას იყო

ორიგინალური ფაილის ამოღება და ანალიზი
1 . პირველ რიგში, ჩვენ უნდა ავიღოთ ორიგინალური DEODEX JAR ფაილი, რომელიც პასუხისმგებელია კოდის ჩვენთვის საჭირო ნაწილზე. ჩვენს შემთხვევაში HTCExtension.jar.
2 . გახსენით ნებისმიერი არქივირით და ამოიღეთ classes.dex იქიდან
3 . გამოიყენეთ dex2jar კონვერტორი JAR ფაილად გადასაყვანად. ბრძანება: dex2jar.bat classes.dex
4 . გახსენით მიღებული classes_dex2jar.jar ფაილი JD-GUI-ში.
5 . დიახ, ყველაზე ხშირად JD-GUI ანაწილებს კოდს არა ისე, როგორც ორიგინალში ჩანს, გასაგებია, მაგრამ საკმაოდ იკითხება. საწყის კოდში ჩვენ ვხედავთ, რომ ქვეპროგრამა ამოწმებს პროექტის პარამეტრებს და firmware ენის დროშას. ჩვენს სამწუხარო შემთხვევაში, TRUE დაბრუნდა.
საჯარო სტატიკური ლოგიკური არისChina() ( if ((HtcBuildFlag.Htc_PROJECT_flag == 216) || (HtcBuildFlag.Htc_PROJECT_flag == 218) || (HtcBuildFlag.Htc_PROJECT_flag =F_Hflag =FRJECT_flag =F_Hlag) = 1) && (2 == HtcBuildFlag.Htc_LANGUAGE_flag)) || (HtcBuildFlag.Htc_PROJECT_flag == 27)) დააბრუნოს true;
6 . პაჩის გასაკეთებლად საჭიროა თავად დალვიკის კოდის დაშლა. ამისთვის ვიყენებთ ბაქსმალს. ყველაზე მოსახერხებელი გზაა ცალკე საქაღალდის შექმნა და იქ სამი ფაილის ერთად განთავსება: HTCExtension.jar, სმალი.ჯარიდა ბაქსმალი.ჯარი. მიეცით ბრძანება java -Xmx512m -jar baksmali.jar -a -d -o HTCExtension -x HTCExtension.jar

ეს არის API Android-ის თქვენი ვერსიისთვის. JB-სთვის არის 16
- საქაღალდე, სადაც განთავსებულია ყველა firmware ჩარჩო.

ჩემს შემთხვევაში ეს იყო ბრძანება
java -Xmx512m -jar baksmali.jar -a 16 -d S:\dev\Android\Android-Kitchen\WORKING_JB_15\system\framework -o HTCExtension -x HTCExtension.jar
7 . ჩვენს ახლად შექმნილ საქაღალდეში გამოჩნდა HTCExtension საქაღალდე და მასში ჩვენი ფაილები Dalvik კოდით.
8 . ფაილის პოვნა გზაზე \com\htc\util\contacts\BuildUtils$Customization.javaდა გადახედე კოდს:
.method public static isChina()Z .registers 3 .prologue const/4 v0, 0x1 .line 276 sget-short v1, Lcom/htc/htcjavaflag/HtcBuildFlag;->Htc_PROJECT_flag:S const/16 v0xd2 , v2, :cond_13 sget-short v1, Lcom/htc/htcjavaflag/HtcBuildFlag;->Htc_PROJECT_flag:S const/16 v2, 0xda if-eq v1, v2, :cond_13 sget-short/HtcBuildFlag, 0xda if-eq v1, v2, :cond_13 sget-short/HtcBuildFlag ;->Htc_PROJECT_flag:S const/16 v2, 0x17 if-ne v1, v2, :cond_14 .ხაზი 297:cond_13:goto_13 return v0 .ხაზი 283:cond_14 sget-short v1, Lcom/Hctflag>Build/htfl Htc_PROJECT_flag:S if-ne v1, v0, :cond_1d .სტრიქონი 285 const/4 v1, 0x2 sget-short v2, Lcom/htc/htcjavaflag/HtcBuildFlag;->Htc_LANGUAGE_flag:Scont/4 v1, 0x2 291:cond_1d sget-short v1, Lcom/htc/htcjavaflag/HtcBuildFlag;->Htc_PROJECT_flag:S const/16 v2, 0x1b if-eq v1, v2, :cond_13 .სტრიქონი 297:00,04, . მეთოდი
9 . საშინელებაა, არა? არაფერი არ არის ნათელი. მაგრამ ეს გამოსწორებადი საკითხია. რამდენიმე თქვენი საკუთარი პატჩის შექმნით და ამით გამოცდილების მიღების შემდეგ, შეგიძლიათ მარტივად შეცვალოთ კოდი მესამე მხარის ხელსაწყოების გარეშე. ჩვენს შემთხვევაში, ამ კოდში
.prologue const/4 v0, 0x1 ცვლადს v0 ანიჭებს მნიშვნელობას 1, ანუ TRUE. შემდეგ არის ყველა სახის შემოწმება და თუ ტელეფონი არ არის ჩინური, მაშინ ცვლადის მნიშვნელობა იცვლება:
.ხაზი 297 const/4 v0, 0x0 goto:goto_13
10 . რუსული დემოკრატიის მამის გადარჩენის უმარტივესი გზაა კოდის შეცვლა შემდეგში:
.prologue const/4 v0, 0x0, ანუ შეცვალეთ ცვლადის მნიშვნელობა 1-დან 0-მდე. ანუ, რაც არ უნდა მოხდეს, მნიშვნელობა FALSE ყოველთვის დაბრუნდებოდა და JD-GUI კოდი გამოიყურებოდა საჯარო სტატიკურივით. ლოგიკური isChina() ( if (( HtcBuildFlag.Htc_PROJECT_flag == 216) || (HtcBuildFlag.Htc_PROJECT_flag == 218) || (HtcBuildFlag.Htc_PROJECT_flag ==(PROJECT_flag == 23H ) && ( 2 == HtcBuildFlag. Htc_LANGUAGE_flag) || (HtcBuildFlag.Htc_PROJECT_flag == 27))
11 . დიახ, მეთოდი იმუშავებს. მაგრამ ჩვენ არ ვეძებთ მარტივ გზებს - ამჯერად. მეორეც, ეს არ არის ზუსტად ლამაზი. რაღაც მსგავსი კოდი მინდა
საჯარო სტატიკური ლოგიკური isChina() (retur false;)
12 . როგორ მივიღოთ Dalvik კოდი ამ წყაროს კოდისთვის? დამწყებთათვის ჩვენ გავაკეთებთ პატარა ხრიკს.

Dalvik კოდის შექმნა
1 . გახსენით Android SDK.
2 . ჩვენ ვქმნით ახალ პროექტს და ვწერთ შემდეგ კოდს ჩვენს ერთადერთ სატესტო კლასში
პაკეტი ru.habrahabr.test; საჯარო კლასის ტესტი (საჯარო სტატიკური ლოგიკური isChina() (დაბრუნება false;))
3 . ჩვენ ვადგენთ ჩვენს პროექტს და შემდეგ ვიღებთ აწყობილ აპლიკაციას სამუშაო სივრციდან.
4 . აწყობილი აპლიკაცია ჩავსვით საქაღალდეში, სადაც JAR ფაილი გავანადგურეთ.
5 . მიეცით ბრძანება java -Xmx512m -jar baksmali.jar -a -d -o ტესტი -x ტესტი .apk
6 . ჩვენ დავშალეთ ახლად აშენებული აპლიკაცია Dalvik კოდში.
7 . გახსენით ჩვენი test.smali ფაილი და იხილეთ კოდი იქ
.metod public static isChina()Z .რეგისტრირებს 1 .პროლოგი .ხაზი 7 const/4 v0, 0x0 return v0 .end მეთოდი
8 . ესე იგი, პაჩის კოდი მზად არის.
პატჩის გადახვევა
1 . Dalvik კოდი სავსეა მარკერებით, რომლებიც მიუთითებს კოდის ხაზს ორიგინალურ ფაილში. ეს აუცილებელია თქვენს პროგრამაში შეცდომების, ასეთის არსებობის შემთხვევაში, ჩვენებისას. კოდი ასევე კარგად მუშაობს ხაზების მითითების გარეშე.
2 . ჩვენ ვშლით ხაზებს სტრიქონების ნუმერაციით, ვაკოპირებთ და ვცვლით მეთოდს (ქვეპროგრამას) ჩვენს \com\htc\util\contacts\BuildUtils$Customization.javaფაილი.
.metod public static isChina()Z .რეგისტრირებს 1 .პროლოგი const/4 v0, 0x0 return v0 .end მეთოდი
3 . შეინახეთ ფაილი. დიახ, დამავიწყდა მეთქვა, გჭირდებათ ნორმალური რედაქტორი, მაგალითად Notepad++ ან EditPlus. ვის რომელი მოსწონს?
დაპატჩირებული JAR ფაილის შედგენა და აგება
1 . Backsmali-ის გამოყენებით, ჩვენ გავანადგურეთ ჩვენი JAR ფაილი და ახლა ჩვენ უნდა დავაბრუნოთ იგი.
2 . მიეცით ბრძანება java -Xmx512m -jar smali.jar -a 16 HTCExtension -o classes.dex
3 . classes.dex ფაილი გამოჩნდება ჩვენს საქაღალდეში
4 . ისევ გახსნა HTCExtension.jarფაილი არქივირით და შეცვალეთ მასში არსებული კლასები.dexჩვენს ახლად შექმნილს.
5 . ესე იგი, ჩვენი HTCExtension.jarშეიცავს შეცვლილ პროგრამის კოდს.
ორიგინალური ფაილის შეცვლა დაპატჩირებულით
ჩვეულებრივ, ჩვეულებრივი მომხმარებლებისთვის იქმნება სპეციალური სკრიპტები, რომლებიც იცვლება აღდგენის გზით. მაგრამ ჩვენ ეს არ გვაინტერესებს. ჯერ ერთი, ეს გრძელი და დამღლელია და მეორეც, ჩვენ გამოცდილი მომხმარებლები ვართ და შეგვიძლია გარკვეული დახვეწილობის საშუალება.

1 . თქვენ შეგიძლიათ შეცვალოთ მიმდინარე სამუშაო ფაილი შემდეგი ბრძანებებით, თუ უკვე გაქვთ DEODEX firmware და გაქვთ root წვდომა:

Adb push HTCExtension.jar /sdcard/HTCExtension.jar adb shell su mount -o remount -rw /system dd if=/system/framework/HTCExtension.jar of=/system/framework/HTCExtension.jar.back dd if=/sdcard /HTCExtension.jar of=/system/framework/HTCExtension.jar chmod 644 /system/framework/HTCExtension.jar rm /data/dalvik-cache/system@ [ელფოსტა დაცულია]@classes.dex გადატვირთვა

პირველი ბრძანება ატვირთავს შესწორებულ ფაილს ფლეშ დისკზე
მე-2 ბრძანება ხსნის გარსს
მე-3 ბრძანება იძლევა root წვდომას
მე-4 ბრძანება ამონტაჟებს სისტემას წაკითხვის/ჩაწერის რეჟიმში
მე-5 ბრძანება ქმნის ფაილის სარეზერვო ასლს
მე-6 ბრძანება გადაწერს არსებულ ფაილს ახალი შესწორებულით.
მე-7 ბრძანება აკონფიგურირებს ნებართვებს
მე-8 ბრძანება შლის ქეშს
მე-9 ბრძანება გადატვირთავს მოწყობილობას.

2 . გმადლობთ, რომ წაიკითხეთ აქამდე, ცოტა დარჩა.
3 . გადატვირთვის შემდეგ, თქვენი ახალი დაყენებული კოდი ამოქმედდება.
4 . თუ კოდი არ მუშაობს ან მოხდა შეცდომა, მაშინ მარტივი კომბინაციების გამოყენებით შეგიძლიათ დააბრუნოთ სარეზერვო ასლი.
adb shell su mount -o remount -rw /system dd if=/system/framework/HTCExtension.jar.back of=/system/framework/HTCExtension.jar rm /data/dalvik-cache/system@ [ელფოსტა დაცულია]@classes.dex გადატვირთვა

ეპილოგი

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

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

P.S. თუ რამე არ არის ნათელი ან გაუგებარია, დასვით კითხვები - ყოველთვის სიამოვნებით გიპასუხებ და ავხსნი.

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

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

პროგრამული უზრუნველყოფის განახლების ინსტრუქციები

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

  1. მობილური მოწყობილობა ჯერ უნდა დაიტენოს 100%-ით და დაუკავშირდეს WI-FI-ს. სრული დატენვა საშუალებას მოგცემთ სრულად, შეფერხების ან განმეორების გარეშე, შეასრულოთ Android firmware.
  2. გადადით "პარამეტრების" საქაღალდეში და აირჩიეთ ველი "მოწყობილობის ინფორმაცია". ზოგჯერ მენიუში სახელი შეიძლება იყოს განსხვავებული, მაგალითად, "სისტემის შესახებ".
  3. გაააქტიურეთ შესაბამისი ქმედება „სისტემის ავტომატური განახლება“, რათა მომავალში, როდესაც განახლებული ვერსიები გამოჩნდება, თქვენს გაჯეტზე დაინსტალირდება ახალი პროგრამული უზრუნველყოფა.
  4. შეგიძლიათ ხელახლა შეამოწმოთ განახლება ხელით. პარამეტრებში ასეთი ფუნქციის პოვნაში პრობლემები არ უნდა იყოს.
  5. როგორც კი მოწყობილობა აღმოაჩენს განახლებას, მოგეთხოვებათ მისი ინსტალაცია. მის შესასრულებლად არ არის საჭირო კომპიუტერთან დაკავშირება, საკმარისი იქნება გამოიყენოთ WI-FI.
  6. ინსტალაციის შემდეგ, მობილური განყოფილება უნდა გადატვირთოთ, რის შემდეგაც თქვენს განკარგულებაში გექნებათ ახალი firmware ვერსია.

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

საკუთარი firmware-ის შექმნა

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

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

Android Kitchen-ზე თქვენ უნდა აირჩიოთ რისი შეცვლა გსურთ:

  • სტანდარტული ხატები;
  • ბატარეის მაჩვენებელი;
  • ანიმაცია;
  • სტატუსის ველი;
  • შრიფტი;
  • ხმის შეცვლის დიალოგური ფანჯარა;
  • პროგრესის ხაზი და გამყოფები;
  • ეკრანის დაბლოკვა.

ნებისმიერი ფუნქციის არჩევისას, რედაქტორი საშუალებას მოგცემთ დაუყოვნებლივ შეაფასოთ ისინი ცვლილებების წინასწარი დათვალიერებით. შერჩევის გაკეთების შემდეგ, თქვენ უნდა გადახვიდეთ "ფაილის ატვირთვის" ველში, სადაც ნაჩვენებია რამდენიმე პარამეტრი. ისინი შერჩეულია მისაღებით, ამიტომ არ არის რეკომენდებული მათი ზედმეტად შეცვლა. ჩანართში „აირჩიეთ თქვენი ROM სამზარეულოს სიიდან ან ატვირთეთ თქვენი საკუთარი ფაილები“ ​​დააწკაპუნეთ „სამზარეულოს სიაზე“, სადაც შეგიძლიათ აირჩიოთ გამოყენებული firmware ზოგადი სიიდან. აქ განსაკუთრებით ფრთხილად უნდა იყოთ, რადგან არსებობს გარკვეული რისკი პროგრამული უზრუნველყოფის არასწორი ვერსიის არჩევისას. მინიმუმამდე, პატჩი ვერ გამოიყენებს, მაქსიმუმ კი სისტემა შეწყვეტს ჩატვირთვას და შეცდომის გამოსასწორებლად მოგიწევთ მოწყობილობის სრული ციმციმის გაკეთება.

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

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

თუ გსურთ სცადოთ თქვენი ძალა Android-ზე firmware-ის შექმნასა და რედაქტირებაში, მაშინ Samsung Root Firmware Replacer პროგრამა დაგეხმარებათ შექმნათ firmware!

მოკლედ Samsung Root Firmware Replacer პროგრამისა და მისი შესაძლებლობების შესახებ

ამ პროგრამით თქვენ შეძლებთ:

  • ამოალაგე Samsung firmware
  • ჩაიცვით firmware
  • ავტომატურ რეჟიმში, ჩადეთ Root უფლებები
  • ავტომატურად შეავსეთ firmware თქვენი ფაილებით
  • გაყინეთ პროექტი და შემდეგ განაგრძეთ მუშაობა
  • ჩაალაგე firmware

Samsung Root Firmware Replacer-ის საჭირო კომპონენტები და ოპერაციული პირობები

ფუნქციების მიმოხილვა და აღწერა Samsung Root Firmware Replacer პროგრამის დაწყება

1. გადადით საქაღალდეში Samsung Root Firmware Replacer პროგრამით, დააწკაპუნეთ მარჯვენა ღილაკით გასახსნელად ტერმინალში

2. ტერმინალში შეიყვანეთ ბრძანება

3. პროგრამის ინტერფეისი გაიხსნება თქვენს წინაშე

4. თუ პროგრამა პირველად გაუშვით, მაშინ შეასრულეთ - პარამეტრების კონფიგურაცია

მუშაობა Samsung Root Firmware Replacer-თან

პარაგრაფი ამოალაგეთ firmware *.tar.md5- ხსნის firmware-ს, ამისათვის გადაიტანეთ ფაილი საქაღალდეში unpack_tar_md5, რის შემდეგაც მოხდება ყველა ფაილის ამოღება და factoryfs ან სისტემის ფაილი გადავა input_img-ში

აბზაცი *.img-ის შექმნა თქვენი Android-დან (საჭიროა Android)- საშუალებას გაძლევთ შექმნათ firmware თქვენი ამჟამინდელი Android მდგომარეობიდან. იმისათვის, რომ ამ ელემენტმა იმუშაოს, თქვენ უნდა გქონდეთ Android დაკავშირებული თქვენს კომპიუტერთან USB გამართვის ჩართვის.

ამ პუნქტს აქვს ქვემენიუ

პარაგრაფი *.img-ის შექმნა ორიგინალური firmware-დანსაშუალებას გაძლევთ შეცვალოთ მზა პროგრამული უზრუნველყოფა, გადაიტანოთ ნებისმიერი IMG ფაილი input_img საქაღალდეში.

ამ პუნქტს ასევე აქვს საკუთარი ქვემენიუ

Samsung Root Firmware Replacer პროგრამის გამოყენების მაგალითი

ამ მაგალითში, firmware შექმნილია Android-ის ამჟამინდელი მდგომარეობიდან

1. შეაერთეთ Android კომპიუტერთან

2. გაუშვით პროგრამა

3. აირჩიეთ შექმნა *.img თქვენი Android-დან (საჭიროა Android)

4. აირჩიეთ Remove image from Android და unpack img

5. დანაყოფის შერჩევა, საიდანაც გამოსახულება წაიშლება

6. დაელოდეთ 6-7 წუთი სურათის ამოღებას და კომპიუტერში გადატანას.

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

7. სურათის წაშლის შემდეგ, შეგიძლიათ შეცვალოთ იგი, საჭიროების შემთხვევაში (ჩასვათ Root), შეგიძლიათ უკან შეფუთოთ, ამისთვის

8. img-ში აირჩიეთ Package project

9. მიუთითეთ პროგრამული უზრუნველყოფის ზომა და სახელი.

  • მიუთითეთ დანაყოფის ზომა ამ გზით: გაყავით ბლოკის ზომა 1024-ზე და შედეგს დაამატეთ ასო M.

  • სახელი უნდა შეესაბამებოდეს სახელს, რომლის შეცვლაც გამოიყენეთ

11. ასევე, არ დაგავიწყდეთ თქვენი ანდროიდიდან ბირთვის კოპირება, ამისათვის გამოიყენეთ ელემენტი - ამოიღეთ სურათი Android-დან - boot.img ან zImage

12. ყველა მანიპულაციის შემდეგ, თქვენ უნდა ააწყოთ firmware TAR.MD5-ში

13 მთავარ მენიუში აირჩიეთ Pack firmware *.tar.md5

14 Samsung Root Firmware Replacer პროგრამაში firmware მზად არის, შეგიძლიათ



გაქვთ შეკითხვები?

შეატყობინეთ შეცდომას

ტექსტი, რომელიც გაეგზავნება ჩვენს რედაქტორებს: