2013-02-21 56 views
6

के माध्यम से पाइथन बाइटकोड को रोकना वास्तव में, ड्रॉपबॉक्स ने इसे बहुत अच्छी तरह से बनाया, वे पाइथन में बने अपने डेस्कटॉप एप्लिकेशन को सुरक्षित करने में सक्षम थे; मैंने इसका बहुत कुछ शोध किया, लेकिन obfuscation से बेहतर कोई अच्छा समाधान नहीं है, जो जाने के लिए बहुत सुरक्षित तरीका नहीं है, और आप कहीं भी अपना कोड अपलोड कर देखेंगे।दुभाषिया उत्परिवर्तन

मैं जियोवानी बाजो (PyInstaller संस्थापक) द्वारा किए गए एक सत्र की बात सुनी है, उन्होंने कहा ड्रॉपबॉक्स करता है:

  1. Bytecode-पांव मार अपने CPython का दुभाषिया recompiling द्वारा, और इस से, मानक CPython दुभाषिया इसे चलाने में सक्षम नहीं होगा, केवल पुनः संकलित cpython दुभाषिया।
  2. आपको जो करना है वह define loadup 8 के नीचे की संख्या को घुमाने के लिए है।

मैं कभी भी पायथन के स्रोत कोड से नहीं चला हूं, इसलिए, मैं दावा नहीं करूंगा कि मैं उपरोक्त शब्दों को पूरी तरह से समझता हूं।

मुझे विशेषज्ञों की आवाज़ सुनने की ज़रूरत है: ऐसी चीज कैसे करें? और अगर पुन: संकलन के बाद मैं अपने अनुप्रयोग को PyInstaller जैसे उपलब्ध टूल का उपयोग करके पैकेज करने में सक्षम हो जाऊंगा?

अद्यतन:

मैं के बारे में कैसे ड्रॉपबॉक्स कहानियो/उत्परिवर्तन के इस प्रकार करता है कुछ शोध किया है, और मैं इस पाया:

Hagen Fritsch के अनुसार, वे इसे दो चरणों में कार्य करें:

  1. वे प्रत्येक पाइथन मॉड्यूल के कोड ऑब्जेक्ट में कुछ मानों द्वारा बीजित आरएनजी के साथ टीईए सिफर का उपयोग करते हैं। वे तदनुसार दुभाषिया समायोजित तो यह

    क) मॉड्यूल decrypts और

    ख) decrypted कोड-वस्तुओं के लिए उपयोग रोकता है।

    यह ड्रॉपबॉक्स को सब कुछ डिक्रिप्ट करने और बिल्टिन मार्शलर का उपयोग करके मॉड्यूल को डंप करने का सीधा मार्ग होता।

  2. एक और चाल का उपयोग ऑपकोड के मैन्युअल स्कैम्बलिंग है। दुर्भाग्य से यह केवल अर्धसूत्रीय रूप से तय किया जा सकता है, इस प्रकार उनके मोनोल्फाबेटिक प्रतिस्थापन सिफर कुछ समय जीतने के शब्दों में काफी प्रभावी साबित हुआ।

मैं अभी भी यह कैसे किया जा सकता है, अधिक से अधिक, मैं नहीं जानता कि कैसे डिक्रिप्शन इस प्रक्रिया में होता है ... मैं सभी विशेषज्ञों की आवाज यहाँ चाहते हैं ... आम लोगों के लिए अधिक जानकारी चाहते हैं आप कहाँ हैं।

+0

