Zaštitite podatke modifikacijom sistemske particije čvrstog diska. Šta je Magisk ili kako sakriti root u Androidu

Šta je rezervisana particija ili zašto Windows sakriva deo diska?

Kada prvi put instalirate Windows 7, Windows 8 itd. na prazan ili formatiran disk (a u prethodnim verzijama sistema nije bilo takvog volumena), prva stvar koju Windows radi je da kreira određenu particiju na samom početku čvrstog diska. Zove se sistemska rezervisana particija (sistemska rezervisana particija ili sistemska particija). Particiju sistem aktivno koristi za instalaciju i učitavanje glavnog tijela prozora - ono što vidimo kao sam operativni sistem.

Kada otvorite fasciklu Moj računar ili samo računar, nećete videti sistemsku particiju. Nije mu dodeljena nikakva oznaka i nije dostupan u Windows Exploreru. Da biste ga vidjeli, morate otvoriti konzolu za upravljanje računarom (komanda u traci za pretraživanje diskmgmt.msc) u odjeljku Upravljanje diskovima:

Zašto vam je potrebna rezervisana particija?

Ova sistemska particija sadrži podatke o pokretanju, kod upravitelja pokretanja (program koji vam omogućava da odaberete aktivnu particiju diska sa koje će se Windows pokretati). Postojaće i Windows okruženje za oporavak kao rezultat kvara sistema. Ako koristite ugrađenu BitLocker funkciju šifriranja u Windows-u, podaci o pokretanju funkcije BitLocker Drive Encryption također će se nalaziti tamo.

Za svaku verziju sistema, veličina diska je također već spremna. 100 MB u Windows 7, 350 MB u Windows 8/8.1 i konačno 500 MB u Windows 10. I, usput rečeno, ponekad ovaj prostor nije dovoljan, a korisnik dobije poruku o grešci nakon sljedeće serije ažuriranja.

Kako pogledati u rezervirani dio?

Ako želite da pogledate sadržaj ovog odjeljka, jednostavno mu dajte ime. Kao i uvijek, u obliku latiničnog slova. Nakon što se nova particija pojavi u Windows Exploreru, aktivirajte prikaz skrivenih foldera i datoteka, kao i sistemskih datoteka. Da vas podsjetim, to se radi preko Control Panela u stavci Folder Options.

Ako to ne možete učiniti pomoću Windows konzole, ali datoteke kao što su , BOOTSECT.bak i folderi Boot, Recovery, kao i System Volume Information, $RECYCLE BIN postanu vidljivi bez ovakvih manipulacija, niste prvi koji će raditi sa vaš čvrsti disk. Bez diska Rezervisano po sistemušifriranje diska jednostavno će biti nemoguće održavati. A budući da je ransomware spreman za rad u svim najnovijim verzijama Windowsa, ovaj odjeljak će se također uvijek pojaviti.

Nema više sistemske particije...

Da li je moguće izbrisati rezerviranu particiju?

Nemam pojma zašto bi ti ovo moglo zatrebati. Toplo preporučujem da to ne radite kada Windows radi.. Da iz bilo kog razloga. U suprotnom, gotovo je sigurno da ćete naići na grešku učitavanja. Štaviše, kada pokušate naknadno da popravite učitavanje Windowsa kada odbije da se pokrene (ako se to dogodi, naravno), sistem će vam prirodno pokazati problem u obliku stavke koja nedostaje Rješavanje problema na vašem računaru. I moraćete da koristite Windows.

Ne postoji način da ga se riješite?

Razmotrite ponovo - ovaj odjeljak je vrlo koristan i može vam dobro doći. Međutim, ako mislite da vam on samo smeta, razmislite o ovome.

  • Prije instaliranja Windowsa

Ovdje je sve jednostavno. Ako ne želite da vidite ovaj odjeljak u budućnosti, koristite ugrađeni uslužni program Diskpart. Uključen je u Windows instalacioni disk.

  • Tokom instalacije sistema, pritisnite Shift + F10, pozivajući cmd konzolu
  • lansirati diskpart i provjerite broj fizičkih diskova pomoću naredbe list disk(numeracija počinje od 0)
  • komandom izaberite onaj koji vam je potreban odaberite disk 0
  • i kreirajte volumen spreman za korištenje s naredbom kreirajte primarnu particiju

Nastavljamo s instaliranjem Windowsa koji pokazuje na ovaj disk (Windows neće kreirati rezerviranu particiju)

  • Odjeljak je već prisutan

