मैं एक विंडोज 7 callgate समारोह है कि मैं NT कार्यों सीधे कॉल करने के लिए उपयोग किया है बनाने के लिए कोशिश कर रहा है:एक विंडोज़ 8 syscall callgate समारोह
//Windows 7 syscall
__declspec(naked)
NTSTATUS __fastcall wow64 (DWORD ecxId, char *edxArgs)
{
__asm
{
mov eax, ecx;
mov ecx, m_param;
call DWORD ptr fs:[0xc0];
add esp, 0x4;
retn;
};
}
NTSTATUS callGate (DWORD id, ...)
{
va_list valist;
va_start(valist,id);
return wow64(id,valist);
}
//Example NTClose function
NTSTATUS closeHandle (void *object)
{
m_param = 0;
return callGate (0xc, object);
}
मैं खिड़कियों 8.1 के लिए एक ही बात करने के लिए कोशिश कर रहा हूँ। मैंने सभी फ़ंक्शन कॉल इंडेक्स अपडेट किए हैं; लेकिन मैंने देखा है वास्तविक callgate समारोह खिड़कियों 8.1 पर काफी अलग है:
यहाँ वास्तविक कॉल गेट की तरह (ntdll.dll में स्थित) के लिए समारोह
mov eax, 0xA5 //the call index
xor ecx, ecx //(m_param)
lea edx, dword ptr ss:[esp + 0x4] //this causes an sp-analysis failure in IDA
call dword ptr fs:[0xC0]
add esp, 0x4
retn 0x2C
ZwCreateThreadEx अब यहाँ सटीक है दिखता है एक ही एनटी समारोह (ZwCreateThreadEx) खिड़कियों 8,1
mov eax, 0xB0 //the call index
call dword ptr fs:[0xC0]
retn 0x2C //2c/4 = 11 parameters
मैं सामान के सभी प्रकार कोशिश कर रहे हैं पर इस विंडोज़ 8.1 पर काम कर पाने के लिए, लेकिन कोई लाभ नहीं हुआ पड़ा है। मैं यह नहीं समझा सकता कि समस्या क्या है या क्या गलत हो रहा है, मुझे पता है कि मैं इसे विंडोज 7 पर सही तरीके से कर रहा हूं।
W8.1 फ़ंक्शन के दृश्य से, मैंने इस एकल फ़ंक्शन के साथ आने का प्रयास किया है (काम नहीं करता है):
DWORD dwebp,dwret,dwparams; //for saving stuff
NTSTATUS __cdecl callGate (DWORD id, DWORD numparams, ...)
{
_asm
{
pop dwebp; //save ebp off stack
pop dwret; //save return address
pop eax; //save id
pop dwparams; //save param count
push dwret; //push return addy back onto stack cuz thats how windows has it
JMP DWORD ptr fs:[0xc0]; //call with correct stackframe (i think)
mov ecx, numparams; //store num params
imul ecx, 4; //multiply numparams by sizeof(int)
add esp, ecx; //add to esp
ret;
};
}
किसी भी मदद की सराहना की जाएगी।
क्यों-ओह आप ड्राइवर लिखने के बिना ऐसा क्यों करना चाहते हैं? –