Rumah  >  Artikel  >  Operasi dan penyelenggaraan  >  Cara membuat projek baharu dalam Android

Cara membuat projek baharu dalam Android

王林
王林ke hadapan
2023-05-29 23:37:241436semak imbas

Kandungan

1. Tutorial ringkas tentang alat yang berguna (Insight)

Apakah yang boleh anda pelajari?

Perisian pembantu analisis yang sangat berkuasa.

2. Analisis proses pengoptimuman Android

Apakah yang anda boleh pelajari?

1. Pemahaman mendalam tentang proses pengoptimuman Android
2. Pemerhatian rapat kod sumber Android
2 🎜>

3. Analisis fail Android DEX

Apakah yang anda boleh pelajari?
1. Fungsi lain yang boleh dimuat turun

2. Proses penghuraian fail dex
3 proses memuatkan

Apakah yang anda boleh pelajari?

1. Proses lengkap pemuatan kelas
2 Pemilihan kelas penembakan dan pengukuhan

0x01 Tutorial ringkas tentang alat yang berguna (Insight)

Perisian ini adalah untuk Menganalisis c/c++ dan kod sumber java mempunyai fungsi tambahan yang kuat, yang akan digunakan kemudian, jadi pengenalan ringkas diberikan.

Alat boleh didapati dalam lampiran. Hanya muat naik dan muat turun secara berasingan.

SI3US-205035-36448

Kod pendaftaran disediakan di sini.

Pasang, seterusnya, seterusnya.

Cara membuat projek baharu dalam AndroidBuat projek baharu

Pilih projek baharu.


Single OKCara membuat projek baharu dalam Android


Cara membuat projek baharu dalam AndroidPilih yang pertama


Cara membuat projek baharu dalam AndroidPilih Tambah Pokok, yang bermaksud tambahkan kesemuanya.


Cara membuat projek baharu dalam AndroidSelepas pemuatan selesai

Cara membuat projek baharu dalam AndroidKami akan menggunakan perisian ini untuk analisis.

Analisis Proses Pengoptimuman Android

Saya ingin mengatakan beberapa perkataan pada masa ini, saya tahu kepentingan bahasa Inggeris saya tidak bagus, tetapi saya boleh melihat itu dalam kamus.


Cara membuat projek baharu dalam Android1.extractAndProcessZip

Mari kita tidak bercakap tentang kandungan ini dahulu, mari kita lihat nama fungsi ini. ekstrak: Ekstrak, dan dan, Proses proses Zip, format fail termampat, kita semua tahu bahawa apk sebenarnya adalah pakej termampat zip.

Maka maksud fungsi ini ialah proses mengeluarkan zip.

Kemudian mari kita analisa langkah demi langkah.


Cara membuat projek baharu dalam AndroidBerikut ialah takrif pembolehubah perantaraan extractAndProcessZip. Ia bukan fokus kajian kami.


DexClassVerifyMode verifyMode = VERIFY_MODE_ALL;
Cara membuat projek baharu dalam AndroidAyat ini mentakrifkan verifyMode, iaitu modul pengesahan Data yang dimulakan di sini ialah VERIFY_MODE_ALL, yang bermaksud semuanya telah disahkan.

Berfikir

Jika kami membuat perubahan di sini, bolehkah kami melangkau pengesahan ini.

Mari kita lihat nilai lain.


Cara membuat projek baharu dalam AndroidAnda boleh menentukan nilai ini sendiri jika anda mempunyai idea.

DexOptimizerMode dexOptMode = OPTIMIZE_MODE_VERIFIED;


Cara membuat projek baharu dalam AndroidMari kita teruskan melihat ke bawah.


Cara membuat projek baharu dalam AndroidTerdapat fungsi yang dipanggil dexOptCreateEmptyHeader yang, seperti namanya, mencipta pengepala kosong untuk pengoptimuman dex..


Cara membuat projek baharu dalam AndroiddexOffset, rekod kedudukan fail supaya kita boleh kembali ke sini kemudian, yang sebenarnya adalah kedudukan permulaan membaca fail dex.

