मेरे पिछले नियोक्ता में हमने एक तृतीय पक्ष घटक का उपयोग किया जो मूल रूप से केवल एक डीएलएल और एक हेडर फ़ाइल था। उस विशेष मॉड्यूल Win32 में मुद्रण संभाला। हालांकि, जिस कंपनी ने घटक बनाया है वह बैंककैप्ट गया है इसलिए मैं एक बग की रिपोर्ट नहीं कर सका जो मुझे मिलेगा।आपकी पसंदीदा एंटी-डिबगिंग चाल क्या है?
इसलिए मैंने खुद को बग ठीक करने और डीबगर लॉन्च करने का फैसला किया। मैं, लगभग हर जगह विरोधी डिबगिंग कोड को खोजने के लिए हमेशा की तरह IsDebuggerPresent
हैरान था, लेकिन बात यह है कि मेरा ध्यान पकड़ा यह था: पहली नज़र में
; some twiddling with xor
; and data, result in eax
jmp eax
mov eax, 0x310fac09
; rest of code here
मैं सिर्फ दिनचर्या जो दो बार, फिर बातें बुलाया गया था से अधिक कदम रखा बस केला चला गया। थोड़ी देर बाद मुझे एहसास हुआ कि थोड़ा सा झुकाव परिणाम हमेशा एक जैसा था, यानी jmp eax हमेशा mov eax, 0x310fac09
निर्देश में सीधे कूद गया। मैंने बाइट्स को विच्छेदित किया और वहां 0f31
, rdtsc
निर्देश था जिसे डीएलएल में कुछ कॉल के बीच बिताए गए समय को मापने के लिए उपयोग किया गया था।
तो मेरा प्रश्न SO पर है: आपकी पसंदीदा एंटी-डिबगिंग चाल क्या है?
यह मेरी राय है कि मैं वास्तव में अपने सिस्टम पर कोड नहीं चलाना चाहता हूं जिसने डीबगिंग को रोकने के लिए चीजें की हैं। यह दिखाता है कि कोड के लेखक पर भरोसा नहीं किया जा सकता है। – bruceatk
मैं ब्रूससेक से सहमत हूं, खासकर डीएलएल और अन्य घटकों के लिए जो मैं अपने आवेदन के निर्माण के लिए उपयोग करता हूं। मैं उपयोग किए जाने वाले पूर्ण अनुप्रयोगों से कम चिंतित हूं। मुझे आश्चर्य नहीं है कि कंपनी बैंककैप्ट गई है :) - वे बेहतर सुरक्षा के समय से अच्छे कोड का उत्पादन करने में समय व्यतीत करेंगे। – Michael
@ ब्रूसैटक तो आप विंडोज नहीं चलाते? ऑपरेटिंग सिस्टम में कुछ एंटी-डिबगर ट्रिक्स शामिल हैं जो इसके कुछ और अधिक रोचक सुरक्षा तंत्र को छिपाने में मदद करते हैं। – mrduclaw