2010-02-25 8 views
43

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

मैं जानना चाहता था कि इस अपघटन के लिए क्या संभावनाएं हैं।

  • क्या आप ऐसा कोई सॉफ्टवेयर जानते हैं जो ऐसा कर सकता है?
  • यदि हां, तो मैं बेहतर तरीके से मेरी रक्षा कैसे कर सकता हूं?

संपादित करें: मेरे स्थिर lib iPhone/एआरएम

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

+0

एफवाईआई, उपयोगकर्ता आईफोन ऐप के लिए पूर्ण संस्करण ध्वनियों iffy का उपयोग करने के लिए कोड दर्ज करते हैं।यदि वे ऐप स्टोर से पूरा गेम खरीद रहे हैं, तो कोड दर्ज करने की आवश्यकता नहीं है। अगर वे इसे ऐप स्टोर के बाहर खरीद रहे हैं, तो ऐप्पल खुश नहीं होगा। – Chuck

+3

धन्यवाद, मेरा मतलब अंतिम उपयोगकर्ताओं लेकिन डेवलपर्स का नहीं है। [[myLib alloc] initWithMySecretKey: @XXX]] –

+0

आपका एल्गोरिदम कुंजी की जांच करने के लिए चलाएगा; वे निर्देश देख सकते हैं (मशीन की तरह, इसे चलाने के लिए निर्देशों को जानना आवश्यक है), फिर वे इसे देख सकते हैं और जेनरेटर विकसित कर सकते हैं। – JHG

उत्तर

58

यह स्पष्ट नहीं है कि आप से अपने आप को बचाने की कोशिश कर रहे हैं। हां, यह रिवर्स इंजीनियर हो सकता है।

otool -tV <library> 

कि वे IDA Pro, जो iPhone समर्थन हासिल है और इस तरह का काम करने के लिए बहुत अच्छा है जैसी चीजों के लिए दौड़ से: सरल टूल otool, मानक डेवलपर वितरण का हिस्सा है। बीच में, मैं वास्तव में हैरान हूं कि मैंने अभी तक आईफोन/एआरएम के लिए otx का पुनर्विक्रय नहीं देखा है। अंत में एक शो देखने के लिए मुझे आश्चर्य नहीं होगा। और निश्चित रूप से जीडीबी है यदि आप काम करने की कोशिश कर रहे हैं कि चीजें कैसे बहती हैं और डेटा विभिन्न बिंदुओं पर क्या होता है।

यदि आपके पास अपने आप को बचाने की कोशिश कर रहे हैं, तो इसके बारे में अधिक जानकारी है, तो कुछ लक्षित उत्तर हो सकते हैं। इसके अलावा, चक की टिप्पणियां पढ़ें।

+1

धन्यवाद रॉब, यह बहुत प्रबुद्ध रहा है। मैंने जो कुछ भी मैं संरक्षित करने की कोशिश कर रहा हूं उसकी अधिक जानकारी जोड़ दी है। –

+2

मुझे संपादन दिखाई देता है। आपके प्रश्न के लिए, हाँ, एक डीबगर के साथ वे एक प्रमुख जनरेटर बनाने में सक्षम होंगे। लेकिन वे परेशान नहीं होंगे। वे कुंजी जांच को छोड़ने के लिए बाइनरी को संशोधित करेंगे। इसके बारे में चिंता मत करो। यदि आपकी लाइब्रेरी इतनी लोकप्रिय है कि लोग नकली कुंजी बनाने में परेशानी ले रहे हैं, तो यह काफी लोकप्रिय है कि आप वैसे भी बहुत पैसा कमाएंगे। जब आप उस आटे में घुमा रहे हों तो इसके बारे में चिंता करें। यदि आप अपना समय बर्बाद कर देते हैं (जो अधिक मदद नहीं करेगा), तो आपके पास कभी भी भयानक उत्पाद बनाने के लिए पर्याप्त समय नहीं होगा कि कोई भी वैसे भी खरीद लेगा। –

+1

किसी भी मामले में, मैं एक कुंजी का उपयोग करने के बजाय अलग संस्करण बनाने की सिफारिश करता हूं। जब लोग इसके लिए भुगतान करते हैं, तो उन्हें पूर्ण संस्करण भेजें। इस तरह से गलत जाने के लिए कम सामान, कम कोड ब्लोट, यादृच्छिक लोगों द्वारा तोड़ने के लिए बहुत कठिन है (क्योंकि उनके पास पूर्ण कोड नहीं होगा)। –

5

ChanceGetsDecompiled = ExpectedGainFromBeingDecompiled/PopularityOfLibrary

खैर अगर तुम सच में जानना मैं इसे अपने आप decompiling कोशिश करेंगे चाहते हैं। आप यह नहीं कहते कि यह पीपीसी, इंटेल, या एआरएम के लिए है जो एक फर्क पड़ता है। इंटेल i386 Decompiler

के लिए एक डिकंपाइलर है, मुझे यह नहीं पता कि आप इसे सीमित करने के लिए क्या कर सकते हैं (मुझे नहीं लगता कि वहां बहुत कुछ है)। कोड हमेशा रिवर्स इंजीनियर हो सकता है। खुश रहें कि आप जावा या .NET का उपयोग नहीं कर रहे हैं। उनका अपघटन इतना अच्छा है।

+0

हाय जैमोन, आपकी पोस्ट के लिए धन्यवाद। असल में मैंने जो lib बनाया है वह आईफोन एसडीके के लिए है। –

+0

प्रदान किया गया लिंक टूटा हुआ है –

+0

अपडेटेड लिंक: http://www.ohloh.net/p/i386codedump –

80

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

उस समय को लें जब आप विघटन को विफल कर देते हैं और अपने उत्पाद को बेहतर बनाने के लिए इसका उपयोग करते हैं - इसमें एक बेहतर आरओआई होगा।

+72

'आप उनसे बेहतर प्रदर्शन नहीं करेंगे, खासकर यदि आपको स्टैक ओवरफ़्लो पर इसके बारे में पूछना है।' - लॉल ... – Rodrigo

+4

"और वास्तव में उनको रोकने के लिए आपके द्वारा किए गए किसी भी उपन्यास प्रयासों से उत्साहित होगा" लॉल ... अच्छा लगा। – theKRAY

+0

क्या आप कृपया मुझे कोई उपकरण या तरीका बता सकते हैं जो डीकंपाइल आईओएस लाइब्रेरी के लिए उपयोगी है। मैं ऑब्जेक्ट फ़ाइल निकालता हूं लेकिन यह उपयोगी नहीं है क्योंकि यह बाइनरी है। मैं स्थैतिक पुस्तकालय से स्रोत कोड चाहता हूँ। ar -xv MyLib.a MyObj.o यह आदेश केवल बाइनरी फ़ाइल देता है। मैं उस से कक्षा फ़ाइल कैसे निकाल सकता हूं। –

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