Mari kita lihat fungsi seterusnya.


Buka arkib zip, cari entri DEX.Cara membuat projek baharu dalam AndroidJelas sekali, apa yang bahagian ini lakukan ialah mencari fail dex daripada apk.

Kemudian analisis.


Cara membuat projek baharu dalam AndroidFungsi untuk mengekstrak beberapa offset dex.

Ekstrak data DEX ke dalam fail cache pada offset semasa.

Perkara seterusnya untuk dibincangkan ialah proses dex odexization.


Cara membuat projek baharu dalam Android

Di sinilah pengesahan dioptimumkan.

Melalui sini anda boleh mengubah suai proses pengoptimuman dan juga mengalih keluar pengesahan pengoptimuman.

Fikirkan
Dari mana datangnya data dan dari mana hendak membandingkannya. ·
Data ini dibandingkan dalam build.prop.

2. Teruskan mengoptimumkan

Mari kita ikuti fungsi dvmContinueOptimization.

PS:
Kami akan bersentuhan dengan perkara yang sangat penting berkaitan dengan penembakan

Buka fungsi dvmContinueOptimization

Cara membuat projek baharu dalam Android

Pertama ialah penghakiman.


Cara membuat projek baharu dalam Android

Kemudian terdapat tulisan pada fail dex.

Baca terus (perkara penting akan datang)


Cara membuat projek baharu dalam Android

dvmDexFileOpenPartial, jika anda pernah melihat tutorial pembongkaran orang lain sebelum ini, anda mesti Ini adalah titik akhir yang kerap digunakan yang saya hanya tahu untuk memuat turunnya sebelum ini, tetapi sekarang saya tahu bahawa fungsi ini wujud dalam kod sumber.

Mari kita lihat panggilan fungsi dvmDexFileOpenPartial

Cara membuat projek baharu dalam Android

Ia dipanggil dua kali di sini, dan sekali ialah definisinya sendiri.

Mula-mula mari kita lihat prototaip dvmDexFileOpenPartial

int dvmDexFileOpenPartial(const void* addr, int len, DvmDex** ppDvmDex)
Parameter base load fail dalam alamat memori (iaitu, DEX.035)
Parameter 2: Panjang fail fail DEX yang dimuatkan,
Parameter 3: Parameter output, fail DEX ditukar kepada struktur DvmDex, yang mengandungi kelas, medan dan kaedah fail Dex. Objek fail Dex yang dikendalikan Dalivk ialah struktur struktur


Cara membuat projek baharu dalam Android

Akhirnya, maklumat pengepala ditulis di sini.


Cara membuat projek baharu dalam Android

0x03 analisis fail Android DEX

dvmRawDexFileOpen() Fungsi ini ialah fungsi utama yang perlu kita fahami, ia ada dalam RawDexFile .fungsi cpp.


Cara membuat projek baharu dalam Android

Tentukan dahulu pembolehubah asas.


Cara membuat projek baharu dalam Android

Kita semua tahu bahawa perkara yang sangat penting dalam format fail ialah nombor ajaib, jadi berikut ialah langkah pertama untuk menentukan nombor ajaib, sahkanMagicAndGetAdler32. Keajaiban di sini ialah nombor ajaib.


Cara membuat projek baharu dalam Android

Berikut ialah pengesahan masa dan saiz fail.


Cara membuat projek baharu dalam Android

Fungsi ini adalah fungsi utama, dan ia juga merupakan fungsi yang perlu kita fokuskan untuk menganalisis Fungsi utamanya ialah menjana odex fail sepadan dengan dex, juga Ia adalah apa yang dipanggil odexization. Mari ikuti fungsi untuk melihat.

Cara membuat projek baharu dalam Android

Berikut ialah sebahagian daripada fungsi dexOptGenerateCacheFileName(). Perkara utama kami ialah melihat di mana ia dikeluarkan.

Cara membuat projek baharu dalam Android

