
बाइंडर ट्रेस एंड्रॉइड बाइंडर संदेशों को इंटरसेप्ट करने और पार्स करने के लिए एक टूल है। इसे "बाइंडर के लिए वायरशार्क" समझें।
Binder Trace, Android Binder संदेशों को इंटरसेप्ट और पार्स करने का एक टूल है। इसे "Binder के लिए Wireshark" समझें।

python संस्करण >= 3.9
आपको एक rooted Android डिवाइस या इम्यूलेटर की आवश्यकता होगी।
(केवल Linux) - "copy to clipboard" कार्यक्षमता के लिए xclip या xsel इंस्टॉल करें
sudo apt-get install xclip
sudo apt-get install xsel
PyPi से इंस्टॉल करें
pip install binder-trace
जाँचें कि frida का कौन सा संस्करण इंस्टॉल है (सुनिश्चित करें कि आपने आवश्यकताएँ pip से इंस्टॉल कर ली हैं)
pip list | grep frida
frida releases page से frida-server का मिलता-जुलता संस्करण डाउनलोड करें
सुनिश्चित करें कि adb root के रूप में चल रहा है, frida-server को अपने डिवाइस पर push करें और उसे चलाएँ
adb root
adb push frida-server /data/local/tmp
adb shell
chmod u+x /data/local/tmp/frida-server
/data/local/tmp/frida-server
binder trace शुरू करने के लिए हमें एक डिवाइस और एक प्रोसेस चुननी होती है जिससे अटैच किया जाए।
निम्न उदाहरण में हम स्थानीय इम्यूलेटर पर अटैच करने के लिए एक प्रोसेस की पहचान करने हेतु adb और frida-ps का उपयोग करते हैं। चूँकि यह Android 11 इम्यूलेटर है, हम Android 11 structs निर्देशिका चुनते हैं। वह struct निर्देशिका चुनें जो आपके Android संस्करण से सबसे अधिक मेल खाती हो। यदि आप Android के किसी भिन्न संस्करण के लिए structures चाहते हैं, तो कृपया हमें बताएँ। एक बार यह चलने लगे, तो कुछ binder transactions उत्पन्न करने के लिए लक्षित ऐप का उपयोग शुरू करें।
> adb devices
List of devices attached
emulator-5554 device
> frida-ps -Ua
PID Name Identifier
---- ------------- ----------------------------
8334 Messaging com.android.messaging
7941 Phone com.android.dialer
9607 Settings com.android.settings
> cd binder_trace
> binder-trace -d emulator-5554 -n Messaging -a 11
फ़िल्टर करने के लिए interface, method, type और inclusive विकल्पों में से कोई भी या सभी परिभाषित करें। किसी विकल्प का उपयोग न करने के लिए उसे "" खाली छोड़ें।
> binder-trace -d emulator-5554 -n Contacts -a 13

{
"filters": [
{
"interface": "android.gui.IDisplayEventConnection",
"method": "requestNextVsync",
"type": "",
"inclusive": false
},
{
"interface": "android.content.IContentProvider",
"method": "",
"type": "call",
"inclusive": false
}
]
}
> binder-trace -d emulator-5554 -n Contacts -a 13 -c .\binder_trace\binder_trace\config.json
android.gui.IDisplayEventConnection->requestNextVsync->"" और android.content.IContentProvider->"" ->call फ़िल्टर कर दिए गए हैं

आंतरिक binder interfaces माइनर संस्करणों के बीच बदल सकते हैं, और चूँकि यह प्रभावी रूप से सब कुछ एक साथ संकलित होता है और कोई runtime संस्करण जानकारी उपलब्ध नहीं होती, Android के अत्यधिक खंडित पारिस्थितिकी तंत्र में हर रिलीज़ के लिए 100% सटीक structure जानकारी प्रदान करना कठिन है।
Structures के अधिक विवरण structures पेज पर पाए जा सकते हैं।
| Argument | Description |
|---|
| -h | तर्क सहायता प्रिंट करता है। |
| -d DEVICE | जिस डिवाइस से अटैच करना है, जैसे "emulator-5554"। उपलब्ध डिवाइस सूचीबद्ध करने के लिए adb devices का उपयोग करें। यदि प्रदान नहीं किया गया है तो डिफ़ॉल्ट रूप से USB डिवाइस लिया जाता है। |
| -p PID | DEVICE पर उस प्रोसेस का pid जिससे अटैच करना है। |
| -n NAME | DEVICE पर अटैच करने के लिए प्रोसेस का नाम, जैसे "Messaging"। |
| -a [9, 10, 11, 12, 13, 14] | लक्षित डिवाइस का Android संस्करण। यदि कोई struct पथ प्रदान नहीं किया गया है, तो डिफ़ॉल्ट structs उपयोग किए जाते हैं। |
| -s STRUCTPATH | Structure फ़ाइलों की निर्देशिका का पथ। |
| -c CONFIG | फ़िल्टर करने के लिए कॉन्फ़िग फ़ाइल का पथ। |
| --spawn | अटैच करने से पहले प्रोसेस स्पॉन करें। -n विकल्प अवश्य मौजूद होना चाहिए और उसमें एक मान्य प्रोसेस पहचानकर्ता होना चाहिए। |
| कुंजी | क्रिया |
|---|
up | ऊपर जाएँ |
down | नीचे जाएँ |
shift + up | पेज ऊपर |
shift + down | पेज नीचे |
home | शीर्ष पर जाएँ |
end | सबसे नीचे जाएँ |
tab | अगला पैनल |
shift + tab | पिछला पैनल |
ctrl + c | पैनल को क्लिपबोर्ड पर कॉपी करें |
space | ट्रांज़ैक्शन रिकॉर्डिंग रोकें/जारी रखें |
c | साफ़ करें |
h | सहायता खोलें |
r | कॉन्फ़िग फ़ाइल फिर से लोड करें |
q | बाहर जाएँ |
| कुंजी | क्रिया |
|---|
p | क्रम asc/desc टॉगल करें |
w | अगले interface पर जाएँ |
s | पिछले interface पर जाएँ |
a | सभी फ़िल्टर चालू करें |
n | सभी फ़िल्टर बंद करें |
enter | फ़िल्टर टॉगल करें |