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

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

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

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

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

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
Ponce — IDA 2016 प्लगइन प्रतियोगिता विजेता! प्रतीकात्मक निष्पादन बस एक क्लिक दूर! | Kitploit
उपकरण/GitHubGitHub/illera88/ponce
रिवर्स इंजीनियरिंगडीबगर्समालवेयर विश्लेषणCTFबाइनरी विश्लेषण
GitHubillera88/ponce

Ponce

IDA 2016 प्लगइन प्रतियोगिता विजेता! प्रतीकात्मक निष्पादन बस एक क्लिक दूर!

रिपॉजिटरी देखें
1.6k851 साल पहलेKitploit द्वारा समीक्षित

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

सभी देखें →

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

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

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

सभी उपकरण देखें →
साझा करें
वेबसाइट

Build for Windows Build for OSX Build for Linux

पोन्से

पोन्से (उच्चारण [ 'poN θe ] पॉन-दे) एक IDA Pro प्लगइन है जो उपयोगकर्ताओं को बाइनरी पर आसान और सहज तरीके से टेंट विश्लेषण और सिंबॉलिक निष्पादन करने की क्षमता प्रदान करता है। पोन्से के साथ, आप अत्याधुनिक सिंबॉलिक निष्पादन की सारी शक्ति से एक क्लिक दूर हैं। पूरी तरह से C/C++ में लिखा गया।

क्यों?

सिंबॉलिक निष्पादन सुरक्षा समुदाय में कोई नई अवधारणा नहीं है। यह कई वर्षों से मौजूद है, लेकिन 2015 के आसपास ही Triton और Angr जैसी ओपन सोर्स परियोजनाएँ इस आवश्यकता को पूरा करने के लिए बनाई गईं। इन परियोजनाओं की उपलब्धता के बावजूद, अंतिम उपयोगकर्ताओं को अक्सर स्वयं विशिष्ट उपयोग के मामलों को लागू करना पड़ता है।

हमने पोन्से बनाकर इन आवश्यकताओं को संबोधित किया, जो एक IDA प्लगइन है जो रिवर्स इंजीनियरों के लिए सबसे अधिक उपयोग किए जाने वाले डिस्सेम्बलर/डीबगर में सिंबॉलिक निष्पादन और टेंट विश्लेषण लागू करता है।

स्थापना

पोन्से किसी भी IDA संस्करण >= 7.0 में x86 और x64 बाइनरी दोनों के साथ काम करता है। प्लगइन स्थापित करना उतना ही सरल है जितना कि नवीनतम बिल्ड से उपयुक्त फ़ाइलों को अपने IDA इंस्टॉलेशन डायरेक्टरी में plugins\ फ़ोल्डर में कॉपी करना।

सुनिश्चित करें कि आप अपने IDA संस्करण के लिए संकलित पोन्से बाइनरी का उपयोग कर रहे हैं ताकि कोई असंगति न हो।

OS समर्थन

पोन्से विंडोज, लिनक्स और OSX पर मूल रूप से काम करता है!

उपयोग के मामले

  • एक्सप्लॉइट विकास: पोन्से एक्सप्लॉइट डेवलपर को अधिक कुशल तरीके से एक्सप्लॉइट बनाने में मदद कर सकता है, क्योंकि डेवलपर आसानी से देख सकता है कि मेमोरी के कौन से भाग और कौन से रजिस्टर नियंत्रण में हैं, साथ ही संभावित पते जिन्हें ROP गैजेट के रूप में उपयोग किया जा सकता है।
  • मैलवेयर विश्लेषण: पोन्से का एक अन्य उपयोग मैलवेयर कोड से संबंधित है। किसी विशेष मैलवेयर परिवार द्वारा समर्थित कमांड का विश्लेषण एक ज्ञात कमांड को सिंबॉलिज़ करके और उन सभी शर्तों को नकार कर आसानी से निर्धारित किया जा सकता है जहाँ कमांड की जाँच की जा रही है।
  • प्रोटोकॉल रिवर्सिंग: सबसे दिलचस्प पोन्से उपयोगों में से एक नियंत्रित उपयोगकर्ता इनपुट के लिए आवश्यक मैजिक नंबर, हेडर या संपूर्ण प्रोटोकॉल को पहचानने की क्षमता है। उदाहरण के लिए, पोन्से आपको किसी दिए गए कमांड लाइन बाइनरी के लिए स्वीकृत सभी तर्कों को सूचीबद्ध करने या किसी विशिष्ट फ़ाइल पार्सर के लिए आवश्यक फ़ाइल प्रारूप निकालने में मदद कर सकता है।
  • CTF: पोन्से CTF के दौरान बाइनरी के रिवर्स इंजीनियरिंग की प्रक्रिया को तेज करता है। चूंकि पोन्से पूरी तरह से IDA में एकीकृत है, इसलिए आपको सेटअप के समय के बारे में चिंता करने की आवश्यकता नहीं है। यह उपयोग के लिए तैयार है!

प्लगइन स्वचालित रूप से चलेगा, पहली बार चलने पर आपको प्रारंभिक कॉन्फ़िगरेशन के माध्यम से मार्गदर्शन करेगा। कॉन्फ़िगरेशन एक कॉन्फ़िगरेशन फ़ाइल में सहेजा जाएगा, इसलिए आपको कॉन्फ़िग विंडो के बारे में फिर से चिंता करने की आवश्यकता नहीं होगी।

उपयोग मोड

  • टेंटिंग इंजन: इस इंजन का उपयोग बाइनरी के निष्पादन के प्रत्येक चरण में यह निर्धारित करने के लिए किया जाता है कि मेमोरी और रजिस्टरों के कौन से भाग उपयोगकर्ता इनपुट द्वारा नियंत्रणीय हैं।
  • सिंबॉलिक इंजन: यह इंजन बाइनरी के निष्पादन पथ के प्रत्येक चरण में रजिस्टरों और मेमोरी के कुछ हिस्सों की सिंबॉलिक स्थिति बनाए रखता है।

उदाहरण

एक शर्त को नकारें और इंजेक्ट करें

निम्नलिखित gif में हम स्वचालित टेंटिंग का उपयोग देख सकते हैं और कैसे हम एक शर्त को नकार सकते हैं और इसे डीबगिंग के दौरान मेमोरी में इंजेक्ट कर सकते हैं:

  • हम सिंबॉलिक इंजन चुनते हैं और argv को सिंबॉलिज़ करने का विकल्प सेट करते हैं।
  • हम उस शर्त की पहचान करते हैं जिसे crackMe को जीतने के लिए पूरा किया जाना आवश्यक है।
  • हम हर बार जब हमारे इनपुट के एक बाइट की कुंजी के विरुद्ध जाँच की जाती है, तो समाधान को नकारते और इंजेक्ट करते हैं।
  • अंत में हमें कुंजी elite मिलती है जो मेमोरी में इंजेक्ट की गई है और इस प्रकार Win कोड तक पहुँचते हैं।

क्रैकमी का स्रोत कोड यहाँ पाया जा सकता है।

crackmexor_negate_and_inject

उपयोगकर्ता नियंत्रित इनपुट को ट्रैक करने के लिए टेंटिंग इंजन का उपयोग करना

इस उदाहरण में हम cmake के साथ टेंटिंग इंजन का उपयोग देख सकते हैं। हम:

  • cmake को पार्स करने के लिए एक फ़ाइल को तर्क के रूप में पारित कर रहे हैं।
  • हम चुनते हैं कि हम टेंटिंग इंजन का उपयोग करना चाहते हैं।
  • हम fread() द्वारा फ़ाइल से पढ़े गए बफर को टेंट करते हैं।
  • हम डीबगर नियंत्रण के तहत निष्पादन फिर से शुरू करते हैं ताकि देख सकें कि टेंट इनपुट कहाँ स्थानांतरित होता है।
  • पोन्से टेंटेड फ़ंक्शंस का नाम बदल देगा। ये वे फ़ंक्शन हैं जिन पर उपयोगकर्ता का किसी तरह प्रभाव है, न कि केवल निष्पादित फ़ंक्शन।

cmake_tainting_fread

नकारें, इंजेक्ट करें और पुनर्स्थापित करें का उपयोग करना

अगले उदाहरण में हम स्नैपशॉट इंजन का उपयोग कर रहे हैं:

  • एक फ़ाइल को तर्क के रूप में पारित करना।
  • हम चुनते हैं कि हम सिंबॉलिक इंजन का उपयोग करना चाहते हैं।
  • हम fread() द्वारा फ़ाइल से पढ़े गए बफर को टेंट करते हैं।
  • हम उस फ़ंक्शन में एक स्नैपशॉट बनाते हैं जो फ़ाइल से पढ़े गए बफर को पार्स करता है।
  • जब एक शर्त का मूल्यांकन किया जाता है, तो हम उसे नकारते हैं, समाधान को मेमोरी में इंजेक्ट करते हैं और इसके साथ स्नैपशॉट को पुनर्स्थापित करते हैं।
  • समाधान "मान्य" होगा, इसलिए हम मौजूदा शर्तों को संतुष्ट करेंगे।

fread_test_negate_restore_inject उदाहरण का स्रोत कोड यहाँ पाया जा सकता है।

उपयोग

इस अनुभाग में हम विभिन्न पोन्से विकल्पों के साथ-साथ कीबोर्ड शॉर्टकट सूचीबद्ध करेंगे:

  • कॉन्फ़िगरेशन और टेंट/सिंबॉलिक विंडो तक पहुँचें: Edit > Ponce > Show Config (Ctl+Shift+P और Ctl+Alt+T)

2016-09-15 11_39_08-configuracion

  • पोन्से ट्रेसिंग सक्षम/अक्षम करें (Ctl+Shift+E)

2016-09-15 11_31_34-

  • एक रजिस्टर को सिंबॉलिज़/टेंट करें (Ctl+Shift+R)

2016-09-15 11_32_32-

  • मेमोरी को सिंबॉलिज़/टेंट करें। IDA व्यू या हेक्स व्यू से किया जा सकता है (Ctl+Shift+M)

2016-09-15 11_32_52-ida - testproject idb testproject exe c__users_default default-pc_documents_vi2016-09-15 11_33_10-taint _ symbolize memory range

2016-09-15 12_09_11-inicio

  • सूत्र हल करें (Ctl+Shift+S)

2016-09-15 11_35_11-

  • नकारें और इंजेक्ट करें (Ctl+Shift+N)

2016-09-15 11_34_44-

  • नकारें, इंजेक्ट करें और स्नैपशॉट पुनर्स्थापित करें (Ctl+Shift+I)

2016-09-15 11_47_19-

  • निष्पादन स्नैपशॉट बनाएँ (Ctl+Shift+C)

2016-09-15 11_37_40-

  • निष्पादन स्नैपशॉट पुनर्स्थापित करें (Ctl+Shift+S)

2016-09-15 11_38_10-

  • निष्पादन स्नैपशॉट हटाएँ (Ctl+Shift+D)

2016-09-15 11_38_23-

  • मूल रूप से निष्पादित करें (Ctl+Shift+F9)

2016-09-15 12_07_10-

ट्राइटन

पोन्से अर्थ, टेंट विश्लेषण और सिंबॉलिक निष्पादन प्रदान करने के लिए Triton फ्रेमवर्क पर निर्भर करता है। Triton एक शानदार ओपन सोर्स प्रोजेक्ट है जो Quarkslab द्वारा प्रायोजित है और मुख्य रूप से Jonathan Salwan द्वारा बनाए रखा जाता है, जिसमें एक समृद्ध लाइब्रेरी है। हम Jonathan के Triton के काम को धन्यवाद देना और समर्थन करना चाहते हैं। आप कमाल हैं! :)

बिल्डिंग

पोन्से v0.3 से हमने बिल्ड संकलन प्रक्रिया को CMake का उपयोग करने के लिए स्थानांतरित कर दिया है। ऐसा करके हम लिनक्स, विंडोज और OSX के लिए कॉन्फ़िगरेशन और बिल्ड के तरीके को एकीकृत करते हैं। अब हम सिंबॉलिक या टेंट निर्देशों के बारे में स्यूडोकोड पर प्रतिक्रिया प्रदान करने का समर्थन करते हैं। इस सुविधा के काम करने के लिए आपको अपने IDA SDK इन्क्लूड फ़ोल्डर में hexrays.hpp जोड़ना होगा। hexrays.hpp आपके IDA इंस्टॉलेशन पथ पर plugins/hexrays_sdk/ में पाया जा सकता है। यदि आपने hex-rays decompiler नहीं खरीदा है, तब भी आप -DBUILD_HEXRAYS_SUPPORT=OFF का उपयोग करके Ponce का निर्माण कर सकते हैं। हम अपने CI वातावरण के रूप में Github actions का उपयोग करते हैं। यदि आप समझना चाहते हैं कि बिल्डिंग प्रक्रिया कैसे होती है, तो एक्शन फ़ाइलें देखें।

FAQ

पोन्से नाम क्यों?

Juan Ponce de León (1474 – जुलाई 1521) एक स्पेनिश खोजकर्ता और विजेता थे। उन्होंने संयुक्त राज्य अमेरिका में फ्लोरिडा की खोज की। IDA प्लगइन आपको बाइनरी में विभिन्न पथों की खोज, अन्वेषण और उम्मीद है कि विजय प्राप्त करने में मदद करेगा।

क्या पोन्से का उपयोग विंडोज, OS X और लिनक्स बाइनरी का विश्लेषण करने के लिए किया जा सकता है?

हाँ, आप पोन्से का उपयोग विंडोज के लिए IDA में मूल रूप से कर सकते हैं या दूरस्थ रूप से लिनक्स या OS X मशीन से जुड़कर इसका उपयोग कर सकते हैं। अगले पोन्से संस्करण में हम लिनक्स और OS X IDA संस्करणों के लिए मूल रूप से पोन्से का समर्थन करेंगे।

पोन्से प्रति सेकंड कितने निर्देश संसाधित कर सकता है?

हमारे परीक्षणों में हम प्रति सेकंड 3000 निर्देशों को संसाधित करने तक पहुँचते हैं। हम गति बढ़ाने के लिए IDA द्वारा प्रदान किए गए PIN ट्रेसर का उपयोग करने की योजना बना रहे हैं।

कुछ काम नहीं कर रहा है!

एक मुद्दा खोलें, हम इसे ASAP हल करेंगे ;)

