मैं CreateProcess (flags NORMAL_PRIORITY_CLASS + DEBUG_PROCESS + DEBUG_ONLY_THIS_PROCESS) के साथ एक एक्सप्लोरर। Exe उदाहरण शुरू कर रहा हूँ, और तब मैं कर रहा हूँ यह:
<पूर्व> प्रक्रिया नकली डीबग प्रसंस्करण; Var wDebugEvent: DEBUG_EVENT; शुरू करना शुरू करें (wDebugEvent, sizeof (wDebugEvent), 0); दोहराना यदि WaitForDebugEvent (wDebugEvent, INFINITE) तब शुरू होता है जब wDebugEvent.dwDebugEventCode = EXIT_PROCESS_DEBUG_EVENT तोड़; ContinueDebugEvent (wDebugEvent.dwProcessId, wDebugEvent.dwThreadId, DBG_CONTINUE); समाप्त; जब तक झूठी; अंत में;सब कुछ लगभग ठीक काम करता है, सिवाय इसके कि मुझे बहुत सी EXCEPTION_DEBUG_EVENTs "C: \ Windows \ System32 \ rpcrt4.dll"
(अतिरिक्त जानकारी: EXCEPTION_ACCESS_VIOLATION)
77ea3c00 sub_77ea3c00:; फ़ंक्शन प्रविष्टि बिंदु 77ea3c00 >> mov [ecx + 4], eax 77ea3c03 movxx eax, bx 77ea3c06 cdq 77ea3c07 sub eax, edx 77ea3c09 सर एएक्स, 1 77ea3c0b mov [ecx], ax 77ea3c0e xor eax, eax 77ea3c10 pop edi 77ea3c11 pop esi 77ea3c12 Pop ebx 77ea3c13 pop ebp 77ea3c14 ret 8
मैं क्या कर रहा हूँ गलत है? मैं इसे कैसे ठीक करूं?
मैं डेल्फी 7, बीटीडब्ल्यू। का उपयोग कर रहा हूं।
<पी > आपका कोड ठीक है, अन्य डिबगर्स का उपयोग कर परीक्षण करना, जैसे ओलीडबग, आरपीसीआरटी 4.dll अभी भी कुछ एप्लिकेशन से जुड़े होने पर अपवाद की रिपोर्ट करता है। इसके चारों ओर एकमात्र तरीका फिल्टर परिभाषित किया जा सकता है (अपवाद कोड के आधार पर, ollydbg उपयोगकर्ता को क्या करने देता है), फिर मॉड्यूल के आधार पर। इस प्रकार यदि आप 0xC0000005 (EXCEPTION_ACCESS_VIOLATION) प्राप्त करते हैं, तो आप:
< / html> EIP & gt; = (UINT_PTR) GetModuleHandle ("rpcrt.dll") & amp; amp; ईआईपी & lt; = (UINT_PTR) GetModuleHandle ("rpcrt.dll") + getModuleSize ("rpcrt.dll")
(निश्चित रूप से मिलता है मॉड्यूलसिज़ पीई से मॉड्यूल वर्चुअलाइज्ड आकार प्राप्त करने के लिए एक कस्टम फ़ंक्शन है, और UINT_PTR एक है आपके लक्षित सिस्टम पर एक सूचक रखने के लिए काफी बड़ा प्रकार है), आप इसे अनदेखा करते हैं, और घटना को संसाधित करते हैं, हालांकि इसे KiDispatchUserException में हुक की आवश्यकता हो सकती है (यह सही होना चाहिए, अन्यथा NTInternals की जांच करें)
Comments
Post a Comment