GetCurrentProcess() == 0X00000000 ?



  • hello

    Hier ein kleiner ausschnitt aus meinem DllInjector.

    void SetDebugPrivilege() 
    {
    	HANDLE hProcess, hToken;
    	TOKEN_PRIVILEGES priv;
    	LUID luid;
    
    	hProcess = GetCurrentProcess();
    	printf("GetCurrentProcess:%li\n",GetLastError());
    
    	OpenProcessToken(hProcess, TOKEN_ALL_ACCESS, &hToken);
    	printf("OpenProcessToken:%li\n",GetLastError());
    	//öffnet unser Prozess token zum "anpassen"(adjust) und speichert ein handle zum verwalten in hToken ab.
    	LookupPrivilegeValue(0, "seDebugPrivilege", &luid);
    	printf("LookupPrivilegeValue:%li\n",GetLastError());
    	//speichert den LUID wert von "seDebugPrivilege" in die LUID-Variable. 0 heißt, dass es die LUID von unserem System und nicht etwa die eines remote-systems sein soll
    }
    
    int main()
    {
    
    	HANDLE hWnd, hProcess ,AllocAdresse ,hRemoteThread;
    	DWORD PID=0;
    
    	SetDebugPrivilege();
    
    	hWnd = FindWindow(0, "ERASER v1.23 by LB -");
    	GetWindowThreadProcessId((HWND)hWnd, &PID);
    	printf("PID : %li\n",PID);
    
    	hProcess = OpenProcess(PROCESS_ALL_ACCESS, 0, PID); 
    	printf("%li\n",GetLastError());
    
            ....
            ....
    

    Warum bekomme ich bei :

    hProcess = GetCurrentProcess();

    immer 0x00000000

    Weis echt nicht mehr weiter ...

    gruss



  • Weil du GetLastError() ausgibst, 0x0 == ERROR_SUCCESS .



  • Hi

    Ja das habe ich auch schon bemerkt.

    Jedoch hier habe ich Probleme.

    LookupPrivilegeValue(0, "SeSecurityPrivilege", &luid);
    

    Gibt immer Fehler 997 = GetLastError().Sprich - Overlapped I/O operation is in progress.

    Warum ist das ? Was kann ich dagegen tun ?
    Bin als Admin angemeldet !

    gruss



  • Hi

    Sollte doch das Token setzen können wen ich als Admin angemeldet bin !?

    gruss



  • Hi,

    hoffentlich sind die Ferien bald vorbei, dann sind hier endlich weniger Inject0r Kids unterwegs.



  • Prüf erstmal den Rückgabewert von LookupPrivilegeValue, wenn die Funktion erfolgreich war ist der Wert von GetLastError() nicht zu beachten.



  • Wie wäre es, wenn du erst mal eine konsequente Fehlerbehandlung implementieren würdest und die Rückgabewerte auswertest? Dann wüsstest du schon mal was warum nicht funktioniert und wir müssten hier nicht im Blauen rumraten.



  • Hallo

    @highbyte_
    Na dann, geniess die Ferien noch, bevor du wider in den Kindergarten musst.jonyboy

    @all
    Habe jetz beine SetPrivilege() funktion verworfen und die von denmsdn bsp. genommen.

    BOOL SetPrivilege(HANDLE hToken,LPCTSTR lpszPrivilege ,BOOL bEnablePrivilege) 
    {
    	TOKEN_PRIVILEGES tp;
    	LUID luid;
    
    	if ( !LookupPrivilegeValue( 
    			NULL,            // lookup privilege on local system
    			lpszPrivilege,   // privilege to lookup 
    			&luid ) )        // receives LUID of privilege
    	{
    		printf("LookupPrivilegeValue error: %u\n", GetLastError() ); 
    		getchar();
    		return FALSE; 
    	}
    
    	tp.PrivilegeCount = 1;
    	tp.Privileges[0].Luid = luid;
    	if (bEnablePrivilege)
    		tp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
    	else
    		tp.Privileges[0].Attributes = 0;
    
    	// Enable the privilege or disable all privileges.
    
    	if ( !AdjustTokenPrivileges(
    		   hToken, 
    		   FALSE, 
    		   &tp, 
    		   sizeof(TOKEN_PRIVILEGES), 
    		   (PTOKEN_PRIVILEGES) NULL, 
    		   (PDWORD) NULL) )
    	{ 
    		  printf("AdjustTokenPrivileges error: %u\n", GetLastError() ); 
    		  getchar();
    		  return FALSE; 
    	} 
    
    	if (GetLastError() == ERROR_NOT_ALL_ASSIGNED)
    	{
    		  printf("The token does not have the specified privilege. \n");
    		  getchar();
    		  return FALSE;
    	} 
    
    	return TRUE;
    }
    

    Jedoch bekomme ich immer den Fehler "AdjustTokenPrivileges error: 6" was bedeutet das das Handle invalid ist.!?
    Das handle ist kommt bei mir so...

    hproc = GetCurrentProcess();

    und die funktion SetPrivileg wird da so aufgerufen.

    SetPrivilege(hproc,"SeDebugPrivilege" ,TRUE);

    Sollte doch eigentlich funktionieren.

    Wäre schön wen mir jemand helfen könnte oder wenigstens sagen warum dieses handle das ich mit GetCurrentProcess() bekomme invalid ist.

    gruss



  • Hallo miteinander

    Habe das selbe Problem. Würde mich auch intressieren. Bisher konnte ich bei goggle nichts finden.

    thx
    samuel



  • Hallo

    Den niemand eine Idee ?

    thx
    samuel


Anmelden zum Antworten