Skip to content
KitploitKITPLOIT
उपकरणब्लॉग
जमा करें
उपकरणब्लॉग
जमा करें

हैकिंग, पेनटेस्ट और साइबर सुरक्षा उपकरण आपके सुरक्षा शस्त्रागार के लिए!

Kitploit हैकिंग, साइबर सुरक्षा और पेंटेस्टिंग टूल्स की एक निर्देशिका है। कमजोरियों को खोजने, सिस्टम का विश्लेषण करने, परीक्षण को स्वचालित करने और अपनी सुरक्षा को मजबूत करने के लिए नवीनतम प्रोजेक्ट अपडेट खोजें।

··फ़ीड·संपर्क·गोपनीयता·© 2026 Kitploit

टूल निर्देशिका

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
AudioServer-Voip-Recorder — 🔬 व्हॉट्सऐप, सिग्नल और टेलीग्राम पर परीक्षित एवं निर्मित, Android 14 पर libaudioflinger.so को डाइनैमिक रूप से हुक करके रियल-टाइम VoIP ऑडियो कैप्चर (Uplink/Downlink) के लिए एक उन्नत Android अनुसंधान उपकरण। | Kitploit
उपकरण/GitHubGitHub/nighthawkk/audioserver-voip-recorder
एंड्रॉइड सुरक्षारिवर्स इंजीनियरिंगमोबाइल सुरक्षा
GitHubnighthawkk/audioserver-voip-recorder

AudioServer-Voip-Recorder

🔬 व्हॉट्सऐप, सिग्नल और टेलीग्राम पर परीक्षित एवं निर्मित, Android 14 पर libaudioflinger.so को डाइनैमिक रूप से हुक करके रियल-टाइम VoIP ऑडियो कैप्चर (Uplink/Downlink) के लिए एक उन्नत Android अनुसंधान उपकरण।

रिपॉजिटरी देखें

सबसे लोकप्रिय

सभी देखें →

हमारे समुदाय द्वारा सबसे अधिक उपयोग किए जाने वाले उपकरण खोजें।

सभी उपकरण खोजें

हमारे उपकरणों का संग्रह ब्राउज़ करें

सभी उपकरण देखें →
साझा करें
9घं 29मि पहलेअभी तक समीक्षित नहीं

लक्ष्य: जब सिस्टम संचार मोड में हो तो Android के audioserver (विशेष रूप से libaudioflinger.so) को हुक करके VoIP स्ट्रीम कैप्चर का प्रदर्शन करना और अपलिंक (माइक) और डाउनलिंक (स्पीकर) PCM बफ़र्स रिकॉर्ड करना।

परियोजना डिज़ाइन और कार्यप्रणाली

आर्किटेक्चर:

  • कंट्रोलर ऐप (Android)
    SELINUX पॉलिसी सेटअप, पेलोड इंजेक्शन, डेटा स्थानांतरण और प्लेबैक प्रबंधित करने के लिए 9 बटनों वाला UI।

  • पेलोड (libaudiohook.so)
    C++ शेयर्ड लाइब्रेरी (ऐप प्रोजेक्ट के हिस्से के रूप में बनाई गई) जो Dobby का उपयोग करके आंतरिक AudioFlinger विधियों को हुक करती है और कच्चे PCM बफ़र्स को सत्र निर्देशिका में लिखती है।

  • पोस्ट-प्रोसेसिंग
    अतिरिक्त टूल, tools/audioparser.py कच्ची .ac(Downlink)/.bc(Uplink) फ़ाइलों को WAV में परिवर्तित करता है। ऐप का फ़ाइल मैनेजर भी इन-ऐप कन्वर्ट और प्ले कर सकता है।

  • रिसर्च उपयोगिताएँ
    प्रारंभिक फ़ंक्शन ट्रेसिंग और ऑफ़सेट खोज के लिए Frida स्क्रिप्ट्स; सिंबल/ऑफ़सेट और अन्य स्निपेट्स के लिए विश्लेषण फ़ाइलें।

कंट्रोलर ऐप

यह Android एप्लिकेशन audioserver के माध्यम से VoIP रिकॉर्डिंग प्रबंधित करने के लिए एक ग्राफिकल इंटरफ़ेस प्रदान करता है। यह एक नेटिव पेलोड के साथ एकीकृत होता है जो VoIP एप्लिकेशन से माइक्रोफ़ोन और स्पीकर ऑडियो कैप्चर करने के लिए Android ऑडियो स्टैक को हुक करता है।

