Kas ir .dex fails operētājsistēmā Android? Pilns skaidrojums un piemēri

  • .dex fails ir Android lietojumprogrammu vietējais izpildāmā faila formāts, kas ir optimizēts mobilajām ierīcēm.
  • Tās struktūra ļauj ātri un efektīvi izpildīt lietotnes, integrējot klases, metodes, laukus un metadatus.
  • Arī .dex formāts var būt ļaunprogrammatūras mērķis, tāpēc ir svarīgi aizsargāt savus datus un atjaunināt lietotnes.

.dex fails operētājsistēmā Android

Vai jūs kādreiz esat prātojies? Kas īsti ir .dex fails Android pasaulē?? Ja esat šīs operētājsistēmas lietotājs, iespējams, esat dzirdējuši par lietotnēm, APK failiem un failiem, kas jūsu tālrunī darbojas maģiski, taču Android visums slēpj daudz aizraujošu tehnisku detaļu. Starp tiem ir slavenie .dex faili.

Šajā rakstā mēs īsi aprakstīsim, kas ir .dex fails operētājsistēmā Android., kam tas tiek izmantots, kā tas darbojas aizkulisēs, tā nozīme lietotņu ekosistēmā, interesanti fakti, drošības problēmas un pat daži rīki, lai izpētītu kodu, kas slēpjas aiz jūsu iecienītākajām lietotnēm. Lasi tālāk un kļūsti par zinošāko cilvēku šajos failos!

Kas ir .dex fails operētājsistēmā Android?

DEX

Pagarinājums .dex fails nāk no Dalvik izpildāmais, kas ir formāts vietējā izpilde Android lietojumprogrammām. Kad lejupielādējat lietojumprogrammu un instalējat tās slaveno APK, patiesībā iekšpusē ir viens vai vairāki faili .dex fails kas satur visu lietotnes kodu, kas ir gatavs izpildei ar Dalvik virtuālo mašīnu (vecākās Android versijās) vai ART (jaunākās versijās).

Datne .dex fails Tas ietver visu klases definīciju, metožu, lauku un papildinošo datu kopu, kas nepieciešama lietojumprogrammas darbībai. Tas nav pirmkods, kādu raksta programmētāji, bet gan pārveidota un optimizēta versija. lai efektīvi darbotos Android mobilajās ierīcēs, kur resursi ir ierobežoti un izpildei jābūt ātrai un drošai.

Tātad, palaižot lietotni operētājsistēmā Android, sistēma faktiski nolasa un interpretē šo .dex failu, kas tulko visas instrukcijas jūsu tālruņa aparatūrai.

Kā ģenerēt .dex failu?

Process sākas ar to, ka izstrādātāji raksta savu kodu Java vai Kotlin. Šis kods, kompilējot, vispirms kļūst par .klases faili (tāpat kā jebkurā tradicionālajā Java programmā). Bet te nu sākas atšķirība: Android būvēšanas sistēma nevis paliek .class, bet gan izmanto rīku ar nosaukumu dx lai pārveidotu šos .class failus vienā failā .dex failsvai vairākās, ja pieteikums ir ļoti liels.

Un kāpēc šis papildu solis? Jo .dex formāts ir izstrādāts, lai būtu kompaktāks un efektīvāks.. Tas ir īpaši optimizēts mobilajām ierīcēm, kuras parasti ir mazāk jaudīgas nekā datori un kurām nepieciešama efektīva atmiņas un procesora izmantošana.

Ko satur .dex fails?

DEX

Datne .dex fails būtībā ir konteiners klasēm, metodēm, instrukcijām un metadatiem. Tas iekļauj:

  • Klases definīcijas (visa programmas klašu struktūra un attiecības)
  • Lauki un metodes no katras klases
  • Baitkods specifisks Dalvik/ART videi
  • Virknes, tipi, prototipi un citas atsauces tabulas
  • Kļūdu novēršanas informācija un anotācijas
  • Un galvenes īpašs ar failu metadatiem

Tas viss ir sakārtots un iepakots tādā veidā, kas atvieglo efektīvu izpildi un interpretāciju Android sistēmā. .dex formāts ļauj daudzām lietotnēm darboties paralēli, koplietot resursus, kad tas ir lietderīgi, un pilnībā izmantot tālruņu un planšetdatoru iespējas.

.dex faila galvenās daļas

Detalizēti aplūkojot, .dex formāts sastāv no vairākām galvenajām sadaļām:

  • Galvene: Tā ir faila galvene ar pamatinformāciju par formātu, kontrolsummu, versiju utt.
  • Virknes ID: Visu kodā izmantoto teksta virkņu identifikatori.
  • Tipa ID: Tipa identifikatori (klases, masīvi, primitīvie tipi utt.)
  • Proto ID: Metodes prototipi (definējiet atgriešanas tipus un argumentus).
  • Lauka ID: Lauku identifikatori (mainīgie, kas saistīti ar klasēm).
  • Metodes ID: Metožu identifikatori (ar klasēm saistītas funkcijas).
  • Klases definīcijas: Galvenā struktūra, kas nosaka katru klasi.
  • Datu sadaļa: Šeit tiek glabātas virknes, masīvi, anotācijas, kods utt.