Ne možete ga izbrisati jednostavnim klikom miša - sistem nije sam sebi neprijatelj. I, prije nego što se volumen izbriše, sve datoteke pohranjene tamo moraju biti premještene na drugu lokaciju. Samo što zvuči tako jednostavno: ove manipulacije uključuju uređivanje registra, kopiranje datoteka između volumena i promjenu BCD memorije pokretačkog programa. U verzijama iz Windows 8 također ćete morati uključiti okruženje za oporavak. Ako želite, mogu vam opisati nekoliko tehnika, ali to jednostavno ne preporučujem. Štaviše, naišao sam na neke programe koji su uvjeravali da će uz njihovu pomoć prijenos podataka sa sigurnosnog diska (a zatim njihovo brisanje) ići glatko. Nažalost, u stvarnosti je bilo više problema nego što su pomenuli. Ostavite kako jeste.

Pročitano: 20

Meni Uredi(Edit) programa Regedt32 sadrži komande koje vam omogućavaju da dodajete, menjate i brišete sekcije i značajne elemente registratora.

Da biste dodali novi odjeljak u bilo koju košnicu registra, odaberite naredbu Dodaj odjeljak(Dodaj ključ) meni Uredi. Kada pokrenete ovu naredbu, od vas se traži da unesete naziv odjeljka i klasu (klasa se u ovom slučaju odnosi na tip podataka). Okvir za dijalog za unos ovih informacija prikazan je na sl. 14.5. Ne postoji lista sa koje možete izabrati tip podataka u ovom dijalog box-u, ali vam se daje mogućnost da kreirate sekciju i odredite tip podataka kada unesete novi parametar kao deo kreiranog odeljka.

Tim Dodaj odjeljak koristi se za dodavanje značajnih elemenata ključevima registratora. Dijaloški okvir koji se otvara prilikom izvršavanja ove naredbe (slika 14.6) sadrži listu koja vam omogućava da odaberete tip podataka za značajan element: vrijednosti niza (REG_SZ, REG_MULTI_SZ i REG_EXPAND_SZ) ili binarne vrijednosti (REG_DWORD ili REG_BINARY ).

Da biste uklonili odjeljak ili značajan element iz registra, odaberite objekt (odjeljak ili značajan element) koji je namijenjen za brisanje i odaberite naredbu Izbriši(Izbriši) meni Uredi. Od vas će se tražiti da potvrdite svoju namjeru da izbrišete odabrani odjeljak ili značajnu stavku.

Bilješka

Kao što je ponovljeno mnogo puta, uređivači registra ne podržavaju operacije Poništavanje, tako da nakon potvrde operacije brisanja nećete imati drugi način da vratite izbrisane informacije osim da ih vratite iz prethodno kreirane sigurnosne kopije. Osim toga, Registry Editor traži od vas da potvrdite operaciju brisanja samo ako je opcija Potvrdi prilikom brisanja odabrana u izborniku Opcije. Stoga, kada se odlučite za brisanje ključeva iz registra, nemojte zanemariti backup (i nemojte tražiti nepotrebne zadatke za sebe s već postojećim rješenjem).

Ako slučajno izbrišete nešto iz ključa registratora HKEY_LOCAL_MACHINE\System\CurrentControlSet, zapamtite da možete vratiti sadržaj ovog ključa koristeći posljednju uspješno učitanu konfiguraciju (pogledajte poglavlja 2 i 8). Da biste izvršili ovu operaciju, ponovo pokrenite računar i odmah nakon što se pojavi meni pokretača, pritisnite taster , a zatim izaberite opciju Last Known Good iz menija za otklanjanje grešaka.

Pored naredbi za brisanje elemenata registra i dodavanje novih sekcija i parametara u njegov sastav, u meniju Uredi Regedt32 editor ima skup komandi za uređivanje postojećih unosa u registratoru (i treba napomenuti da je ovaj skup opcija mnogo širi od onih koje nudi noviji program Regedit). Meni Uredi Regedt32 uređivač registra sadrži komande Binarni podaci(binarni) Linija(String), Dvostruka riječ(DWORD) i Višelinijski(Multi String). Odabirom svake naredbe pokreće se uređivač vrijednosti odgovarajućeg tipa - na primjer, select komanduje binarni podaci pokreće binarni uređivač - Binarni uređivač, izaberite komandu Dvostruka riječ- Editor vrijednosti DWORD i izbor naredbi Linija i višelinijska poziva odgovarajuće urednike za nizove i višelinijske vrijednosti. Imajte na umu da takve opsežne mogućnosti jednostavno nisu dostupne u uređivaču Regedit.

U prostranstvu Runeta teško je pronaći konstruktivne i dobro predstavljene informacije o dizajnu Android operativnog sistema. Informacije su uglavnom fragmentirane i nepotpune, nema uvodnog dijela sa osnovnim pojmovima, što početnicima otežava percepciju i razumijevanje. Bez osnovnog znanja o uređaju i operativnom algoritmu Android operativnog sistema, nemoguće je otkloniti greške ili prilagoditi firmver ili razviti za Android OS. To me je potaknulo da napišem ovaj članak u kojem ću pokušati običnim i razumljivim jezikom prenijeti “složene” stvari.