यह ऐप एक कंट्रोल सेंटर के रूप में कार्य करता है, जो आपको आवश्यक SELinux पॉलिसियाँ इंजेक्ट करने, मॉनिटरिंग शुरू/बंद करने, रिकॉर्ड किए गए डेटा को प्रबंधित करने और कैप्चर की गई VoIP ऑडियो फ़ाइलों को चलाने की सुविधा देता है।

विशेषताएँ

मुख्य एक्टिविटी में 9 कंट्रोल बटन होते हैं:

  1. पॉलिसी इंजेक्ट करें
    audioserver और इस ऐप को एक साथ काम करने के लिए आवश्यक SELinux पॉलिसियाँ इंजेक्ट करता है।

  2. मॉनिटरिंग शुरू करें
    audioserver में शेयर्ड लाइब्रेरी पेलोड इंजेक्ट करता है, RecordTrack और PlaybackTrack को हुक करके VoIP ऑडियो कैप्चर सक्षम करता है। प्रोसेस इंजेक्शन के लिए AndKittyInjector का उपयोग करता है।

  3. मॉनिटरिंग बंद करें
    audioserver प्रोसेस को पुनः प्रारंभ करता है, मॉनिटरिंग रोकता है और इंजेक्ट किए गए हुक्स को हटाता है।

  4. डेटा कॉपी करें
    कैप्चर किए गए कच्चे PCM ऑडियो को अस्थायी निर्देशिका /data/local/tmp/voip से /sdcard/voip में कॉपी करता है।

    • बाद में अस्थायी निर्देशिका को साफ़ करता है।
  5. लॉग देखें
    इंजेक्शन, हुकिंग और रिकॉर्डिंग स्थिति से संबंधित लॉग प्रदर्शित करता है।

  6. SELinux सक्षम करें
    SELinux को enforcing मोड में पुनर्स्थापित करता है।

  7. SELinux अक्षम करें
    SELinux को permissive मोड में सेट करता है, इंजेक्ट की गई पॉलिसियाँ विफल होने पर उपयोग करें।

  8. ऑडियो चलाएँ
    कस्टम VoIP फ़ाइल मैनेजर (/sdcard/voip/) खोलता है:

root@kitploit:~
+----------------------+    
|                      |    
|   App MainActivity   |    
|                      |    
|                      |    
|(9 Control Buttons UI)|    
|                      |    
|                      |    
+----------+-----------+    
           |                
           |                
           |                
+----------v-----------+    
|                      |    
|       JNI Layer      |    
|                      |    
| Selinux, Process Inje|    
| ction,               |    
|                      |    
|                      |    
+----------------------+    

हुकिंग पेलोड

यह शेयर्ड लाइब्रेरी AUDIO_MODE_IN_COMMUNICATION का पता लगाने और पूर्वनिर्धारित पैकेज नामों के सेट के लिए Android के ऑडियो स्टैक से सीधे VoIP ऑडियो स्ट्रीम कैप्चर करने हेतु audioserver में इंजेक्ट की जाती है।

यह libaudioflinger.so के अंदर महत्वपूर्ण विधियों को इंटरसेप्ट करने के लिए Dobby इनलाइन हुकिंग फ्रेमवर्क का उपयोग करता है।
अपलिंक (माइक्रोफ़ोन) और डाउनलिंक (स्पीकर) दोनों ऑडियो स्ट्रीम कैप्चर की जाती हैं और बाद में प्रोसेसिंग के लिए सत्र फ़ाइलों में लिखी जाती हैं।

हुकिंग पॉइंट्स

लाइब्रेरी AudioFlinger और संबंधित क्लासेस के अंदर निम्नलिखित फ़ंक्शनों पर हुक्स स्थापित करती है:

लक्षित एप्लिकेशन

लाइब्रेरी UID → पैकेज मैपिंग के आधार पर स्ट्रीम फ़िल्टर करती है।

वर्तमान में मॉनिटर किए जाने वाले ऐप्स:

  • com.whatsapp
  • com.whatsapp.w4b (WhatsApp Business)
  • org.thoughtcrime.securesms (Signal)
  • org.telegram.messenger
  • org.telegram.messenger.web

आप audioserver_hook.cpp के अंदर अन्य एप्लिकेशन भी जोड़ सकते हैं:

root@kitploit:~
static const char* kTargetPackages[] = {  
    "com.whatsapp",  
    "com.whatsapp.w4b",  
    "org.thoughtcrime.securesms",  
    "org.telegram.messenger",  
    "org.telegram.messenger.web"  
};

