
एंड्रॉइड डाल्विक वीएम के लिए स्क्रिप्टेबल डिबगर जो JDWP/DDM इंटरफेस का उपयोग करके विधियों को हुक करता है, प्रक्रिया स्थिति का निरीक्षण करता है, और स्रोत कोड के बिना रनटाइम व्यवहार को संशोधित करता है।
AndBug एक डीबगर है जो एंड्रॉइड प्लेटफ़ॉर्म के Dalvik वर्चुअल मशीन को लक्षित करता है, जो रिवर्स इंजीनियरों और डेवलपर्स के लिए है। यह Android के Eclipse डीबगिंग प्लगइन, Java Debug Wire Protocol (JDWP) और Dalvik Debug Monitor (DDM) के समान इंटरफ़ेस का उपयोग करता है ताकि उपयोगकर्ता Dalvik विधियों को हुक कर सकें, प्रक्रिया स्थिति की जांच कर सकें, और यहां तक कि परिवर्तन भी कर सकें।
Google के अपने Android Software Development Kit डीबगिंग टूल्स के विपरीत, AndBug को स्रोत कोड की आवश्यकता या अपेक्षा नहीं है। हालांकि, इसके लिए Python के साथ कुछ हद तक सहजता आवश्यक है, क्योंकि यह अधिकांश गैर-तुच्छ कार्यों के लिए स्क्रिप्टेड ब्रेकपॉइंट्स की अवधारणा का उपयोग करता है, जिन्हें "हुक" कहा जाता है। (यदि आप केवल लोड की गई कक्षाओं, विधियों या थ्रेड्स को डंप करना चाहते हैं, तो इसके लिए उदाहरण स्क्रिप्ट हैं।)
-- Scott Dunlop [email protected]
AndBug बहुत ही परिवर्तनशील प्रोग्राम है, क्योंकि मैं IOActive में विभिन्न कार्यों के लिए लिखी गई एक-बार की स्क्रिप्ट को ग्राहक और IOActive-मालिकाना संदर्भों से अलग कर रहा हूँ। मैं इस समय स्थापना की अनुशंसा नहीं करता, क्योंकि आपको बाद में इसे बार-बार अपडेट करने की आवश्यकता होगी। AndBug अपनी स्रोत निर्देशिका से बहुत कम सेटअप के साथ अच्छी तरह चलता है।
Android Software Development Kit को https://developer.android.com/sdk/index.html से स्थापित करें।
सुनिश्चित करें कि Android Debugging Bridge आपके $PATH में है और उपयोग योग्य है। ::
which adb adb devices
सुनिश्चित करें कि आपके पास अपने प्लेटफ़ॉर्म के लिए एक अच्छा Python और GNU टूलचेन है। आपको GCC और Make की आवश्यकता होगी। यदि आप आदिम स्तर पर परिवर्तन करना चाहते हैं तो आप Pyrex भी चाह सकते हैं।
नवीनतम AndBug कोड https://github.com/swdunlop/AndBug.git से प्राप्त करें ::
git clone https://github.com/swdunlop/AndBug.git
Make का उपयोग करके बनाएँ ::
make
$PYTHONPATH को समायोजित करें ::
export PYTHONPATH=pwd/lib
उदाहरण sample निर्देशिका में पाए जा सकते हैं, लेकिन AndBug में पूर्व-पैकेज्ड कार्यक्षमता खोजने का सबसे आसान तरीका सीधे "andbug" कमांड का उपयोग करना है। ::
./andbug
यह कमांड वर्तमान में स्वचालित रूप से यह पता लगाने की बुद्धिमत्ता नहीं रखता कि यह स्रोत निर्देशिका से चल रहा है और उसके अनुसार PYTHONPATH को गतिशील रूप से अपडेट कर सके। आपको यह सुनिश्चित करना होगा कि PYTHONPATH में आपका andbug/lib निर्देशिका शामिल है।
Q: AndBug का उपयोग करने का प्रयास करते समय मुझे "Permission Denied" मिलता है, लेकिन "adb shell" काम करता है।
A: आपका adbd संभवतः किसी अन्य उपयोगकर्ता के रूप में चल रहा है, जो ADB फ़ॉरवर्ड के प्रभावी उपयोग को अवरुद्ध कर रहा है। सही प्रभावी उपयोगकर्ता के साथ "adb kill-server" और फिर "adb start-server" का उपयोग करें।
Q: AndBug का उपयोग करने का प्रयास करते समय मुझे "Shell Exception" मिलता है।
A: सुनिश्चित करें कि आपका ADB सेटअप "adb devices" का उपयोग करके काम कर रहा है -- AndBug एक JDWP परिवहन के लिए ADB पर निर्भर करता है।
Q: क्या AndBug Windows पर काम करता है?
A: मुझे ऐसा लगता है; लेकिन चूंकि AndBug असमर्थित सॉफ़्टवेयर है, आप Windows उपयोगकर्ताओं की अपेक्षा से कम मार्गदर्शन का अनुभव कर सकते हैं। पैच का स्वागत है।
Q: क्या AndBug Mac OS X पर काम करता है?
A: हाँ, लेकिन Windows उपयोगकर्ताओं के बारे में व्यंग्य देखें। आपको यह ऐप स्टोर में नहीं मिला..
Q: Navi मुझे RequestError 13 देता है।
A: आपने प्रक्रिया फिर से शुरू कर दी है; Navi केवल निलंबित प्रक्रियाओं के साथ सुरक्षित रूप से बातचीत कर सकता है। फिर से "suspend" का उपयोग करें।
Q: कमांड भेजते समय मुझे "EOF in read" मिलता है।
A: सुनिश्चित करें कि कोई अन्य डीबगर कनेक्ट न हो, जैसे DDMS।
कॉपीराइट 2011, IOActive। सर्वाधिकार सुरक्षित।
AndBug मुफ्त सॉफ्टवेयर है: आप इसे पुनर्वितरित कर सकते हैं और/या Free Software Foundation द्वारा प्रकाशित GNU Lesser General Public License के संस्करण 3 की शर्तों के तहत इसे संशोधित कर सकते हैं।
AndBug इस उम्मीद में वितरित किया जाता है कि यह उपयोगी होगा, लेकिन बिना किसी वारंटी के; व्यापारिकता या किसी विशेष उद्देश्य के लिए उपयुक्तता की निहित वारंटी के बिना भी। अधिक जानकारी के लिए GNU Lesser General Public License देखें।
आपको AndBug के साथ GNU Lesser General Public License की एक प्रति प्राप्त हुई होगी। यदि नहीं, तो http://www.gnu.org/licenses/ देखें।