Materijal je prvenstveno namijenjen proučavanju običnih korisnika i predstavljen je kao uvodni izlet u svijet Android operativnih sistema. Stoga će ovdje biti predstavljene sažete i površne informacije bez tehničkih dubina i nijansi. Ovaj materijal će biti koristan svima koji se bave flešovanjem i prilagođavanjem firmvera, razvojem za Android OS, popravkom mobilnih računarskih sistema i prosečnom korisniku za bolje razumevanje principa rada i mogućnosti svog Androida.

Android interne memorijske particije

Interna memorija Android uređaja podijeljena je na nekoliko logičkih diskova (particija). Evo klasičnog rasporeda memorije:

Bootloader- ovdje je program (bootloader) koji vam omogućava da pokrenete operativni sistem Android, oporavak i druge servisne modove.

Oporavak- kao što naziv implicira, ovdje je instaliran inženjerski meni za oporavak ili jednostavno Recovery.

Boot- srce Android OS-a, ovdje je kernel, drajveri i postavke za upravljanje procesorom i memorijom.

Sistem- sistemska particija, koja sadrži sve datoteke potrebne za rad Android OS-a, ovo je kao Windows folder na vašem C:\ disku (u daljem tekstu ćemo ga povezati sa Windows OS-om)

Podaci- odjeljak za instaliranje aplikacija i pohranjivanje njihovih podataka. (Programske datoteke)

Korisnik- ovo je dobro poznata sdcard ili, jednostavnije rečeno, mjesto za korisničke datoteke (Moji dokumenti). Ovdje smo prinuđeni da napravimo digresiju, jer postavljanje ove sekcije ima nekoliko opcija:

  • Particija se ne nalazi u internoj memoriji, već se koristi eksterni disk - najpopularnija opcija. (Sl.1)
  • Na uređajima s velikom ugrađenom memorijom, ovaj odjeljak se vidi kao sdcard, a eksterna memorijska kartica se vidi kao sdcard2 ili extsd (mogu postojati i druge opcije naziva). Obično se nalazi na uređajima koji koriste Android 3.2. (Sl.2 Opcija 1)
  • Ova opcija je zamijenila prethodnu verziju, zajedno sa Androidom 4.0. Odjeljak Korisnik zamijenjen je medijskim folderom u dijelu Podaci, što nam je omogućilo da koristimo svu memoriju koja je dostupna korisniku za instaliranje programa i pohranjivanje podataka, a ne količinu koju nam je dodijelio proizvođač. Drugim riječima, sdcard i podaci su jedno. (Sl.2 Opcija 2)

Sada kada znamo šta je gdje, hajde da shvatimo zašto je tu i kako nam ove informacije mogu biti korisne.

Počnimo sa Bootloaderom. Ovo je bootloader koji pokreće Android, oporavak itd. Kada pritisnemo tipku za uključivanje, pokreće se bootloader i, ako nema dodatnih naredbi (pritisnutih tipki), počinje učitavati boot. Ako je pritisnuta kombinacija tastera (svaki uređaj ima svoju), onda se pokreće, u zavisnosti od komande, oporavka, brzog pokretanja ili apx-a. Slika ispod jasno pokazuje šta Bootloader pokreće i kako su sekcije međusobno povezane.

Kao što se vidi sa slike 3, particija za oporavak ne utiče na učitavanje Android OS-a, ali zašto je onda potrebna? Pokušajmo to shvatiti.

Recovery je u suštini mali uslužni program baziran na Linux kernelu i učitava se nezavisno od Androida. Njegova standardna funkcionalnost nije bogata: možete resetirati uređaj na tvorničke postavke ili ažurirati firmver (preuzeto na SD karticu). Ali, zahvaljujući narodnim zanatlijama, imamo modificirani oporavak, putem kojeg možete instalirati modificirani (prilagođeni) firmware, konfigurirati Android, kreirati sigurnosne kopije i još mnogo toga. Prisustvo ili odsustvo oporavka, kao i njegova verzija, ne utiču na performanse Android OS-a (vrlo često pitanje na forumima).

Posebno pažljivi čitaoci su možda primijetili određeni Fastboot na slici 3. Ovo je interfejs za direktan rad sa internim memorijskim particijama pomoću komandne linije. Preko njega možete flešovati oporavak, kernel ili novu verziju firmvera, ili formatirati (obrisati sve informacije) jednu ili drugu particiju.

Pošto govorimo o interfejsima, želim da pričam o još jednom prilično poznatom - adb (android debugbridge). Ovo je takozvani mod za otklanjanje grešaka, a nazvan je tako s razlogom - preko njega možete pratiti rad kako sistema u cjelini, tako i pojedinačnih aplikacija. Ali to nije sve, sa adb-om možete dobiti potpuni pristup sistemu datoteka uređaja i promijeniti sistemske datoteke, ili preuzeti važne informacije kada se vaš uređaj zaglavi u učitavanju. Neću opisivati ​​sve funkcije načina za otklanjanje grešaka jer... moj cilj je da prenesem opšte informacije, a ne detaljan pregled funkcija određenog režima.

