PDA

View Full Version : مشکل با تابع GetHandleInformation



r00tkit
چهارشنبه 28 مهر 1389, 20:49 عصر
سلام

در کد زیر هر کاری می کنم بازم fHandleIsInheritable صفر هستش در صورتی که باید 1 باشه





DWORD f;

SetHandleInformation(GetCurrentProcess(),HANDLE_FL AG_INHERIT,HANDLE_FLAG_INHERIT);

GetHandleInformation(GetCurrentProcess(),&f);

BOOL fHandleIsInheritable = (0 != (f& HANDLE_FLAG_INHERIT));

milad36_cpp
چهارشنبه 28 مهر 1389, 21:31 عصر
SetHandleInformation موفق به تغییر در Handle نمیشه و 0 رو بر میگردونه .
علتش هم که میشه با ()GetLastError فهمید.
GetLastError مقدار 0x5 رو برمیگردونه که یعنی Acess Denied.

r00tkit
چهارشنبه 28 مهر 1389, 21:49 عصر
دمت گرم ، عجب سوتی ای دادم:قهقهه::قهقهه:

حالا چرا Acess Denied?

milad36_cpp
چهارشنبه 28 مهر 1389, 21:59 عصر
اونطوری که تو MSDN نوشته بود GetCurrentProcess یه Handle معمولی برنمیگردونه .
بلکه یه Handle خاص برمیگردونه که همیشه مقدار 0xFFFFFFFF یا 1- داره ، که در واقع یه استثنا هست.
و تابع SetHandleInformation میتونه Handle های Valid رو تغییر بده نه Handle های مخصوص رو.

r00tkit
چهارشنبه 28 مهر 1389, 22:17 عصر
با توجه به اینها نباید در تئوری مشکل پیش بیاد

The calling process can use a pseudo handle to specify its own process whenever a process handle is required

و
This handle has the maximum possible access to the process object.