Katram no šiem komponentiem ir galvenā funkcija lietotnes izpildē., ļaujot Android sistēmai jebkurā laikā ātri piekļūt nepieciešamajai informācijai.

.dex formāta tehniskās detaļas

Zinātkārākajiem vai tiem, kas nāk no programmēšanas, šeit ir sniegta tehniska informācija par to, kā fails faktiski tiek strukturēts. .dex fails. Neuztraucieties, ja neesat programmētājs: šo daļu varat izlaist, bet, ja esat ziņkārīgs, tā jums droši vien šķitīs aizraujoša.

Failam ir īpaša galvene, ko var identificēt ar konstanti DEX_FILE_MAGIC, kas sākas ar baitiem, kas apzīmē “dex\n039\0” (tas tiek izmantots, lai atpazītu, ka fails patiesībā ir .dex). Tas ietver arī kontrolsummu, lai novērstu datu bojāšanu, satura SHA-1 parakstu un kopējo faila lielumu.

Formāts ir maz-endian, kas nozīmē, ka tas glabā baitus noteiktā secībā (vismazāk nozīmīgais pirms nozīmīgākā), tāpat kā daudzās mūsdienu sistēmās.

Katras klases, lauka un metodes informācija tiek attēlota ar indeksiem un savstarpējām atsaucēm, kas padara ļoti ātri piekļūt jebkuriem datiem un fails ir kompakts un efektīvi izmanto atmiņu.

Kāpēc .dex fails ir tik svarīgs?

Iemesls, kāpēc .dex fails ir galvenais Android ierīcēs. Tas ir tāpēc, ka tas ļauj sistēmai palaist jebkuru lietotni neatkarīgi no tā, kur tā ir apkopota, pilnveidota vai pielāgota. Tas nozīmē, ka .dex fails, kas ģenerēts Windows, Linux vai Mac datorā, darbosies vienādi jebkurā Android ierīcē, ievērojami atvieglojot izstrādātāju darbu un nodrošinot saderību starp dažādām ierīcēm.

Turklāt, pateicoties .dex formāta dizainam, Sistēma var piemērot papildu optimizācijas, koplietot kodu starp lietojumprogrammām un uzlabot drošību, jo tā var pārbaudīt failu saturu pirms to izpildes.

Kas notiek ar .dex failiem jaunākajās Android versijās?

Kopš Android 5.0 (Lollipop) versijas sistēma ir nepārtraukti attīstījusies. Iepriekš Dalvik bija virtuālā mašīna, kas atbildēja par .dex failu palaišanu. Tagad lielākā daļa ierīču izmanto ART (Android Runtime), kas joprojām darbojas ar .dex, bet piemēro papildu optimizācijas un iepriekš apkopo kodu (AOT).

Tas nozīmē, ka, lai gan pamatformāts joprojām ir .dex, lietotnes kods tiek tālāk pārveidots, lai uzlabotu veiktspēju, startēšanu un lietotāja pieredzi. Dažos gadījumos sistēma ģenerē .odex failus vai citus atvasinātus formātus, bet vienmēr no slavenajiem .dex failiem, kas ir iepakoti APK failā.

Izpildes process: no .dex faila līdz koda izpildei

Palaižot lietotni operētājsistēmā Android, sistēma veic šādas darbības:

  • Izvelciet failu .dex fails no instalētās APK versijas
  • Pārbauda faila parakstu un integritāti
  • Mūsdienu versijās daļu no .dex faila var kompilēt vietējā kodā (AOT/JIT optimizācija).
  • Izpilda .dex failā attēlotās instrukcijas, izmantojot Dalvik vai ART

Tas viss notiek praktiski caurspīdīgi lietotājam, bet aizkulisēs Sistēma lasa un izpilda .dex failu reāllaikā., labi pārvaldot atmiņu, paātrinot procesus un nodrošinot lielisku saderību starp lietotnēm no dažādiem avotiem.

Vai APK failā var būt vairāki .dex faili?

Agrāk APK faili bija ierobežoti līdz vienam .dex failam. un līdz ar to līdz maksimālajam klašu un metožu skaitam (slavenais "65 XNUMX metožu ierobežojums"). Taču laika gaitā daudzas lietotnes kļuva tik lielas (piemēram, tādas lietotnes kā Facebook vai WhatsApp), ka tām bija jāpārvar šis šķērslis. Tāpēc tagad ir ļoti bieži atrast APK failus ar vairākiem .dex failiem (multidekss), katrs ievērojot vienādu formātu un lietotnē darbojoties koordinēti.