Pošto smo shvatili teoriju, hajde da pokrenemo Android OS.

Pritisnemo dugme za napajanje - pokreće se Bootloader, koji učitava kernel (boot), koji zauzvrat pokreće sistem (sistem), pa, i već učitava programe (podatke) i korisnički prostor (korisnik). (Sl.3)

Sada idemo u korijenski direktorij i pogledamo unutrašnjost samog Android OS-a:

U ovom dijagramu dali smo samo direktorije potrebne za referencu. Zapravo, ima ih mnogo više, a pregled samo jednog sistemskog foldera zahtijevao bi cijeli članak.

I tako, folder sa podacima. Kao što ime govori, to ima neke veze sa podacima, ali kakve? Da, kod skoro svih, ovo uključuje sinhronizaciju i podatke o nalogu, lozinke za wifi pristupne tačke i postavke VPN-a i tako dalje. Između ostalog, ovdje možete pronaći foldere za aplikacije, podatke i dalvik-cache - pogledajmo njihovu svrhu:

  • aplikacija - ovdje se instaliraju programi i igre.
  • podaci - ovdje se pohranjuju podaci o aplikaciji, njihova podešavanja, spremanja igara i druge informacije.
  • dalvik-cache je softversko područje keširanja za Dalvik program. Dalvik je Java virtuelna mašina, koja je osnova za pokretanje programa koji imaju ekstenziju *.apk.
  • Da bi se programi pokrenuli brže, kreira se njihova keš memorija.

Sistemski folder čuva sistemske podatke i sve što je potrebno za rad OS-a. Pogledajmo neke od ovih foldera:

  • aplikacija - ovdje su sistemske aplikacije (SMS, telefon, kalendar, postavke itd.), kao i aplikacije koje je instalirao proizvođač uređaja (brendirani widgeti, žive pozadine itd.).
  • fontovi - sistemski fontovi
  • medij - sadrži standardne melodije zvona, obavijesti, alarme i zvukove interfejsa, kao i animaciju pokretanja (bootanimation)
  • build.prop - Ovaj fajl je skoro prvi koji se spominje u razgovorima i člancima o finom podešavanju sistema. Sadrži ogroman broj postavki, kao što su gustina ekrana, vrijeme kašnjenja senzora blizine, wifi kontrola, naziv uređaja i proizvođač i mnoge druge parametre.

Root prava superkorisnika u Android OS-u

Kao iu svakom sistemu sličnom Linuxu, u Android operativnom sistemu, pristup sistemskim datotekama i direktorijumima je omogućen s pravima Root superkorisnika. U ovom odeljku odlučili smo da razmotrimo princip rada superkorisničkih prava u Android OS-u, mogućnost uređivanja sistemskih datoteka ili logičkih particija prostora datoteka ako imate Root prava superkorisnika.

— Dobro je znati šta se nalazi u kojoj fascikli, ali da li je moguće nešto učiniti po tom pitanju?

- Da! Ali potrebna su vam prava superkorisnika (root) ili, ako povučemo analogiju sa Windowsom, administratorska prava. U početku svi Android uređaji dolaze bez root prava za krajnjeg korisnika, tj. Kada kupujemo uređaj, mi nismo punopravni vlasnici istog. To se radi i radi zaštite od zlonamjernog softvera i od samog korisnika - uostalom, u nevještim rukama, potpuni pristup sistemu može dovesti do "smrti" operativnog sistema i naknadne potrebe za flešovanjem uređaja.

„Pa, ​​čemu služi ovakva opasna stvar?“- pitate.

Sada ćemo vam reći:

  • Mogućnost pravljenja rezervne kopije podataka i vraćanja nakon flešovanja ili slučajnog brisanja.
  • Fino podešavanje sistema ručno ili pomoću posebnih programa.
  • Uklanjanje sistemskih aplikacija, melodija zvona, pozadina itd.
  • Promjena izgleda OS-a (na primjer, prikaz napunjenosti baterije u postocima)
  • Dodavanje funkcionalnosti (podrška za ad-hoc mreže, na primjer)

Ova lista se može nastaviti još dugo, ali mislim da će ovi primjeri biti dovoljni da dobijete predstavu o mogućnostima i širini primjene root privilegija.

- Ovo je sve super, ali sada će bilo koji program moći pristupiti „srcu“ operativnog sistema i mojim podacima?

- Ne. Vi odlučujete hoćete li dozvoliti ovoj ili onoj aplikaciji da dobije root pristup ili ne. Za to postoji program koji se zove Superuser ili njegova napredna sestra SuperSU. Bez ovog ili sličnog programa nije moguće koristiti root.