Di sini anda boleh melihat bahawa ia dijana dalam direktori data, ALOGV("Fail cache untuk '%s' '%s' ialah '%s' " , FileName, subFileName, nameBuf);
Format seperti ini.

Maksudnya, fail odex kami telah dijana di sini.

Perkara seterusnya yang perlu dilakukan ialah fungsi ini dvmDexFileOpenFromFd(), mengoptimumkan lagi, melengkapkan pemetaan dan menetapkannya sebagai fail yang boleh dibaca. Buka fungsi ini. Lokasinya dalam DvmDex.cpp.

Cara membuat projek baharu dalam Android

Mari kita lihat dahulu di mana fungsi ini dipanggil.

Cara membuat projek baharu dalam Android

Tempat di mana fungsi ini dipanggil ialah fungsi utama kami dvmRawDexFileOpen Fungsi ini mula-mula memanggil dexOptGenerateCacheFileName untuk menjana odex, dan kemudian memanggil dvmDexFileOpenFromFd untuk pengoptimuman lain.

Langkah terakhir dalam pengoptimuman ialah dexFileParse(), iaitu menghuraikan DEX. Lokasi ini diringkaskan secara ringkas dalam DexFile

Cara membuat projek baharu dalam Android

.

fungsi kawalan utama dvmRawDexFileOpen() - dexOptGenerateCacheFileName() menjana odex yang sepadan - dvmDexFileOpenFromFd() mengoptimumkan lagi - dexFileParse() menghuraikan dex.

PS: Petua

Apabila dexfileopenpartial berada di bahagian seterusnya, anda mungkin mendapati bahawa tiada cara untuk memecahkannya, maka kita boleh memilih dexOptGenerateCacheFileNamePKcS0, dvmdexfileopenfromfd dan fungsi lain untuk meneruskan ke seterusnya bahagian.

Secara umumnya, dexfileopenpartial adalah lebih baik dalam mengendalikan sesuatu dengan cengkerang.

Proses pemuatan kelas Android Dex 0x04

Kod sumber lain dipandu oleh fungsi kawalan utama untuk membimbing fungsi utama lain untuk beroperasi Proses pemuatan kelas dex juga seperti ini.

Fungsi kawalan utamanya ialah Dalvik_dalvik_system_DexFile_defineClassNative()


Cara membuat projek baharu dalam Android

Terdapat juga fungsi yang memerlukan perhatian Dalvik_dalvik_system_Dex🎜> Apa yang perlu diperhatikan di sini ialah terdapat dua tempat yang boleh anda buang.


Cara membuat projek baharu dalam Android
Mari lihat fungsi kawalan utama kami.

Terdapat panggilan sedemikian dalam fungsi kawalan utama.


Cara membuat projek baharu dalam Android
Panggilan ini adalah untuk mengesahkan kuki, tetapi kuki ini berkemungkinan kuki dex yang dinyahsulit, jadi anda juga boleh membuang kuki ini di sini.

Kemudian lihat ke bawah.


Cara membuat projek baharu dalam Android
fungsi dvmDefineClass, fungsi ini ialah fungsi untuk mengesahkan pemuatan kelas.

Cara membuat projek baharu dalam AndroidFungsi membuat pertimbangan sendiri, tetapi yang dikembalikan memang kepala besar. Mari kita ikuti fungsi ini untuk melihat.


Cara membuat projek baharu dalam Android

Cara membuat projek baharu dalam Android
Perkara yang paling penting di sini ialah clazz, iaitu kelas yang dimuatkan secara dinamik.

Nilainya dikembalikan oleh fungsi loadClassFromDex, jadi kami akan melihat lebih lanjut.

Cara membuat projek baharu dalam Android
Lihat struktur sedemikian di sini.


Cara membuat projek baharu dalam Android
Mari kita lihat butiran struktur ini.


Cara membuat projek baharu dalam Android
Sama ada struktur ini betul-betul sama dengan struktur dex, ia menunjukkan bahawa inilah yang kita perlukan.

Atas ialah kandungan terperinci Cara membuat projek baharu dalam Android. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:yisu.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam