2009-12-11 16 views
35

मैंने एक पर्ल स्क्रिप्ट विकसित की है जिसमें एक गोपनीय व्यावसायिक तर्क है।मैं अपने पर्ल स्क्रिप्ट को कैसे उलटा कर सकता हूं ताकि इसे रिवर्स इंजीनियर को मुश्किल बना दिया जा सके?

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

कोई सुझाव?

+19

1) यह पर्ल है, न कि PERL। 2) शुभकामनाएँ। यह असंभव है। पर्ल के रूप में जटिल भाषा के रूप में बहुत अधिक obfuscation क्षमता है, और इतनी सारी स्क्रिप्ट kiddies जो इस obfuscation क्षमता के हर एक अंधेरे कोने को पता चल जाएगा। आपकी सबसे अच्छी शर्त यह है कि इसे मशीन कोड में लिखना और XS लिंकेज के साथ बाइनरी वितरित करना है, लेकिन अंत में, आप जो कुछ भी नहीं करते हैं वह वास्तव में आपके कोड को समझना चाहता है। http://search.cpan.org/~jjore/B-Deobfuscate-0.20/lib/B/Deobfuscate.pod बहुत संभावना नाश करने में सफल हो सकता है: –

+14

मन में इस तरह एक दृष्टिकोण रखें कि जो कुछ भी आप चुनते हैं, तुम्हारा काम। –

+7

@ क्रिस लुट्ज़: स्क्रिप्ट किड्डी परिभाषा के अनुसार, अच्छे प्रोग्रामर नहीं हैं। – user359996

उत्तर

124

मेरा सुझाव है कि आप इस व्यक्ति और उसके प्रबंधन को कानूनी रूप से लागू करने योग्य समझौते पर हस्ताक्षर करने के लिए प्राप्त करें जो रिवर्स इंजीनियरिंग के सभी रूपों को प्रतिबंधित करता है, और उन सामानों तक पहुंच प्राप्त करने के किसी अन्य माध्यम को जिन्हें आप संरक्षित करना चाहते हैं।

Obfuscation इंजीनियर को रिवर्स करने के लिए एक निर्धारित प्रयास के खिलाफ आपकी रक्षा नहीं कर सकता है। यह सैद्धांतिक और व्यावहारिक रूप से असंभव है।

3

आप perlcc देख सकते हैं। यह शुद्धता की गारंटी नहीं देता है, लेकिन अगर आप अपनी स्क्रिप्ट में बहुत कुछ नहीं कर रहे हैं तो यह ठीक से करना चाहिए।

+14

-1 पर्ल कोसने टिप्पणियों के लिए एक उपयुक्त मनोरंजन है एक मूल पर्ल सुविधा :) है, लेकिन जवाब जानकारीपूर्ण, और अपेक्षाकृत निष्पक्ष होना चाहिए। इसके अलावा, 'perlcc' अभी भी प्रयोगात्मक है और काम नहीं कर सकता है और अत्यधिक सावधानी के साथ उपयोग किया जाना चाहिए, न कि उत्पादन कोड के लिए। और यह वास्तव में किसी को निर्धारित नहीं करेगा जो निर्धारित है। –

+1

snarkiness बाहर संपादित किया। –

+3

-1 को वापस ले लिया, लेकिन 'perlcc' अभी भी एक खराब समाधान है (एक स्वीकार्य रूप से असफल समस्या के लिए, इसलिए कोशिश करने के लिए कोई दंड नहीं है)। –

7

कोड साफ़ करने के लिए Acme::Bleach का उपयोग करें। फिर परिणामी ब्लीचड कोड obfuscate। हालांकि, किसी एन्कोडेड/obfuscated कोड को डीकोड किया जा सकता है, क्योंकि पर्ल दुभाषिया को वैसे भी इसे डीकोड करना पड़ता है।

+0

नहीं, पहले obfuscate, फिर ब्लीच – ysth

+0

यह Acme :: EyeDrops से भी बेहतर है – mob

9

सबसे पहले, मुझे यह कहना है कि आप गलत पेड़ को भड़क रहे हैं। आप जो करना चाहते हैं वह कई कारणों से गलत दृष्टिकोण है।

दूसरा, Filter::Crypto (और PAR::Filter::Crypto) देखें। अपनी शुरुआत से पहले पूरा मैनुअल पढ़ें।

42

अपने पर्ल को खराब करने की कोशिश न करें। आप अपना समय बर्बाद कर रहे हैं। मैं बहुत सारे लोगों को दिखाता हूं कि Mastering Perl में उस तरह की चीजें कैसे तोड़ें, इसलिए वे इसे करने की कोशिश नहीं करेंगे।

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

वैकल्पिक रूप से, संवेदनशील सामग्री को वेब सेवा के पीछे रखें ताकि उन्हें कोड कभी न मिले।

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

व्यवसाय का जवाब उन लोगों को कार्यक्रम न देना है जिन्हें आप भरोसा नहीं करते हैं, या दंड को पर्याप्त रूप से दंडित करने के लिए पर्याप्त कठोर बनाने के लिए। - एक निष्पादन द्विआधारी कि पर्ल या अन्य मॉड्यूल की जरूरत नहीं है

बराबर चलाने के लिए में एक सममूल्य फ़ाइल बदलने

parl 
par.pl 
pp 

parl:

1

पर OSX कम से कम, वे तीन महान आदेशों प्रदान करते हैं।pl - अगर इन विंडोज या लिनक्स के लिए उपलब्ध हैं एक द्विआधारी में एक पर्ल स्क्रिप्ट संकलन (लेकिन यह अभी भी पर्ल की आवश्यकता है)

निश्चित नहीं - बराबर फाइलों अपने पर्ल स्क्रिप्ट से

पीपी बनाते हैं।

एक दिलचस्प बात यह है कि मैंने देखा है कि जब मैं अपने संकलित पर्ल स्क्रिप्ट में एक कमांड इस्तेमाल किया वर्तमान कार्यशील निर्देशिका से संकेत मिलता है, यह मेरी नई बाइनरी निष्पादन की सूची के रूप में एक ही बात थी। मैंने सोचा होगा कि यह कुछ/tmp में असंपीड़ित होता और उसे वहां से चलाता, लेकिन ऐसा नहीं था।

संबंधित मुद्दे

 संबंधित मुद्दे