Kao što vidite, Android nije tako težak operativni sistem za korisnika da ga razume. Ako imate prethodno iskustvo sa operativnim sistemima sličnim Linuxu, naći ćete mnoge sličnosti sa Android sistemima, a te sličnosti su opravdane. Android sistem je izveden i izgrađen na Linux kernelu. Nadam se da ste nakon čitanja članka naučili nešto novo ili dobili odgovor na pitanje koje vas već duže vrijeme zanima.

Zdravo Habr!

Prije nekoliko godina, kada sam prvi put upoznao Android, čuo sam od kolege s posla da Android pruža mogućnost instaliranja modificiranog ili domaćeg firmvera. Iskreno, tada sam bio daleko od toga. A i prije pola godine jedva da su me takve stvari zanimale. Duboko u srcu, bio sam siguran da je ono što proizvođač radi već namijenjeno normalnoj upotrebi.

Zamislite moje razočarenje kada sam kupio telefon iz Kine, gdje su fabrička podešavanja zabranjivala korištenje Google, Skypea, Facebooka i drugih aplikacija. U principu, na neke stvari je bilo moguće zažmiriti, ali kada moj telefon nije zahtijevao korištenje Google naloga, obećao sam da ću to definitivno shvatiti bez obzira šta mi se dogodilo.

Prošlo je pola godine i moj custom firmware se uspješno koristi u cijelom svijetu.

Ova serija članaka će raspravljati o tome kako napraviti obrnuto programiranje za Android, implementirati zakrpe, podešavanja i modove.

Preambula

Dakle! Hajde da prvo definišemo koncepte koji će se koristiti datočlanak. Vaše uobičajeno razumijevanje, međutim, može biti veoma različito.

Patch- promjena ili zamjena postojećeg programskog koda u cilju modifikacije programskog algoritma.
Maud- po pravilu dodavanje dodatne funkcionalnosti postojećem programskom kodu bez promjene algoritma.
Podesite- poboljšanje funkcionalnosti programa u cilju lakšeg pristupa sistemskim parametrima.

Takođe želim da napomenem da će svi primeri biti uzeti za HTC telefon, ali to ne znači da se ove informacije ne mogu koristiti na drugim telefonima.

Priprema okoline

Mogu bez detaljnih uputstava kako koristiti ovaj ili onaj softver. Ako ste zainteresirani za ovaj članak i pročitali ste do sada, nadam se da ste već iskusan korisnik i da imate iskustva u korištenju, ili barem eksperimentiranju u ovoj oblasti. Mnogo je uputstava, članaka i rezultata testova u javnom domenu, baš kao i na Habréu. Neću i bez opisivanja nekih pojmova, inače će članak ispasti jako dug i zamoran. Pisaćemo samo do tačke. Siguran sam da ste u srijedu već dugo vremena. Ako ne, onda predlažem da ga preuzmete i instalirate.

1 . Android SDK. Ovo je okruženje za razvoj aplikacija za Android. Da bismo izvršili izmjene, svakako ćemo morati provjeriti naš programski kod. Razvojno okruženje je najbolje što možemo koristiti.
2 . Android kuhinja. Ovaj uslužni program će vam omogućiti da radite sa slikama sistemskih particija službenog ili nezvaničnog firmvera.
3 . JD-GUI. Dekompajler Java koda. Želio bih odmah napomenuti da je ovo najbolji dekompajler u smislu jednostavnosti korištenja.
4 . DJ Java Decompiler. Još jedan dekompajler, ili disassembler, kako ga neki vole zvati, programskog koda jezika Java. Nije zgodno za korištenje, ali analizira kod koji JD-GUI ponekad ne razumije.
5 . smali. Još jedan disassembler, ali ovaj put dalvik kod. smali je potreban za rastavljanje, a backsmali je potreban za sastavljanje koda.
6 . dex2jar. Uslužni program za pretvaranje izvršnih datoteka Dalvik koda.

Konverzija firmvera

Naravno, firmver koji imate na telefonu od proizvođača je optimizovan za smanjenje potrošnje energije. Da bi se firmver mogao modificirati, mora se konvertirati u format koji omogućava izmjenu koda. Za to se koristi Android kuhinja. Naravno, možete to da uradite i svojim rukama, kao što sam ja radio ranije dok nisam našao baš ovu „kuhinju“. Možete pročitati na internetu kako ukloniti sistemsku oblast sa telefona, instalirati okruženje i napraviti DEODEX firmver. Ako već ništa ne razumijete, mislim da je vrijedno odgoditi čitanje ovog članka dok ne steknete dovoljno iskustva.

Nakon što se firmver promeni sa optimizovane verzije (ODEX - optimizovan dalvik izvršni kod, ako me pamćenje ne vara) u DEODEX (tj. NIJE optimizovan), sve izvršne datoteke su spremne za modifikaciju.

