
pyREtic मेमोरी में Python 2.x बाइटकोड की रिवर्स इंजीनियरिंग के लिए एक विस्तार योग्य ढांचा है।
Rich Smith - [email protected]
pyREtic का नवीनतम संस्करण यहाँ पाया जा सकता है: https://github.com/MyNameIsMeerkat/pyREtic
pyREtic एक विस्तार योग्य ढांचा है जो Python भाषा परियोजनाओं के लिए विभिन्न रिवर्स इंजीनियरिंग कार्यों को करने में सहायता करता है।
यह एक रिवर्स इंजीनियर को बाइटकोड (.pyc's) से स्रोतकोड (.py's) वापस प्राप्त करने में सहायता करता है, विशेष रूप से जब रिवर्स किए जा रहे कोड ने मानक टूलसेट का उपयोग करके डीकंपाइलेशन को रोकने का प्रयास किया हो।
इसमें 3 मुख्य भाग हैं:
REpdb : एक RE-केंद्रित सुपरसेट है जो pdb कार्यक्षमता का एक विस्तारित संस्करण है, जो रिवर्सर को उनके द्वारा रिवर्स किए जा रहे कोड के साथ आसानी से इंटरैक्ट करने की अनुमति देता है।
OpcodeRemap : वह घटक जो एक Python रनटाइम से एक नई ऑपकोड तालिका निकालने में सक्षम है जिसने अपने ऑपकोड लेआउट को बदल दिया है ताकि कई मानक Python डीकंपाइलरों को भ्रमित किया जा सके।
LiveUnpyc : Dmitri Kornev के UnPyc डीकंपाइलर प्रोजेक्ट का एक विस्तार http://unpyc.sourceforge.net/ जो मेमोरी में लाइव Python ऑब्जेक्ट्स को 3 अलग-अलग तरीकों से वापस Python स्रोत कोड में डीकंपाइल करने की अनुमति देता है।
pyREtic टूलकिट के भीतर की क्षमताएँ उन सुरक्षाओं के विरुद्ध प्रभावी होने के लिए लिखी गई थीं जिनका उपयोग अधिकांश बंद-स्रोत Python डेवलपर्स अपने द्वारा वितरित कोड को उसके स्रोत रूप में पढ़े जाने से बचाने के लिए कर रहे थे।
pyREtic का आउटपुट एक ऐसे ऑब्जेक्ट का स्रोत कोड प्रतिनिधित्व उत्पन्न करना था जिस तक आप लक्ष्य एप्लिकेशन के चल रहे इंस्टेंस में पहुँच प्राप्त कर सकते थे। यह प्रतिनिधित्व केवल इतना अच्छा होना चाहिए कि लक्ष्य एप्लिकेशन की सुरक्षा का आकलन किया जा सके, न कि बिल्कुल सही प्रति।
एक विस्तृत कैसे-करें दस्तावेज़ docs/ निर्देशिका में पाया जा सकता है।
pyREtic GPLv3 के तहत जारी किया गया है जो docs/ निर्देशिका या GPLv3 पर पाया जा सकता है।
अन्य घटक जो pyREtic उपयोग करता है वे अपने स्वयं के लाइसेंस के तहत जारी किए गए हैं:
UnPyc http://unpyc.sourceforge.net/ : BSD लाइसेंस
pycallgraph http://pycallgraph.slowchop.com/: GPLv2
pyREtic का जन्म तब हुआ जब मैं Immunity Inc में काम करता था, और इसे पहली बार सार्वजनिक रूप से लास वेगास में BlackHat 2010 सम्मेलन में प्रस्तुत किया गया, और फिर Defcon 17 में। इसके रिलीज़ के साथ एक पेपर docs/ निर्देशिका में पाया जा सकता है।
अब मैं Immunity में कार्यरत नहीं हूँ लेकिन Dave Aitel ने मुझे कोड को GPL के तहत जारी करने की अनुमति देने की कृपा की ताकि लोग इसे एक्सेस कर सकें और इसके विकास को जारी रख सकें।
फ्रेमवर्क का नवीनतम संस्करण https://github.com/MyNameIsMeerkat/pyREtic पर पाया जा सकता है।
मैंने हाल ही में समुदाय में कुछ लोगों की नई रुचि के कारण प्रोजेक्ट को GitHub पर एक नए स्थान पर स्थानांतरित किया और कुछ संवर्द्धन जारी करूँगा जो अब तक प्रकाश में नहीं आए थे।
भविष्य में pyREtic में जोड़ी जाने वाली सुविधाएँ आगे बढ़ते हुए Python अनुप्रयोगों को रिवर्स करने के लिए मेरी आवश्यकताओं के विकास को दर्शाएँगी। यदि आपके पास सुझाव हैं, तो कृपया मुझे बताएँ।
##Technical Details
जो लोग इस बात की अधिक तकनीकी जानकारी में रुचि रखते हैं कि pyREtic कैसे काम करता है, वे pyREtic: In memory reverse engineering for obfuscated Python bytecode पेपर में पा सकते हैं जो docs/ निर्देशिका में है, और इस पर चर्चा करने वाली एक प्रस्तुति यहाँ पाई जा सकती है:
http://prezi.com/kmyvgiobsl1d/pyretic-rich-smith-blackhatdefcon-2010