मुझे आपका प्रोजेक्ट पसंद है! क्या मैं सहयोग कर सकता हूँ?

ज़रूर! कृपया पुल रिक्वेस्ट करें और खुले मुद्दों पर काम करें। हम आपको मदद के लिए बीयर में भुगतान करेंगे ;)

सीमाएँ

कॉन्कॉलिक निष्पादन और पोन्से में कुछ समस्याएँ हैं:

  • सिंबॉलिक मेमोरी लोड/राइट: जब मेमोरी मान पढ़ने के लिए उपयोग किया जाने वाला इंडेक्स सिंबॉलिक होता है जैसे x = aray[symbolic_index], तो कुछ समस्याएँ उत्पन्न हो सकती हैं जो टेंट/सिंबॉलिज़्ड उपयोगकर्ता नियंत्रित इनपुट के ट्रैक के नुकसान का कारण बन सकती हैं।

  • Triton फ्लोटिंग पॉइंट निर्देशों के साथ बहुत अच्छी तरह से काम नहीं करता है।

  • कॉन्कॉलिक निष्पादन केवल निष्पादित निर्देशों का विश्लेषण करता है। इसका मतलब है कि सिंबॉलिक ट्रैकिंग निम्नलिखित जैसे मामलों में खो जाती है:

    root@kitploit:~
    int check(char myinput)  // Input is symbolic/tainted
    {
    int flag = 0;
    if (myinput == 'A')  //This condition is symbolic/tainted
      flag = 1
    else
      flag =- 1;
    return flag; // flag is not symbolic/tainted!
    }
    

लेखक

  • Alberto Garcia Illera (@algillera) [email protected]
  • Francisco Oca (@francisco_oca) [email protected]
टूल डाउनलोड करें