Direktne modifikacije

Kreiranje zakrpa
Kao što sam već rekao, mom telefonu je prvobitno zabranjeno korištenje Google-a. Pa, bez obzira na sve, ne možete ići u Playstore, ne možete postaviti nalog, telefonski imenik se baš ne sinhronizuje. Zašto vam treba takav Android? Nakon dugog kopanja po logcatu samog uređaja, pronašao sam unose koji govore da je upotreba Google-a zabranjena. Najnezgodnija stvar kod Androida je da vidite dnevnik, ali ne znate koja sistemska aplikacija ga proizvodi. Da bih otkrio odakle dolaze moje noge, morao sam sve sistemske aplikacije izbaciti u rastavljeni Java kod. Trebalo mi je dosta vremena, ali i dalje koristim posao koji sam obavio kada sam analizirao i pronašao pravi kod. Koraci za dobijanje takvih alata su sljedeći:
1 . Napravite DEODEX svih firmvera
2 . Vaš novi DEODEX firmver će se morati sastaviti i postaviti na vaš telefon. Kako se to radi, tema je drugog članka.
3 . Iz svake datoteke koja se nalazi u /system/framework, izvucite datoteku classes.dex i konvertujte je u JAR koristeći dex2jar.
4 . Otvorite svaki rezultirajući JAR u JD-GUI i ponovo ga sačuvajte u izvornom kodu
5 . Raspakujte izvorni kod iz arhive.

Na kraju sam dobio onoliko foldera koliko je bilo JAR fajlova u /system/framework, a svaki folder je imao strukturu Java izvornog koda.
Kroz jednostavne manipulacije, brzo sam pronašao mjesto koje generiše unose u logcat.

Nećemo razmatrati cjelokupnu logiku zabrane, jer je svaki slučaj zasebna priča. Morao sam provesti nekoliko sati prije nego što sam otkrio gdje su izvršene provjere, napravio blok dijagram algoritma u svojoj glavi i shvatio kuda da idem da malo “pokvarim” algoritam.

Ispostavilo se da je to jednostavno. Postoji potprogram koji na osnovu unapred postavljenih konstanti, kada se kontaktira, odgovara da li telefon pripada Kini ili ne.

Kôd je bio u fajlu HTCExtension.jar, a klasa koja je sadržavala ovaj potprogram je bila u

Raspakivanje i analiza originalnog fajla
1 . Prvo, trebamo uzeti originalni DEODEX JAR fajl, koji je odgovoran za dio koda koji nam je potreban. U našem slučaju HTCExtension.jar.
2 . Otvorite bilo kojim arhivatorom i izvucite classes.dex odatle
3 . Koristite dex2jar pretvarač da ga konvertujete u JAR datoteku. Naredba: dex2jar.bat classes.dex
4 . Otvorite rezultirajuću datoteku classes_dex2jar.jar u JD-GUI.
5 . Da, najčešće JD-GUI dekompilira kod ne onako kako izgleda u originalu, to je razumljivo, ali je prilično čitljivo. U izvornom kodu vidimo da potprogram provjerava parametre projekta i oznaku jezika firmvera. U našem nesretnom slučaju, vraća se TRUE.
public static boolean isChina() ( if ((HtcBuildFlag.Htc_PROJECT_flag == 216) || (HtcBuildFlag.Htc_PROJECT_flag == 218) || (HtcBuildFlag.Htc_PROJECT_flag) while). == 1) && (2 == HtcBuildFlag.Htc_LANGUAGE_flag)) || (HtcBuildFlag.Htc_PROJECT_flag == 27)) vrati true; vrati false; )
6 . Da bismo napravili zakrpu, moramo rastaviti sam Dalvik kod. Za to koristimo baksmali. Najprikladniji način je da napravite zasebnu mapu i u nju stavite tri datoteke zajedno: HTCExtension.jar, smali.jar I baksmali.jar. Dajte naredbu java -Xmx512m -jar baksmali.jar -a -d -o HTCExtension -x HTCExtension.jar

Ovo je API za vašu verziju Androida. Za JB je 16
- folder u kojem se nalaze svi okviri firmvera.

