परिचय जानकारी: विंडोज 7 64-बिट। सी ++। 64-बिट ऐप्स और डीएलएल। एमएस डिटोर के बिना हुकिंग।एपीआई हुकिंग बिना डिटोर
प्रश्न: मैंने एक कामकाजी उदाहरण प्राप्त करने के मुद्दे पर संघर्ष किया है जो विंडोज़ में हुकिंग का प्रदर्शन करता है। ऐसा लगता है कि वहां के अधिकांश टट्स एक समय के दौरान लिखे गए हैं, जहां 32-बिट विंडोज एक्सपी एकमात्र ऑपरेटिंग सिस्टम था ... मैंने बाद में 64-बिट बाधाओं को समझने और डीएलएल को इंजेक्शन देने से इंकार कर दिया है। ज्ञान की इस यात्रा में मेरा अगला कदम हुकिंग है। विषय के नास्तिकता को ध्यान में रखते हुए, एमएस के डेटोर 64-बिट (मुफ्त में) का समर्थन नहीं करते हैं और मैं निश्चित रूप से कुछ भी $ 10,000 का भुगतान नहीं कर रहा हूं। इसलिए मैंने this tutorial में पारंपरिक तरीकों का पीछा किया।
यह टुट भयानक है, लेकिन मैं एक छोटे से परेशानी इस क्षेत्र को समझने आ रही हैं:
void BeginRedirect(LPVOID newFunction)
{
BYTE tempJMP[SIZE] = {0xE9, 0x90, 0x90, 0x90, 0x90, 0xC3};
memcpy(JMP, tempJMP, SIZE);
DWORD JMPSize = ((DWORD)newFunction - (DWORD)pOrigMBAddress - 5);
VirtualProtect((LPVOID)pOrigMBAddress, SIZE,
PAGE_EXECUTE_READWRITE, &oldProtect);
memcpy(oldBytes, pOrigMBAddress, SIZE);
memcpy(&JMP[1], &JMPSize, 4);
memcpy(pOrigMBAddress, JMP, SIZE);
VirtualProtect((LPVOID)pOrigMBAddress, SIZE, oldProtect, NULL);
}
विशेष रूप से, मैं tempJMP बाइट के साथ संघर्ष कर रहा हूँ और memcpy के सभी चल रहा है। मेरे पास नोटपैड के InsertDate() फ़ंक्शन का पता है जिसे मैं हाइजैक करना चाहता हूं, लेकिन मुझे यकीन नहीं है कि इसे कहां लक्षित करना है ... क्या यह नए फ़ंक्शन का पता होगा? या यह सापेक्ष नहीं है? इडक, मैं बस कुछ पॉइंटर्स की तलाश में हूं।