Kurekebisha Maktaba za Asili
Reading time: 3 minutes
tip
Jifunze na fanya mazoezi ya AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Jifunze na fanya mazoezi ya GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Support HackTricks
- Angalia mpango wa usajili!
- Jiunge na 💬 kikundi cha Discord au kikundi cha telegram au tufuatilie kwenye Twitter 🐦 @hacktricks_live.
- Shiriki mbinu za udukuzi kwa kuwasilisha PRs kwa HackTricks na HackTricks Cloud repos za github.
Kwa maelezo zaidi angalia: https://maddiestone.github.io/AndroidAppRE/reversing_native_libs.html
Programu za Android zinaweza kutumia maktaba za asili, ambazo kwa kawaida zimeandikwa kwa C au C++, kwa kazi zinazohitaji utendaji mzito. Waumbaji wa programu za hasara pia hutumia maktaba hizi, kwani ni ngumu zaidi kuzirekebisha kuliko DEX bytecode. Sehemu hii inasisitiza ujuzi wa kurekebisha unaolengwa kwa Android, badala ya kufundisha lugha za mkusanyiko. Toleo za ARM na x86 za maktaba zinapatikana kwa ajili ya ulinganifu.
Vidokezo Muhimu:
- Maktaba za Asili katika Programu za Android:
- Zinatumika kwa kazi zinazohitaji utendaji mzito.
- Zimeandikwa kwa C au C++, na kufanya kurekebisha kuwa ngumu.
- Zinapatikana katika muundo wa
.so
(kipande kilichoshirikiwa), sawa na binaries za Linux. - Waumbaji wa programu za hasara wanapendelea msimbo wa asili ili kufanya uchambuzi kuwa mgumu.
- Java Native Interface (JNI) & Android NDK:
- JNI inaruhusu mbinu za Java kutekelezwa katika msimbo wa asili.
- NDK ni seti maalum ya zana za Android za kuandika msimbo wa asili.
- JNI na NDK huunganisha msimbo wa Java (au Kotlin) na maktaba za asili.
- Kuweka na Kutekeleza Maktaba:
- Maktaba zinawekwa kwenye kumbukumbu kwa kutumia
System.loadLibrary
auSystem.load
. - JNI_OnLoad inatekelezwa wakati wa kuweka maktaba.
- Mbinu za asili zilizotangazwa na Java huunganisha na kazi za asili, kuruhusu utekelezaji.
- Kuunganisha Mbinu za Java na Kazi za Asili:
- Kuunganisha Kitaalamu: Majina ya kazi katika maktaba za asili yanalingana na muundo maalum, kuruhusu kuunganisha kiotomatiki.
- Kuunganisha Kikatiba: Inatumia
RegisterNatives
kwa kuunganisha, ikitoa kubadilika katika majina na muundo wa kazi. - Zana na Mbinu za Kurekebisha:
- Zana kama Ghidra na IDA Pro husaidia kuchambua maktaba za asili.
JNIEnv
ni muhimu kwa kuelewa kazi na mwingiliano wa JNI.- Mazoezi yanatolewa ili kufanyia mazoezi kuweka maktaba, kuunganisha mbinu, na kutambua kazi za asili.
Rasilimali:
- Kujifunza Mkusanyiko wa ARM:
- Inapendekezwa kwa kuelewa kwa kina muundo wa msingi.
- Msingi wa Mkusanyiko wa ARM kutoka Azeria Labs inapendekezwa.
- Hati za JNI & NDK:
- Maelezo ya JNI ya Oracle
- Vidokezo vya JNI vya Android
- Kuanza na NDK
- Kukarabati Maktaba za Asili:
- Kukarabati Maktaba za Asili za Android kwa Kutumia JEB Decompiler
tip
Jifunze na fanya mazoezi ya AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Jifunze na fanya mazoezi ya GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Support HackTricks
- Angalia mpango wa usajili!
- Jiunge na 💬 kikundi cha Discord au kikundi cha telegram au tufuatilie kwenye Twitter 🐦 @hacktricks_live.
- Shiriki mbinu za udukuzi kwa kuwasilisha PRs kwa HackTricks na HackTricks Cloud repos za github.