Reversing Native Libraries
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
For further information check: https://maddiestone.github.io/AndroidAppRE/reversing_native_libs.html
एंड्रॉइड ऐप्स प्रदर्शन-क्रिटिकल कार्यों के लिए आमतौर पर C या C++ में लिखी गई नैटिव लाइब्रेरीज़ का उपयोग कर सकते हैं। मैलवेयर निर्माता भी इन लाइब्रेरीज़ का उपयोग करते हैं, क्योंकि इन्हें DEX बाइटकोड की तुलना में रिवर्स इंजीनियर करना कठिन होता है। यह अनुभाग एंड्रॉइड के लिए अनुकूलित रिवर्स इंजीनियरिंग कौशल पर जोर देता है, न कि असेंबली भाषाओं को सिखाने पर। संगतता के लिए ARM और x86 संस्करणों की लाइब्रेरीज़ प्रदान की जाती हैं।
Native Libraries in Android Apps:
प्रदर्शन-गहन कार्यों के लिए उपयोग किया जाता है।
C या C++ में लिखा गया, जिससे रिवर्स इंजीनियरिंग चुनौतीपूर्ण हो जाती है।
.so
(शेयर की गई वस्तु) प्रारूप में पाया जाता है, जो लिनक्स बाइनरी के समान है।
मैलवेयर निर्माता विश्लेषण को कठिन बनाने के लिए नैटिव कोड को प्राथमिकता देते हैं।
Java Native Interface (JNI) & Android NDK:
JNI जावा विधियों को नैटिव कोड में लागू करने की अनुमति देता है।
NDK नैटिव कोड लिखने के लिए एंड्रॉइड-विशिष्ट उपकरणों का एक सेट है।
JNI और NDK जावा (या कोटलिन) कोड को नैटिव लाइब्रेरीज़ के साथ जोड़ते हैं।
Library Loading & Execution:
लाइब्रेरीज़ को System.loadLibrary
या System.load
का उपयोग करके मेमोरी में लोड किया जाता है।
लाइब्रेरी लोड होने पर JNI_OnLoad निष्पादित होता है।
जावा द्वारा घोषित नैटिव विधियाँ नैटिव कार्यों से लिंक होती हैं, जिससे निष्पादन सक्षम होता है।
Linking Java Methods to Native Functions:
Dynamic Linking: नैटिव लाइब्रेरीज़ में कार्यों के नाम एक विशिष्ट पैटर्न से मेल खाते हैं, जिससे स्वचालित लिंकिंग की अनुमति मिलती है।
Static Linking: लिंकिंग के लिए RegisterNatives
का उपयोग करता है, जो कार्यों के नामकरण और संरचना में लचीलापन प्रदान करता है।
Reverse Engineering Tools and Techniques:
Ghidra और IDA Pro जैसे उपकरण नैटिव लाइब्रेरीज़ का विश्लेषण करने में मदद करते हैं।
JNIEnv
JNI कार्यों और इंटरैक्शन को समझने के लिए महत्वपूर्ण है।
लाइब्रेरीज़ को लोड करने, विधियों को लिंक करने और नैटिव कार्यों की पहचान करने का अभ्यास करने के लिए व्यायाम प्रदान किए जाते हैं।
Learning ARM Assembly:
अंतर्निहित आर्किटेक्चर की गहरी समझ के लिए सुझावित।
ARM Assembly Basics Azeria Labs से अनुशंसित है।
JNI & NDK Documentation:
Debugging Native Libraries:
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)