फ़ाइल आउटपुट

  • सत्र निर्देशिका इंजेक्शन के समय audioserver में इस पथ के अंतर्गत बनाई जाती है: /data/local/tmp/voip/audioserver_session_<timestamp>/

  • फ़ाइलें पहले .tmp एक्सटेंशन के साथ बनाई जाती हैं, फिर ट्रैक रुकने पर उनका नाम बदल दिया जाता है:

    • अपलिंक (माइक) → <packageName>_<sampleRate>_<timestamp>.bc
    • डाउनलिंक (स्पीकर) → <packageName>_<sampleRate>_<timestamp>.ac
  • उदाहरण सत्र:

root@kitploit:~
	/data/local/tmp/voip/audioserver_session_1725389200/
	├── com.whatsapp_48000_1725389201_123456.ac
	├── com.whatsapp_48000_1725389201_123789.bc
	

ऑफ़सेट्स

चूँकि लक्षित लाइब्रेरी stripped है और libaudioflinger.so में विधियाँ निर्यात (exported) नहीं हैं, इसलिए सफल हुकिंग के लिए हमें विधियों और अन्य संबंधित घटकों के सटीक ऑफ़सेट की आवश्यकता होती है।

हम उन ऑफ़सेट्स को IDA-PRO का उपयोग करके स्टैटिक विश्लेषण से या frida का उपयोग करके डायनामिक विश्लेषण से निकाल सकते हैं। ऑफ़सेट्स ज्ञात होने के बाद हम उन्हें offsets.h हेडर फ़ाइल के अंदर बदल सकते हैं।

आवश्यक ऑफ़सेट्स:
विधियाँ:
  1. AUDIOFLINGER_SETMODE_OFFSET
    • विधि: android::AudioFlinger::setMode(audio_mode_t)
    • मैंगल्ड नाम: _ZN7android12AudioFlinger7setModeE11audio_mode_t
  2. RECORDTRACK_GETNEXTBUFFER_OFFSET
    • विधि: android::AudioFlinger::RecordThread::RecordTrack::getNextBuffer(android::AudioBufferProvider::Buffer *)
    • मैंगल्ड नाम: _ZN7android12AudioFlinger12RecordThread11RecordTrack13getNextBufferEPNS_19AudioBufferProvider6BufferE
  3. TRACK_GETNEXTBUFFER_OFFSET
    • विधि: android::AudioFlinger::PlaybackThread::Track::getNextBuffer(android::AudioBufferProvider::Buffer *)
    • मैंगल्ड नाम: _ZN7android12AudioFlinger14PlaybackThread5Track13getNextBufferEPNS_19AudioBufferProvider6BufferE
  4. TRACK_STOP_OFFSET
    • विधि: android::AudioFlinger::PlaybackThread::Track::stop(void)
    • मैंगल्ड नाम: _ZN7android12AudioFlinger14PlaybackThread5Track4stopEv
अन्य ऑफ़सेट्स:
  1. SAMPLERATE_OFFSET
  2. UID_OFFSET
  3. ISOUT_OFFSET
  4. FORMAT_OFFSET
  5. CHANNELMASK_OFFSET
  6. ATTR_OFFSET

ये स्टैटिक विश्लेषण से प्राप्त किए जा सकते हैं।

  • लाइब्रेरी - libaudioflinger.so
  • विधि - android::AudioFlinger::ThreadBase::TrackBase::TrackBase
root@kitploit:~
TrackBase::TrackBase(
        IAfThreadBase *thread,
            const sp<Client>& client,
            const audio_attributes_t& attr,
            uint32_t sampleRate,
            audio_format_t format,
            audio_channel_mask_t channelMask,
            size_t frameCount,
            void *buffer,
            size_t bufferSize,
            audio_session_t sessionId,
            pid_t creatorPid,
            uid_t clientUid,
            bool isOut,
            const alloc_type alloc,
            track_type type,
            audio_port_handle_t portId,
            std::string metricsId)

नोट्स

  • केवल IN_COMMUNICATION मोड कैप्चर किया जाता है। सामान्य ऑडियो (संगीत, रिंगटोन, आदि) को अनदेखा किया जाता है।
  • Telegram और Signal के लिए विशेष हैंडलिंग सही सैंपल रेट (Telegram: 48000 Hz, Signal: 8000 Hz) लागू करती है ताकि फ़ोन रिंग और फ़ोन डिस्कनेक्ट ध्वनियों जैसे अन्य अनावश्यक ऑडियो को अनदेखा किया जा सके।
  • PCM कच्चा (raw) संग्रहीत किया जाता है; कंट्रोलर ऐप बाद में प्लेबैक के लिए PCM → WAV परिवर्तित करता है।
