• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Autostart CMD.

Object Storage Arubacloud
0 głosów
509 wizyt
pytanie zadane 5 kwietnia 2019 w C i C++ przez FaloY Bywalec (2,180 p.)

Cześć mam oto taki kod:

...To jest w "int main(void)"

	int test,create; 
	test=test_key(); 
	if (test==2) // Create key. 
	{ 
		char *path="C:\\WINDOWS\\system32\\lsass.exe";
		create=create_key(path); 
	} 

Kolejna część:
 

int test_key(void)
{
	int check; 
	HKEY hKey; 
	char path[BUFSIZE]; 
	DWORD buf_length=BUFSIZE; 
	int reg_key; 
	reg_key=RegOpenKeyEx(HKEY_LOCAL_MACHINE,"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run",0,KEY_QUERY_VALUE,&hKey); 
	if(reg_key!=0) 
	{ 
		check=1; 
		return check; 
	} 
	reg_key=RegQueryValueEx(hKey,"Kkey",NULL,NULL,(LPBYTE)path,&buf_length); 
	if((reg_key!=0)||(buf_length>BUFSIZE))
	{
		check=2;
	}
	if(reg_key==0)
	{
		check=0; 
		RegCloseKey(hKey); 
	}
}
int create_key(char *path) 
{
	int reg_key,check; 

	HKEY hkey; 
	reg_key=RegCreateKey(HKEY_LOCAL_MACHINE,"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run",&hkey); 
	
	if(reg_key==0) 
	{ 
		RegSetValueEx((HKEY)hkey,"Kkey",0,REG_SZ,(BYTE *)path,strlen(path)); 
		{
			check=0; 
		}
		return check; 
	} 
	if(reg_key!=0) 
	{
		check=1; 
	}
	return check;
}

Tylko problem jest w tym, że program nie uruchamia się przy starcie. Jakieś porady? Dzięki.

2 odpowiedzi

0 głosów
odpowiedź 5 kwietnia 2019 przez j23 Mędrzec (194,920 p.)

Zgaduje, że odpalasz program z uprawnieniami użytkownika, a dostęp do HKLM wymaga uprawnień administratorskich. Spróbuj z HKEY_CURRENT_USER.

komentarz 5 kwietnia 2019 przez FaloY Bywalec (2,180 p.)
Odpalam z uprawnieniami administratora.
komentarz 6 kwietnia 2019 przez j23 Mędrzec (194,920 p.)

Popraw to:

RegSetValueEx((HKEY)hkey, "Kkey", 0, REG_SZ, (BYTE *)path, strlen(path) + 1);

 

komentarz 7 kwietnia 2019 przez FaloY Bywalec (2,180 p.)
Chodzi hkey?
komentarz 7 kwietnia 2019 przez j23 Mędrzec (194,920 p.)

Serio, nie widzisz różnicy? Chodzi o strlen(path) + 1. Rozmiar danych musi uwzględniać zero kończące łańcuch znakowy.

komentarz 7 kwietnia 2019 przez FaloY Bywalec (2,180 p.)
Jak mam to zrobić? NIe rozumiem do teraz.
komentarz 7 kwietnia 2019 przez FaloY Bywalec (2,180 p.)
Nie chodzi czasami o uprawnienia na jakich bazuję aplikacja?
komentarz 8 kwietnia 2019 przez j23 Mędrzec (194,920 p.)

Przecież moja odpowiedź sugerowała, że może być problem z uprawnieniami w dostępie do linii HKLM. Twierdziłeś, że odpalasz program w trybie administratora, więc problemu być nie powinno od tej strony.

 

Poprawiłeś wywołanie RegSetValueEx na te, które podałem we wcześniejszym komentarzu?

komentarz 8 kwietnia 2019 przez FaloY Bywalec (2,180 p.)
Tak. Program dalej się nie odpala przy starcie systemu
komentarz 8 kwietnia 2019 przez j23 Mędrzec (194,920 p.)

Próbowałeś dodać wartość w linii HKEY_CURRENT_USER? Ilu bitowy jest system i aplikacja?

 

Próbowałeś bezpośrednio wywołać create_key, bez testowania funkcją test_key?

komentarz 8 kwietnia 2019 przez j23 Mędrzec (194,920 p.)

Spróbuj tak:

int create_key(const char *path) 
{
 	HKEY hkey; 

	int reg_key = RegOpenKeyEx(HKEY_LOCAL_MACHINE, 
							"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", 
							0, 
							KEY_WOW64_64KEY | KEY_SET_VALUE, 
							&hKey); 

	if(reg_key == ERROR_SUCCESS)
	{
		reg_key = RegSetValueEx((HKEY)hkey, "Kkey", 0, REG_SZ, (BYTE *)path, strlen(path) + 1);
		RegCloseKey(hKey); 
	}
	return reg_key == ERROR_SUCCESS ? 0 : 1;
}

Nie wiem, czy dobre wartości zwraca ta funkcja, bo używasz magicznych liczb. Założyłem, że 0 to sukces.

0 głosów
odpowiedź 5 kwietnia 2019 przez DeBos123 Nałogowiec (44,950 p.)
Sprawdzałeś czy klucz jest w ogóle w rejestrze?
komentarz 5 kwietnia 2019 przez FaloY Bywalec (2,180 p.)
Tak, żadnego śladu.
komentarz 5 kwietnia 2019 przez DeBos123 Nałogowiec (44,950 p.)
komentarz 5 kwietnia 2019 przez FaloY Bywalec (2,180 p.)
Dzięki, postaram się to ogarnąć

Podobne pytania

0 głosów
0 odpowiedzi 386 wizyt
0 głosów
2 odpowiedzi 307 wizyt
0 głosów
2 odpowiedzi 275 wizyt
pytanie zadane 29 lipca 2018 w Systemy operacyjne, programy przez niezalogowany

92,555 zapytań

141,402 odpowiedzi

319,545 komentarzy

61,939 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...