Šī iespēja ļauj lietotnēm būt tik lielām un sarežģītām, cik nepieciešams, nezaudējot veiktspēju vai saderību.

.dex faila iekšējās struktūras analīze

Iedziļināsimies nedaudz dziļāk faila organizēšanā. .dex fails iekšā. Iedomājieties to kā lielu instrukciju grāmatu, kur katrai daļai ir sava sadaļa un noteikumi:

  • Galvene – Šeit ir faila pamatinformācija, piemēram, tā maģiskais “paraksts”, lielums, versija un kontrolsummas.
  • Virknes ID – Tas ir sakārtots visu .dex failā esošo virkņu saraksts (klases nosaukumi, metodes, teksta literāļi utt.).
  • Tipa ID – Definē visus datu tipus un klases, uz kurām ir atsauce.
  • Proto ID – Šeit mēs definējam metožu “prototipus”, tas ir, kā tās tiek izsauktas, ko tās atgriež un kādus parametrus tās saņem.
  • Lauku ID un metožu ID – Šie ir visu esošo lauku un metožu saraksti ar atsaucēm ātrai piekļuvei.
  • Klases definīcijas – Detalizēta informācija par katru klasi: tās metodes, lauki, superklases, ieviestās saskarnes, anotācijas, atkļūdošanas dati utt.
  • Datu sadaļa – Šajā apgabalā ir vērtības, virknes, masīvi, anotācijas un metodes kods (Dalvik baitkodā).

Tas viss ir organizēts efektīvai un ātrai piekļuvei, samazinot atmiņas patēriņu un paātrinot lietotņu ielādi un darbību.

Kā atvērt un pārlūkot .dex failu

Jums varētu būt interese redzēt, kas atrodas .dex failā. Ir vairāki rīki, lai tos pārbaudītu:

  • Dexplorer: Android lietotne, kas ļauj pārlūkot instalēto lietotņu .dex failus. Varat skatīt klases, metodes un lauka definīcijas, pārlūkot APK iekšējos resursus, priekšskatīt XML failus un attēlus, klausīties audio un pat skatīt manifestus.
  • Datoru dekompilatori un disassembleriIr datorprogrammas, piemēram, jadx, dex2jar un citas, kas konvertē .dex failus atpakaļ lasāmā Java kodā vai citos starpposma formātos.
  • Android Studio integrētā izstrādes vide (IDE)Izstrādātājiem Android Studio ļauj pārbaudīt kompilācijas laikā ģenerēto .dex failu saturu.

Uzmanību: Citu personu .dex failu izpēte var būt juridiski sensitīva., it īpaši, ja plānojat modificēt lietojumprogrammas, kas nepieder jums. Dariet to tikai izglītības nolūkos un nekad nepārkāpjiet drošības, autortiesību vai privātuma apsvērumus.

.dex failu modificēšana un manipulēšana

.dex faila modificēšana nav vienkārša, un parasti tā nav ieteicama, ja vien neesat eksperts un nedarāt to ar savām lietotnēm. Ir rīki .dex failu dekompilēšanai, rediģēšanai un atkārtotai kompilēšanai, taču jebkādas izmaiņas var izraisīt kļūdas, avārijas vai pat drošības ievainojamības.

Ja izstrādājat lietotnes un jums ir jāmodificē .dex fails, vienmēr izmantojiet oficiālos rīkus un ievērojiet Android drošības vadlīnijas. Citiem lietotājiem ieteicams izvairīties no šo failu aiztikšanas, ja vien tas nav absolūti nepieciešams.

Reāls piemērs: Dexplorer

Dexplorer
Dexplorer
Izstrādātājs: Papildinājumu detektors
Cena: bezmaksas

Kā jau minējām iepriekš, ir lietotne ar nosaukumu Dexplorer īpaši izstrādāts .dex failu un APK failu izpētei.

Izmantojot šo lietotni, jūs varat:

  • Pārlūkojiet Java pakotnes un lietotņu failus
  • Skatīt klases definīcijas, laukus un metožu parakstus
  • Pārlūkot resursus, piemēram, līdzekļus, bibliotēkas un resursu failus
  • Priekšskatiet XML failus, attēlus, audio un fontus APK failā
  • Atveriet APK failus no failu pārlūka
  • Izmantojiet rīku kā palīglīdzekli koda slēpšanas pārbaudē (piemēram, ar Proguard).

Esiet uzmanīgi, šī lietotne ir paredzēta tikai rīks izstrādātājiem un zinātkāriem cilvēkiem, nav paredzēts nelikumīgām darbībām vai pirātismam.

Dexplorer
Dexplorer
Izstrādātājs: Papildinājumu detektors
Cena: bezmaksas