इसी प्रकार, हालिया प्रश्न: [Undecompilable पायथन] (http://stackoverflow.com/q/15087339/222914) –

+0

धन्यवाद जेन। आपने जो कहा उससे बहुत समान, उसमें, नव निर्मित/शफल दुभाषिया में आत्मनिरीक्षण मॉड्यूल को हटाने। दिन के अंत में – securecurve

+0

, बाइटकोड स्मृति से निकाला जा सकता है, फिर, हमलावर नए शफल बाइटकोड और मानक के बीच की तुलना कर सकता है यह जानने के लिए कि शफल कैसे था; लेकिन, चलो निष्पक्ष हो, क्या हमलावर नहीं हो सकता है, स्रोत कोड प्राप्त करने के लिए सी में लिखे गए एक प्रोग्राम को डीकंपाइल नहीं कर सकता है, उलट करने के खिलाफ कुछ भी सुरक्षित नहीं है, यह एक व्यापार बंद है ... इस तरह मैं चीजों को देखता हूं, क्या मैं गलत हूं । – securecurve

उत्तर

2

मुझे लगता है कि यह include/opcode.h में संख्याओं को घुमाने के बारे में है। मुझे वहां कोई #define loadup नहीं दिखाई देता है, लेकिन शायद यह कुछ पुराने पायथन संस्करण को संदर्भित करता है। मैंने यह कोशिश नहीं की है।

यह आपकी .pyc फ़ाइलों को obfuscate करेगा ताकि उनका सामान्य निरीक्षण .pyc फ़ाइलों को पहचानने वाले किसी भी उपकरण द्वारा निरीक्षण नहीं किया जा सके।इससे आपको अपने प्रोग्राम के अंदर कुछ सुरक्षा उपायों को छिपाने में मदद मिल सकती है। हालांकि, एक हमलावर आपके ऐप बंडल से आपके कस्टम पायथन दुभाषिया को निकालने और फ़ाइलों का निरीक्षण करने के लिए लाभ उठाने में सक्षम हो सकता है (उदाहरण के लिए)। (बस इंटरैक्टिव दुभाषिया लॉन्च करें और मॉड्यूल पर डीआईआर आयात और उपयोग करके जांच शुरू करें)

ध्यान दें कि आपके पैकेज में निश्चित रूप से पायथन मानक लाइब्रेरी से कुछ मॉड्यूल होंगे। यदि कोई हमलावर अनुमान लगाता है कि आपने ऑपकोड को शफ़ल कर दिया है, तो वह आपके संस्करण और मानक मॉड्यूल के सामान्य संस्करण के बीच बाइट-बाय-बाइट तुलना कर सकता है और इस तरह से अपने ऑपकोड खोज सकता है। इस सरल हमले को रोकने के लिए, कोई उचित एन्क्रिप्शन के साथ मॉड्यूल की रक्षा कर सकता है और अद्यतन प्रश्न में उल्लिखित दुभाषिया में डिक्रिप्शन चरण को छिपाने का प्रयास कर सकता है। यह हमलावर को डिक्रिप्शन कोड देखने के लिए मशीन कोड डीबगिंग का उपयोग करने के लिए मजबूर करता है।


मैं नहीं जानता कि कैसे डिक्रिप्शन इस प्रक्रिया में होता है ...

आप दुभाषिया कि मॉड्यूल आयात का हिस्सा संशोधित करने और आपकी डिक्रिप्शन सी कोड डालने जाएगा।

+0

ठीक है, क्या यह सब है? हम केवल 'opcode.h' में संख्याओं को बदलते हैं, पाइथन दुभाषिया को पुन: संकलित करते हैं, मेरे ऐप को पैकेज करते हैं, फिर उसे ग्राहक को भेजते हैं? क्या वह एक समान स्तर की सुरक्षा के साथ ड्रॉपबॉक्स-जैसे ऐप का उत्पादन करेगा? – securecurve

+0

@securecurve मेरा जवाब विस्तारित किया। मुझे नहीं पता कि ड्रॉपबॉक्स ऐप की किस स्तर की सुरक्षा है। –

+0

इस बिंदु पर, उन ऑपकोड्स का निष्कर्षण सीधा नहीं होगा, हमलावर को उन ऑपकों को स्मृति में देखने के लिए डिस्सेबल/डिकंपेलर और डीबगिंग टूल का उपयोग करना होगा ... क्या मैं सही तरीके से बात कर रहा हूं या यह अलग-अलग होगा? – securecurve