U mom slučaju to je bila komanda
java -Xmx512m -jar baksmali.jar -a 16 -d S:\dev\Android\Android-Kitchen\WORKING_JB_15\system\framework -o HTCExtension -x HTCExtension.jar
7 . U našem novostvorenom folderu pojavio se folder HTCExtension, a u njemu i naši fajlovi sa Dalvik kodom.
8 . Pronalaženje datoteke duž putanje \com\htc\util\contacts\BuildUtils$Customization.java i pogledaj kod:
.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 v2 const/16 v16 , 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/htcjavaflag/htcjavaclag/htcavacg/htcflag ;->Htc_PROJECT_flag:S const/16 v2, 0x17 if-ne v1, v2, :cond_14 .line 297:cond_13:goto_13 return v0 .line 283:cond_14 sget-short v1, Lcom/htcavatcflag/htcavatcfg> Htc_PROJECT_flag:S if-ne v1, v0, :cond_1d .line 285 const/4 v1, 0x2 sget-short v2, Lcom/htc/htcjavaflag/HtcBuildFlag;->Htc_LANGUAGE_flag:S v.1, v1, v.1 291:cond_1d sget-short v1, Lcom/htc/htcjavaflag/HtcBuildFlag;->Htc_PROJECT_flag:S const/16 v2, 0x1b if-eq v1, v2, :cond_13 .line 297 v1:3ogo_end/ metoda
9 . Strašno, zar ne? Ništa nije jasno. Ali ovo je problem koji se može popraviti. Nakon što ste kreirali nekoliko vlastitih zakrpa i tako stekli iskustvo, možete lako modificirati kod bez alata treće strane. U našem slučaju, u ovom kodu
.prologue const/4 v0, 0x1 dodjeljuje varijablu v0 vrijednost 1, odnosno TRUE. Zatim postoje razne vrste provjera, a ako telefon nije kineski, tada se mijenja vrijednost varijable:
.line 297 const/4 v0, 0x0 goto:goto_13
10 . Najlakši način da spasite oca ruske demokratije je da promijenite kod u sljedeći:
.prologue const/4 v0, 0x0 , odnosno promijenite vrijednost varijable sa 1 na 0. To jest, bez obzira na sve, vrijednost FALSE bi uvijek bila vraćena i u JD-GUI-u bi kod izgledao kao javni statički boolean isChina() ( if (( HtcBuildFlag.Htc_PROJECT_flag == 216) || (HtcBuildFlag.Htc_PROJECT_flag == 218) || (HtcBuildFlag.Htc_PROJECT_flag == (lag.PROJECT_flag == 23flag_H) 1) && ( 2 == HtcBuildFlag.Htc _LANGUAGE_flag)) || (HtcBuildFlag.Htc_PROJECT_flag == 27)) vrati false; vrati false; )
11 . Da, metoda će raditi. Ali ne tražimo lake puteve - ovaj put. Drugo, nije baš lepo. Htio bih kodirati nešto slično
public static boolean isChina() (vrati false;)
12 . Kako možemo dobiti Dalvik kod za ovaj izvorni kod? Za početnike ćemo napraviti mali trik.

