काम नहीं करता है, बाहरी प्रक्रिया में आईएम हुकिंग फ़ंक्शन ऑफ़सेट के माध्यम से काम करता है। लेकिन मैं एक "debugLog (चार ...)" समारोह ने पाया है कि अभी भी बाइनरी में मौजूद हैं, लेकिन does not कोई मुद्रण करते हैं - - यही कारण है कि कार्यों अब तक hooking im के लिए अच्छी तरह से काम यह इस"रिक्त" फ़ंक्शन के लिए बाहरी प्रक्रिया में हुकूटर हुक
debugMessage proc near ;
xor eax, eax ; Logical Exclusive OR
retn ; Return Near from Procedure
debugMessage endp
तरह लग रहा है यह इस
push offset debugString ; "This is a debug message"...
call debugMessage ; Call Procedure
अब डिबग संदेश स्पष्ट रूप से अक्षम कर दिया गया है जैसे कहा जाता है, मैं के रूप में मैं बस पहले से ही इसी तरह के समारोह (चार ..) बाइनरी में में हुक करने में सक्षम था इस में हुक करना चाहता था।
typedef void (__stdcall* DebugLog)(const char*);
DebugLog Real_DebugLog = (DebugLog)(0xCAFEBABE);
extern "C"
{
static void __stdcall Hook_DebugLog(const char*);
}
void __stdcall Hook_DebugLog(const char* text) {
MessageBox(NULL, text, "MyDebugLog", MB_OK);
return Real_DebugLog(text);
}
// in dll main attach..
DetourTransactionBegin();
DetourUpdateThread(GetCurrentThread());
DetourAttach(&(PVOID&)Real_DebugLog, (PVOID)Hook_DebugLog);
एक समान दृष्टिकोण अन्य सभी कार्यों मैं अब तक इस बाइनरी में झुका है काम करता है:
इस कोड है। मैंने यह भी सुनिश्चित किया कि डीबग मैसेज को डीबगर के साथ भी बुलाया जाता है।
कोई विचार क्यों यह हुक बिल्कुल काम नहीं कर रहा है? शायद क्योंकि समारोह में विभिन्न तर्क हो सकते हैं? मैं पहले से ही कॉन्स चार * के साथ कोशिश की, ...)।
धन्यवाद - क्या कोई और समाधान है? – Steve
केवल अन्य तरीकों से – paulm