Cara membuat projek baharu dalam Android
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 🎜>
2. Proses penghuraian fail dex
3 proses memuatkan
2 Pemilihan kelas penembakan dan pengukuhan
0x01 Tutorial ringkas tentang alat yang berguna (Insight)
Buat projek baharu
Single OK
Pilih yang pertama
Pilih Tambah Pokok, yang bermaksud tambahkan kesemuanya.
Selepas pemuatan selesai
Kami akan menggunakan perisian ini untuk analisis.
1.extractAndProcessZip
Maka maksud fungsi ini ialah proses mengeluarkan zip.
Kemudian mari kita analisa langkah demi langkah.
Berikut ialah takrif pembolehubah perantaraan extractAndProcessZip. Ia bukan fokus kajian kami.
DexClassVerifyMode verifyMode = VERIFY_MODE_ALL;

Berfikir
Jika kami membuat perubahan di sini, bolehkah kami melangkau pengesahan ini.
Mari kita lihat nilai lain.
Anda boleh menentukan nilai ini sendiri jika anda mempunyai idea.
DexOptimizerMode dexOptMode = OPTIMIZE_MODE_VERIFIED;
Mari kita teruskan melihat ke bawah.
Terdapat fungsi yang dipanggil dexOptCreateEmptyHeader yang, seperti namanya, mencipta pengepala kosong untuk pengoptimuman dex..
dexOffset, rekod kedudukan fail supaya kita boleh kembali ke sini kemudian, yang sebenarnya adalah kedudukan permulaan membaca fail dex.
Buka arkib zip, cari entri DEX.Jelas sekali, apa yang bahagian ini lakukan ialah mencari fail dex daripada apk.
Kemudian analisis.
Fungsi untuk mengekstrak beberapa offset dex.
Ekstrak data DEX ke dalam fail cache pada offset semasa.
Perkara seterusnya untuk dibincangkan ialah proses dex odexization.
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
Pertama ialah penghakiman.
Kemudian terdapat tulisan pada fail dex.
Baca terus (perkara penting akan datang)
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
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
Akhirnya, maklumat pengepala ditulis di sini.
0x03 analisis fail Android DEX
dvmRawDexFileOpen() Fungsi ini ialah fungsi utama yang perlu kita fahami, ia ada dalam RawDexFile .fungsi cpp.
Tentukan dahulu pembolehubah asas.
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.
Berikut ialah pengesahan masa dan saiz fail.
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.
Berikut ialah sebahagian daripada fungsi dexOptGenerateCacheFileName(). Perkara utama kami ialah melihat di mana ia dikeluarkan.
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.
Mari kita lihat dahulu di mana fungsi ini dipanggil.
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
.
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()
Terdapat juga fungsi yang memerlukan perhatian Dalvik_dalvik_system_Dex🎜>
Mari lihat fungsi kawalan utama kami.
Terdapat panggilan sedemikian dalam fungsi kawalan utama.
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.
fungsi dvmDefineClass, fungsi ini ialah fungsi untuk mengesahkan pemuatan kelas.
Fungsi membuat pertimbangan sendiri, tetapi yang dikembalikan memang kepala besar. Mari kita ikuti fungsi ini untuk melihat.
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.
Lihat struktur sedemikian di sini.
Mari kita lihat butiran struktur ini.
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!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



Dalam beberapa hari kebelakangan ini, Ice Universe terus mendedahkan butiran mengenai Galaxy S25 Ultra, yang secara meluas dipercayai sebagai telefon pintar utama Samsung yang seterusnya. Antara lain, pembocor itu mendakwa bahawa Samsung hanya merancang untuk membawa satu peningkatan kamera

OnLeaks kini telah bekerjasama dengan Android Headlines untuk memberikan pandangan pertama pada Galaxy S25 Ultra, beberapa hari selepas percubaan gagal untuk menjana lebih daripada $4,000 daripada pengikut X (dahulunya Twitter). Untuk konteks, imej pemaparan yang dibenamkan di bawah h

Di samping mengumumkan dua telefon pintar baharu, TCL juga telah mengumumkan tablet Android baharu yang dipanggil NXTPAPER 14, dan saiz skrinnya yang besar adalah salah satu nilai jualannya. NXTPAPER 14 menampilkan versi 3.0 jenama tandatangan TCL panel LCD matte

Dalam beberapa hari kebelakangan ini, Ice Universe terus mendedahkan butiran mengenai Galaxy S25 Ultra, yang secara meluas dipercayai sebagai telefon pintar utama Samsung yang seterusnya. Antara lain, pembocor itu mendakwa bahawa Samsung hanya merancang untuk membawa satu peningkatan kamera

Vivo Y300 Pro baru sahaja didedahkan sepenuhnya, dan ia merupakan salah satu telefon Android jarak pertengahan paling tipis dengan bateri yang besar. Tepatnya, telefon pintar ini hanya tebal 7.69 mm tetapi mempunyai bateri 6,500 mAh. Ini adalah kapasiti yang sama seperti yang dilancarkan baru-baru ini

Samsung belum menawarkan sebarang petunjuk lagi tentang bila ia akan mengemas kini siri telefon pintar Edisi Peminat (FE). Seperti sedia ada, Galaxy S23 FE kekal sebagai edisi terbaharu syarikat, telah dibentangkan pada awal Oktober 2023. Walau bagaimanapun, banyak

Redmi Note 14 Pro Plus kini rasmi sebagai pengganti langsung kepada Redmi Note 13 Pro Plus tahun lepas (sekira $375 di Amazon). Seperti yang dijangkakan, Redmi Note 14 Pro Plus mengetuai siri Redmi Note 14 bersama Redmi Note 14 dan Redmi Note 14 Pro. Li

Motorola telah mengeluarkan banyak peranti tahun ini, walaupun hanya dua daripadanya boleh dilipat. Untuk konteks, sementara kebanyakan dunia telah menerima pasangan itu sebagai Razr 50 dan Razr 50 Ultra, Motorola menawarkannya di Amerika Utara sebagai Razr 2024 dan Razr 2