Kreiranje Dalvik koda
1 . Otvorite Android SDK.
2 . Kreiramo novi projekat i pišemo sljedeći kod u našoj jedinoj testnoj klasi
paket ru.habrahabr.test; test javne klase (javni statički boolean isChina() (vrati false;)
3 . Sastavljamo naš projekat, a zatim preuzimamo sastavljenu aplikaciju iz radnog prostora.
4 . Stavili smo sastavljenu aplikaciju u fasciklu u koju smo izbacili JAR fajl.
5 . Dajte naredbu java -Xmx512m -jar baksmali.jar -a -d -o test -x test .apk
6 . Novoizgrađenu aplikaciju smo rastavili u Dalvik kod.
7 . Otvorite naš test.smali fajl i tamo vidite kod
.method public static isChina()Z .registers 1 .prologue .line 7 const/4 v0, 0x0 return v0 .end method
8 . To je to, kod za zakrpe je spreman.
Rolling a patch
1 . Dalvik kod je prepun markera koji označavaju red koda u originalnom izvornom fajlu. Ovo je neophodno prilikom prikazivanja grešaka, ako ih ima, u vašem programu. Kod također radi dobro bez specificiranja linija.
2 . Brišemo redove sa numerisanim redovima, kopiramo i zamjenjujemo metodu (potprogram) u našem \com\htc\util\contacts\BuildUtils$Customization.java fajl.
.method public static isChina()Z .registri 1 .prologue const/4 v0, 0x0 return v0 .end metoda
3 . Sačuvajte fajl. Da, zaboravio sam reći, potreban vam je normalan uređivač, na primjer Notepad++ ili EditPlus. Ko voli koji?
Kompajliranje i izrada zakrpljene JAR datoteke
1 . Koristeći backsmali, uništili smo naš JAR fajl i sada ga moramo ponovo sastaviti.
2 . Dajte naredbu java -Xmx512m -jar smali.jar -a 16 HTCExtension -o classes.dex
3 . Datoteka classes.dex se pojavljuje u našoj fascikli
4 . Opet se otvara HTCExtension.jar datoteku sa arhivatorom i zamijenite postojeću u njoj classes.dex na našu upravo stvorenu.
5 . To je to, naše HTCExtension.jar sadrži modificirani programski kod.
Zamjena originalne datoteke zakrpanom
Obično se kreiraju posebne skripte za obične korisnike, koje se zamjenjuju putem oporavka. Ali nas ovo ne zanima. Prvo, dugo je i zamorno, a drugo, mi smo iskusni korisnici i možemo sebi priuštiti neke suptilnosti.

1 . Možete zamijeniti trenutnu radnu datoteku sljedećim naredbama ako već imate DEODEX firmware i imate root pristup:

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@ [email protected]@classes.dex ponovno pokretanje

Prva komanda otprema zakrpljenu datoteku na fleš disk
2. komanda otvara shell
3. komanda daje root pristup
Četvrta komanda montira sistem u modu čitanja/pisanja
5. komanda pravi rezervnu kopiju datoteke
Šesta komanda prepisuje postojeći fajl novim zakrpljenim.
7. komanda konfiguriše dozvole
8. komanda briše keš memoriju
9. komanda ponovo pokreće uređaj.

2 . Hvala vam što ste pročitali do sada, ostalo je malo.
3 . Nakon ponovnog pokretanja, vaš novi zakrpljeni kod će stupiti na snagu.
4 . Ako kod ne radi ili dođe do greške, tada pomoću jednostavnih kombinacija možete vratiti sigurnosnu kopiju.
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@ [email protected]@classes.dex ponovno pokretanje

Epilog

Da, neki su mislili da je ovaj članak previše konkretan, neki su ga smatrali teškim za razumjeti, a nekima beskorisnim. Namjerno sam izbjegao detaljne detalje i ilustracije kako to sve izgleda uživo i u praksi. Prvo, ovaj rad će biti nezahvalan i samo će potaknuti još više pitanja. Drugo, ne želim da vidim armiju korisnika na forumima koji se žale da su ubili svoj telefon.

Za sljedeći članak ću vam reći kako napraviti Tweeks. Bit će primjer korištenja automatskog snimanja telefonskih poziva korištenjem izvornih telefonskih alata. Hvala vam na pažnji.

P.S. Ako nešto nije jasno ili zbunjujuće, postavljajte pitanja - uvijek ću rado odgovoriti i objasniti.

Formulacija problema

Čuvanje informacija na računaru povezano je s rizikom od slučajnog ili namjernog otkrivanja, pa se za njihovu zaštitu koriste različite metode i sredstva. Najčešće kao primarno sredstvo koje onemogućava slobodan pristup informacijama u elektronskom obliku, koristiti enkripciju, koji je implementiran u hardveru ili softveru. Objekti kriptografske zaštite su pojedinačni fajlovi, grupe fajlova, direktorijumi i, konačno, logički diskovi. Rezultat enkripcije su arhive datoteka koje se nalaze na elektronski mediji. Detalji implementacije različitih kriptografskih algoritama, može se primijetiti da u ovom slučaju GKU također treba riješiti probleme vezane za zajamčeno uništavanje početnog nešifrovane informacije kako bi se spriječio njegov oporavak.

Činjenica je da je karakteristika svih korišćenih sistema datoteka ( FAT, NTFS, itd.). Nije moguće prepisati informacije u klasterima koji pripadaju datoteci dok se ne primijeti da je datoteka izbrisana. Odnosno, tokom enkripcije fajla, njegova šifrovana kopija se ne upisuje umesto inicijalne datoteke, već u slobodne klastere elektronskih medija, a tek nakon što se proces šifrovanja završi, nešifrovani fajl se briše, osim ako je to predviđeno zakonom. algoritam.

Tako je moguće oporaviti izbrisane nešifrirane informacije, što uspješno postižu softverski proizvodi kao što su File Recover, Back2Life, R-Studio, GetDataBack za NTFS, itd.

Ako ne uzmete u obzir preporuke povezane s njima fizičko uništavanje elektronskih medija, onda se to može onemogućiti samo uzastopnim prepisivanjem onih klastera magnetnih diskova na kojima su ranije bile pohranjene povjerljive informacije. Na primjer, Američki nacionalni standard Ministarstva odbrane DOD 5220.22-M (E) uključuje snimanje nasumičnih brojeva u prvom prolazu, dodatnih brojeva u odnosu na one snimljene u prethodnom prolazu u drugom, i slučajnih brojeva u trećem.U poznatom algoritmu Petera Gutmanna, koji se smatra jednim od najpouzdaniji , umjesto uništenih podataka, sve poznate kombinacije cifara se ispisuju redom (ukupno 35 prolaza). — metode uništavanja informacija podržavaju američke standarde DOD 5220.22-M, Vojska AR380-19, NCSC-TG-025, Vazduhoplovstvo 5020, NAVSO P-5239-26, HMG IS5, njemački VSITR, kanadski OPS-II i ruski GOST P50739-95, itd. enkripcija koja se izvodi unutar logičke disk jedinice, uvijek nosi rizik nepotpunog uništenja originalnih informacija, pa je neophodan drugačiji pristup ovom problemu.

mob_info