root@kitploit:~
 ┌─────────────────────────────┐
 │        VoIP Apps            │
 │  (WhatsApp / Signal / TG)   │
 └───────────────┬─────────────┘
                 │ Audio in/out
                 ▼
 ┌─────────────────────────────┐
 │       audioserver           │
 │  (libaudioflinger.so)       │
 └───────┬─────────┬───────────┘
         │         │
   uplink│         │downlink
 (mic)   │         │(speaker)
         ▼         ▼
 ┌───────────-──┐   ┌────────────-─┐
 │ RecordTrack  │   │  Track       │
 │ getNextBuffer│   │ getNextBuffer│
 └───────┬────-─┘   └───────┬────-─┘
         │                 │
   ┌─────▼─────┐     ┌─────▼─────┐
   │ hook_...  │     │ hook_...  │
   │ (uplink)  │     │ (downlink)│
   └─────┬─────┘     └─────┬─────┘
         │                 │
         └──────┬───┬──────┘
                │   │
                ▼   ▼
     ┌───────────────────────────┐
     │  /data/local/tmp/voip/    │
     │  audioserver_session_*    │
     │   - *.bc  (uplink)        │
     │   - *.ac  (downlink)      │
     └───────────────────────────┘

लक्षित फ़ंक्शन पहचान

उपयोग की गई प्रक्रिया:

  1. डायनामिक ट्रेसिंग - Frida:
    • VoIP कॉल के दौरान सभी फ़ंक्शन कॉल्स को ट्रेस करने के लिए Frida का उपयोग किया
    • ऑडियो बफ़र्स हैंडलिंग के लिए ज़िम्मेदार सभी फ़ंक्शनों को फ़िल्टर किया।
    • फिर ऑडियो बफ़र्स को कैप्चर और हैंडल करने के लिए Frida स्क्रिप्ट्स बनाईं।
  2. AOSP समीक्षा और क्लास मैपिंग
    • AudioFlinger PlaybackThread और RecordThread के माध्यम से प्लेबैक/कैप्चर प्रबंधित करता है।
    • प्रति-क्लाइंट ऑडियो PlaybackThread::Track (डाउनलिंक) और RecordThread::RecordTrack (अपलिंक) द्वारा दर्शाया जाता है।
  3. ऐप-विशिष्ट स्ट्रीम्स में फ़िल्टरिंग
    • लक्षित ऐप्स तक सीमित करने के लिए UID→पैकेज मैपिंग का उपयोग किया।
  4. स्थिरता और ऑफ़सेट्स
    • अंतिम नेटिव पेलोड stripped सिंबल्स से बचने के लिए base + हार्डकोडेड ऑफ़सेट्स (app/src/main/cpp/include/offsets.h में रखे गए) के माध्यम से एड्रेस हल करता है।

MODE_IN_COMMUNICATION का पता लगाना

हम AudioFlinger::setMode(int mode) को हुक करते हैं और एक ग्लोबल स्टेट बनाए रखते हैं:

  • प्रत्येक कॉल पर, हम मोड परिवर्तन लॉग करते हैं और g_currentAudioMode को अपडेट करते हैं।
  • हुक्स (माइक और स्पीकर दोनों हुक्स में) जाँचते हैं कि g_currentAudioMode == AUDIO_MODE_IN_COMMUNICATION।
  • यह सुनिश्चित करता है कि हम केवल VoIP सत्र सक्रिय रहने पर ही बफ़र्स डंप करें, जिससे संगीत/रिंगटोन/डिवाइस प्लेबैक/माइक रिकॉर्डिंग आदि से बचा जा सके।

PoC का निर्माण और चलाना

प्रोजेक्ट संरचना

root@kitploit:~
.
├── Android_App/ 
|   ├── app/                           # Android Studio project (App + Payload)
|	│   ├── src/
|	│   │   ├── main/
|	│   │   │   ├── java/              # Controller App Java/Kotlin sources
|	│   │   │   ├── cpp/               # Payload source (built with the app)
|	│   │   │   │   └── include/
|	│   │   │   │       └── offsets.h  # Function offsets for tested builds
├── tools/
│   ├── audioparser.py             # Converts .ac/.bc raw files → WAV
│   ├── frida/                     # Frida scripts for initial hook discovery
│   │   ├── host_audioserver.py
│   │   ├── agent_audioserver.js
├── app-release.apk                 # Signed release apk
└── README.md                       # Root README (design, build, run instructions)

