,首先,如果這是一個noobie問題,我很抱歉,我只是這種事情的一個啓動。
我正在嘗試從MineSweeper的內存中讀取這些東西,但我遇到了一些問題。
當我嘗試打印它對我說的模塊時,我無權這樣做。我知道那是因爲該進程的內存不受寫入讀取的影響,並且需要讀取它,所以我需要具有調試權限。
而就在那裏,我的問題是當我調用OpenThreadToken(..)時,它代碼1008失敗,這是ERROR_NO_TOKEN。
給你的代碼,併爲長介紹遺憾:
OpenThreadToken()錯誤1008,ERROR_NO_TOKEN
int privileges(){
HANDLE token;
TOKEN_PRIVILEGES tp;
DWORD siz = sizeof(TOKEN_PRIVILEGES);
if (OpenThreadToken(GetCurrentThread(), TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY,
FALSE, &token) != 0){ //HERE IT FAILS
LookupPrivilegeValue(NULL, SE_DEBUG_NAME, &tp.Privileges[0].Luid);
tp.PrivilegeCount = 1;
tp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
if (AdjustTokenPrivileges(token, 0, &tp, siz, NULL ,NULL) != 0){
cout << "--Conseguido acceso debug.\n";
return TRUE;
}
else {
cout << "fail adjust\n";
return FALSE;
}
}
else {
cout << "fail if: " << GetLastError() << endl;
cin.get();
return FALSE;
}
我不知道它爲什麼失敗。我也試過微軟的例子,但同樣的問題。
有人知道它爲什麼會失敗嗎?
順便提一下,您通常不需要SE_DEBUG_NAME來調試在同一用戶帳戶下運行的程序。 – 2014-09-29 20:07:32
那麼爲什麼我無法從MineSweeper進程內存讀取?有沒有其他方法可以訪問它? (我會發布另一個問題,但限制是每90分鐘一個問題) – Norwelian 2014-09-29 20:27:02
不知道。我們需要看代碼。 – 2014-09-29 20:45:03