1 पॉइंट द्वारा GN⁺ 2025-02-19 | 1 टिप्पणियां | WhatsApp पर शेयर करें

डीबग न किए जा सकने वाले ऐप की डीबगिंग

  • हाल ही में एक ऐसा ऐप मिला जिसे डीबग करना संभव नहीं था। यह ऐप debugger कनेक्शन को ब्लॉक करता है, code injection होने पर जल्दी बंद हो जाता है, और jailbreak किए गए डिवाइस पर चलाने पर पूरे फोन को crash कर देता है।
  • iOS ऐप्स में अक्सर jailbreak detection या code obfuscation जैसी अतिरिक्त सुरक्षा शामिल होती है। यह ऐप खास तौर पर कई सुरक्षा परतों को साथ में जोड़ता है।

वीडियो संस्करण

  • इस पोस्ट का एक वीडियो संस्करण भी है, जो प्रक्रिया को और अधिक विस्तार से दिखाता है।

विषय सूची

  • PT_DENY_ATTACH
  • PT_DENY_ATTACH बायपास (आसान मोड)
  • PT_DENY_ATTACH बायपास (कठिन मोड)
  • फोन crash
  • code injection
  • समापन

PT_DENY_ATTACH

  • debugger को कनेक्ट करना पहला कदम है। jailbreak किए गए फोन पर आमतौर पर debugger कनेक्ट करना आसान होता है।
  • ptrace नाम का एक फ़ंक्शन debugger कनेक्शन को ब्लॉक करता है। यह फ़ंक्शन PT_DENY_ATTACH request के ज़रिए debugger के भविष्य के कनेक्शन को रोक देता है।

PT_DENY_ATTACH बायपास (आसान मोड)

  • PT_DENY_ATTACH कॉल होने के बाद ही debugger को ब्लॉक करता है। अगर कॉल से पहले breakpoint सेट कर दिया जाए, तो debugger सामान्य रूप से कनेक्ट हो जाता है।
  • ptrace फ़ंक्शन पर ही breakpoint सेट करके इस कॉल को बायपास किया जा सकता है।

PT_DENY_ATTACH बायपास (कठिन मोड)

  • कुछ डेवलपर ptrace की जगह सीधे system call का उपयोग करके debugger ब्लॉकिंग लागू करते हैं।
  • इस स्थिति में, binary में उस system call को ढूंढकर उसे बायपास करना पड़ता है।

फोन crash

  • ऐप कुछ खास परिस्थितियों में फोन को soft reboot करा देता है। यह memory-intensive methods को infinite loop में कॉल करने की वजह से होता है।
  • lldb का उपयोग करके इस method को बायपास किया जा सकता है।

code injection

  • code injection के समय ऐप crash हो जाता है। संभव है कि यह app group identifier गलत होने की वजह से होने वाली समस्या हो।
  • jailbreak किए गए फोन पर ऐप को दोबारा sign किए बिना भी code inject किया जा सकता है। अन्य स्थितियों में method swizzling करके इस समस्या को हल किया जा सकता है।

1 टिप्पणियां

 
GN⁺ 2025-02-19
Hacker News राय
  • Bryce Bostwick debugging और reverse engineering apps में बहुत शानदार और प्रेरक काम करते हैं

    • उनके YouTube वीडियो में TikTok को इस तरह modify करने का तरीका देखकर प्रेरणा मिली कि वह सिर्फ cat videos दिखाए; उसी से प्रेरित होकर Instagram को इस तरह modify किया कि उसमें सिर्फ messaging feature रहे और बाकी सब हट जाए
    • Windows को Windhawk style में modify करने में रुचि है
    • Bryce iOS पर real-time step-by-step वीडियो के ज़रिए ऐसे काम दिखाते हैं
  • DOS/Windows में anti-debugging tricks बहुत पहले से आम रही हैं

    • user control की आसानी platform की user-hostility के व्युत्क्रमानुपाती होती है
    • PT_DENY_ATTACH बाद वाली चीज़ के लिए एक feature लगता है
    • Windows में एक trick है जिसमें app खुद से attach हो जाती है
  • यह हैरानी की बात है कि Apple का App Store review direct system calls करने वाले apps को reject नहीं करता

    • Apple platforms पर system calls कोई stable ABI नहीं हैं, इसलिए उन्हें libSystem के ज़रिए जाना चाहिए
    • direct system calls करने वाले apps वही काम कर रहे होते हैं जो उन्हें नहीं करना चाहिए
  • यह जानने की जिज्ञासा है कि लेखक ने mov w16, #26 की जगह svc 0x80 क्यों search किया

  • लेखक सवालों के जवाब देने के लिए तैयार हैं

  • ऊपर का वीडियो बहुत शानदार programming वीडियो है

    • तेज़ रफ्तार, ज्ञान के स्तर के बारे में सही अनुमान, और बेहतरीन demos flow को बाधित नहीं करते
  • यह जानने की जिज्ञासा है कि यह app एक वैध app है या malware समझकर debug किया गया था

    • अगर ऐसा नहीं था, तो इसमें काफ़ी मेहनत लगी होगी
  • PT_DENY_ATTACH bypass (Hard Mode)

    • macOS पर kernel patch करके PT_DENY_ATTACH को बेअसर कर देना
    • macOS पर patched kernel चलाना आसान है
    • iOS पर और ज़्यादा समस्याएँ होंगी (KTRR आदि)
    • XNU तकनीकी रूप से open source है, लेकिन उसे recompile करने से hexeditor से patch करना आसान था
  • com.apple.tw.twrr notification के बारे में जिज्ञासा है

    • यह com.apple से क्यों शुरू होता है
    • वह app कोई Apple app नहीं है
  • यह जानने की जिज्ञासा है कि क्या लोग websites के JavaScript code का reverse engineering करते हैं

  • यह जानने की जिज्ञासा है कि क्या jailbroken iPhone पर custom kexts चलाए जा सकते हैं

    • kernel को खुद modify करना ज़्यादा शानदार तरीका है