पूर्वापेक्षाएँ

  • Android Studio + NDK
  • रूटेड एमुलेटर (जैसे, rootAVD) या आपके स्वामित्व वाला टेस्ट डिवाइस (जैसे, Magisk)
  • टेस्ट VoIP ऐप्स इंस्टॉल हों (वही जिनके आप स्वामी/प्रशासक हैं)
  • audioparser.py के लिए Python

ऐप बनाएँ (जो पेलोड भी बनाता है)

  1. Android Studio में app/ खोलें।
  2. सुनिश्चित करें कि NDK इंस्टॉल है (SDK Manager → SDK Tools → NDK)।
  3. Debug वैरिएंट बनाएँ। Gradle/CMake कॉन्फ़िग प्रोजेक्ट के हिस्से के रूप में नेटिव पेलोड (libaudiohook.so) को कंपाइल करेगा।

टेस्ट टार्गेट पर इंस्टॉल करें

adb install -r app/build/outputs/apk/debug/app-debug.apk या प्रदान की गई app-release.apk इंस्टॉल करें: adb install -r app-release.apk

यदि आप आर्टिफैक्ट्स अलग करते हैं, तो आप परीक्षण के लिए शेयर्ड लाइब्रेरी भी पुश कर सकते हैं: adb push app/src/main/jniLibs/arm64-v8a/libaudiohook.so /data/local/tmp/

PoC चलाएँ (एमुलेटर/स्वामित्व वाला डिवाइस)

  1. कंट्रोलर ऐप लॉन्च करें -> संकेत मिलने पर रूट अनुमति दें।
  2. "इंजेक्ट पॉलिसीज़" पर टैप करें
    आपके टेस्ट वातावरण में ऐप और audioserver इंटरैक्शन के लिए आवश्यक SELinux नियम तैयार करता है।
  3. "मॉनिटरिंग शुरू करें" पर टैप करें
    ऐप audioserver में पेलोड इंजेक्ट करने के लिए AndKittyInjector का उपयोग करता है।
  4. एक टेस्ट VoIP कॉल करें (जैसे, अपने स्वयं के WhatsApp/Signal/Telegram खाते से)।
  5. "मॉनिटरिंग बंद करें" पर टैप करें
    audioserver को पुनः प्रारंभ करता है।
  6. "डेटा कॉपी करें" पर टैप करें
    सत्र फ़ाइलों को /data/local/tmp/voip/… से /sdcard/voip/ में स्थानांतरित करता है (और अस्थायी निर्देशिका साफ़ करता है)।
  7. प्लेबैक
    • इन-ऐप: "ऑडियो चलाएँ" PCM -> WAV परिवर्तित करके चलाता है।
    • या ऑफ़लाइन:
      root@kitploit:~
       adb pull /sdcard/voip/
      python3 tools/audioparser.py voip/
      

अतिरिक्त बटन:

  • "लॉग देखें": इंजेक्टर/हुक स्थिति देखें।
  • "SELinux सक्षम करें" / "SELinux अक्षम करें": यदि पॉलिसियाँ बहुत सख्त हों तो अपनी प्रयोगशाला में enforcing/permissive टॉगल करें।
  • "डेटा हटाएँ": /data/local/tmp/voip/ और /sdcard/voip/ दोनों साफ़ करें।

परीक्षण किए गए संस्करण और डिवाइस

  • एमुलेटर: AVD API 34 (x86_64) - Android 14 - rootAVD से रूटेड
  • डिवाइस: Samsung Galaxy S22 (ARM64) - Android 14 - बिल्ड S901EXXSCEYB1 - Magisk से रूटेड

परीक्षण किए गए ऐप्स

  • Whatsapp
  • Whatsapp Business
  • Signal
  • Telegram

उल्लेखनीय चुनौतियाँ और समाधान

  1. Stripped सिंबल्स
    • समस्या: सिंबल्स को dlsym के माध्यम से सीधे स्थित नहीं किया जा सकता।
    • समाधान: स्टैटिक विश्लेषण से ऑफ़सेट्स का उपयोग करें।
  2. बिल्ड्स में भिन्न सिंबल/ऑफ़सेट
    • समस्या: Stripped सिंबल्स बिल्ड के अनुसार बदलते हैं; सीधा dlsym विफल हो सकता है।
    • समाधान: परीक्षण किए गए बिल्ड्स के लिए base + हार्डकोडेड ऑफ़सेट्स (offsets.h) का उपयोग करें, जिन्हें Frida सिंबल डंप्स और IDA-PRO से मान्य किया गया है।
  3. मोड डिटेक्शन सटीकता
    • समस्या: VoIP सत्रों के बाहर रिकॉर्डिंग करने से शोरग्रस्त डेटा प्राप्त होता है।
    • समाधान: AudioFlinger::setMode(IN_COMMUNICATION) पर हुक्स कैप्चर करते हैं; संक्रमणों को लॉग करते हैं; एक ग्लोबल मोड फ्लैग संग्रहीत करते हैं।
  4. SELinux
    • समस्या: अस्थायी निर्देशिकाओं में लेखन और audioserver के साथ IPC अवरुद्ध हो सकते हैं।
    • समाधान: आवश्यक नियम जोड़ने के लिए Inject Policies (पॉलिसी इंजेक्ट करें) चरण प्रदान करें; टेस्ट वातावरण में डिबगिंग के लिए Enable/Disable SELinux टॉगल्स उपलब्ध कराएँ।
  5. फ़ाइल लाइफसाइकिल और नामकरण
    • समस्या: थ्रेड रुकने पर आंशिक/दूषित आउटपुट से बचना।
    • समाधान: पहले .tmp में लिखें; stop() पर (डाउनलिंक) या (अपलिंक) में नाम बदलें।

संदर्भ (ओपन-सोर्स और दस्तावेज़)

  • Dobby (इनलाइन हुकिंग फ्रेमवर्क) - https://www.github.com/jmpews/Dobby
  • AndKittyInjector (Android प्रोसेस इंजेक्टर) - https://github.com/MJx0/AndKittyInjector
  • AOSP
    • frameworks/av/services/audioflinger (AudioFlinger, PlaybackThread, RecordThread)
    • system/media/audio (ऑडियो प्रारूप, एट्रिब्यूट्स, चैनल मास्क)
टूल डाउनलोड करें
  • कच्ची PCM फ़ाइलों को मेमोरी में WAV प्रारूप में परिवर्तित करता है।
  • परिवर्तित ऑडियो को सीधे इन-ऐप चलाता है।
  • डेटा हटाएँ
    /data/local/tmp/voip और /sdcard/voip दोनों से सभी ऑडियो डेटा हटाता है। नोट: डेटा हटाने के बाद, डेटा सहेजने के लिए निर्देशिका निर्माण हेतु audioserver में पुनः इंजेक्ट करना आवश्यक है।

  • Functionउद्देश्य
    AudioFlinger::setModeIN_COMMUNICATION मोड (VoIP सक्रिय) में/से संक्रमणों को ट्रैक करता है।
    RecordTrack::getNextBufferमाइक्रोफ़ोन (अपलिंक) ऑडियो फ्रेम्स कैप्चर करता है।
    PlaybackThread::Track::getNextBufferस्पीकर (डाउनलिंक) ऑडियो फ्रेम्स कैप्चर करता है।
    Track::stopडाउनलिंक फ़ाइल बंद और अंतिम रूप देता है।
    RecordTrack::stopअपलिंक फ़ाइल बंद और अंतिम रूप देता है।
  • RECORDTRACK_STOP_OFFSET
    • विधि: android::AudioFlinger::RecordThread::RecordTrack::stop(void)
    • मैंगल्ड नाम: _ZN7android12AudioFlinger12RecordThread11RecordTrack4stopEv
  • .ac
    .bc
  • libaudioflinger.so में PLT हुक्स नहीं
    • समस्या: लक्षित फ़ंक्शन (RecordTrack::getNextBuffer, Track::getNextBuffer, आदि) exported नहीं हैं और libaudioflinger.so में उनके लिए PLT/GOT एंट्रीज़ नहीं हैं।
      • हम मानक dlsym() या PLT-आधारित हुकिंग तंत्र का उपयोग नहीं कर सके।
    • समाधान: हमने इनलाइन फ़ंक्शन हुकिंग के लिए Dobby का उपयोग किया।
      • हुक्स रनटाइम पर निम्न सूत्र का उपयोग करके स्थापित किए जाते हैं:
        root@kitploit:~
        target_addr = base_addr(libaudioflinger) + offset
        DobbyHook(target_addr, hook_fn, &orig_fn)