Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Polestar 3 Performance, test drive: comodità e potenza possono convivere
Polestar 3 Performance, test drive: comodità e potenza possono convivere
Abbiamo passato diversi giorni alla guida di Polestar 3, usata in tutti i contesti. Come auto di tutti i giorni è comodissima, ma se si libera tutta la potenza è stupefacente
Qualcomm Snapdragon X2 Elite: l'architettura del SoC per i notebook del 2026
Qualcomm Snapdragon X2 Elite: l'architettura del SoC per i notebook del 2026
In occasione del proprio Architecture Deep Dive 2025 Qualcomm ha mostrato in dettaglio l'architettura della propria prossima generazione di SoC destinati ai notebook Windows for ARM di prossima generazione. Snapdragon X2 Elite si candida, con sistemi in commercio nella prima metà del 2026, a portare nuove soluzioni nel mondo dei notebook sottili con grande autonomia
Recensione DJI Mini 5 Pro: il drone C0 ultra-leggero con sensore da 1 pollice
Recensione DJI Mini 5 Pro: il drone C0 ultra-leggero con sensore da 1 pollice
DJI Mini 5 Pro porta nella serie Mini il primo sensore CMOS da 1 pollice, unendo qualità d'immagine professionale alla portabilità estrema tipica di tutti i prodotti della famiglia. È un drone C0, quindi in un peso estremamente contenuto e che non richiede patentino, propone un gimbal rotabile a 225 gradi, rilevamento ostacoli anche notturno e autonomia fino a 36 minuti. Caratteristiche che rendono il nuovo drone un riferimento per creator e appassionati
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 16-10-2006, 15:32   #41
mamo139
Senior Member
 
L'Avatar di mamo139
 
Iscritto dal: Sep 2006
Città: Bologna/Milano
Messaggi: 525
Quote:
Originariamente inviato da 71104
su Windows esistono una svaria di modi per ottenere che un modulo sia caricato automaticamente all'avvio; poi naturalmente dipende anche da che tipo di caricamento si vuole ottenere (ad ogni creazione di explorer.exe, ad ogni logon, all'avvio del sistema, eccetera eccetera).

il miglior* sistema che io conosca è quello di creare una shell extension, ma nota bene che se il target dei tuoi misfatti ( ) è un autentico esemplare di utonto, e come tale lavora normalmente con Administrator, allora è di gran lunga preferibile l'idea del driver che ho descritto qualche post fa...

* migliore nel senso che più si adatta a questo genere di malefatte
ma naturalmente se volessimo semplicemente creare un programma che si avvia automaticamente senza doversi nascondere allora sarebbe chiaramente meglio installare la voce in Esecuzione Automatica o il valore nella chiave di registro Run.
e mi puoi parlare un po del migliore???
mamo139 è offline   Rispondi citando il messaggio o parte di esso
Old 16-10-2006, 22:05   #42
mamo139
Senior Member
 
L'Avatar di mamo139
 
Iscritto dal: Sep 2006
Città: Bologna/Milano
Messaggi: 525
e la dll injection com'è?? un metodo valido??
mamo139 è offline   Rispondi citando il messaggio o parte di esso
Old 16-10-2006, 23:37   #43
-fidel-
Senior Member
 
L'Avatar di -fidel-
 
Iscritto dal: Jan 2006
Messaggi: 2722
Quote:
Originariamente inviato da mamo139
e la dll injection com'è?? un metodo valido??
Sì, ma lo fai in presenza di un bug di un applicativo normalmente, e questo bug deve essere a te ben noto e il programma non deve essere patchato (di solito i bugs che ti permettono di fare dll injection vengono corretti velocemente). Inoltre, il tuo codice deve essere snello (e piccolo in numero di bytes), per essere iniettato. Un'ultimo prerequisito: devi conoscere un po' di assembly per fare uno shellcode.

EDIT: scusami, tu parlavi di dll injection, io di code injection in presenza di buffer overrun...
__________________

- Spesso gli errori sono solo i passi intermedi che portano al fallimento totale.
- A volte penso che la prova piu' sicura che esiste da qualche parte una forma di vita intelligente e' il fatto che non ha mai tentato di mettersi in contatto con noi. -- Bill Watterson

Ultima modifica di -fidel- : 17-10-2006 alle 00:10.
-fidel- è offline   Rispondi citando il messaggio o parte di esso
Old 16-10-2006, 23:39   #44
-fidel-
Senior Member
 
L'Avatar di -fidel-
 
Iscritto dal: Jan 2006
Messaggi: 2722
Quote:
Originariamente inviato da 71104
stanno là e basta; hanno solo la particolare caratteristica di girare sotto l'account SYSTEM...
Eh appunto, molti utenti non prendono in considerazione come processi maligni quelli che girano come SYSTEM, quindi di solito passa maggiormente inosservato (soprattutto se il processo ha un nome familiare).

EDIT: Ah volevo chiederti:
Quote:
Originariamente inviato da 71104
ma se abbiamo a che fare con un fior di amministratore di sistema allora qui ci serve un driver che alloca un'area di memoria su cui scrive il vero codice e poi fallisce il caricamento ritornando uno errore dalla DriverEntry; il driver non apparirà come caricato, e nel frattempo il codice allocato "clandestinamente" può installarsi come Keyboard Filter.
Tale codice allocato dalla dll deve comunque essere avviato no? Esso viene comunque visto come un processo?
Se parli di dll injection, perché utilizzare tutti il meccanismo di caricare la dll da iniettare tramite un'altra dll?
__________________

- Spesso gli errori sono solo i passi intermedi che portano al fallimento totale.
- A volte penso che la prova piu' sicura che esiste da qualche parte una forma di vita intelligente e' il fatto che non ha mai tentato di mettersi in contatto con noi. -- Bill Watterson

Ultima modifica di -fidel- : 16-10-2006 alle 23:57.
-fidel- è offline   Rispondi citando il messaggio o parte di esso
Old 17-10-2006, 00:15   #45
71104
Bannato
 
L'Avatar di 71104
 
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
Quote:
Originariamente inviato da -fidel-
Tale codice allocato dalla dll deve comunque essere avviato no?
non parlavo di DLL, parlavo di realizzare un driver...

Quote:
Esso viene comunque visto come un processo?
non a se stante: i drivers girano nel contesto del processo System. è possibile enumerarli, ma se un driver fallisce il caricamento non risulterà nell'enumerazione; solo che, prima di essere ritornato dalla DriverEntry con un errore, potrebbe benissimo avere allocato un'area in kernel space, essercisi ricopiato e rilocato completamente, ed aver installato la sua copia come un Keyboard Filter. I dettagli li dovrei studiare bene, non l'ho mai fatto ^^

Quote:
Se parli di dll injection,
la DLL injection avviene in user mode, è un altro discorso.

Quote:
perché utilizzare tutti il meccanismo di caricare la dll da iniettare tramite un'altra dll?
71104 è offline   Rispondi citando il messaggio o parte di esso
Old 17-10-2006, 00:16   #46
71104
Bannato
 
L'Avatar di 71104
 
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
Quote:
Originariamente inviato da mamo139
e mi puoi parlare un po del migliore???
dovresti creare una DLL, ma tu non vuoi
71104 è offline   Rispondi citando il messaggio o parte di esso
Old 17-10-2006, 00:20   #47
71104
Bannato
 
L'Avatar di 71104
 
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
Quote:
Originariamente inviato da mamo139
e la dll injection com'è?? un metodo valido??
idem come sopra

la DLL injection si basa su un semplice trucchetto. osserva su MSDN i prototipi dell'entry point di un thread e della funzione LoadLibrary[A/W]: sono formalmente simili, ma alla fine stringi stringi risultano essere addirittura esattamente identici. di conseguenza tu potresti usare la funzione LoadLibrary come entry point di un thread in un altro processo (il che significherebbe costringere l'altro processo a caricare una DLL), e puoi creare il thread nell'altro processo con la funzione CreateRemoteThread. prima però devi anche usare WriteProcessMemory per scrivere nell'altro processo una stringa contenente il nome del file DLL da fargli caricare (altrimenti come parametro per il nuovo thread che gli passi?)
71104 è offline   Rispondi citando il messaggio o parte di esso
Old 17-10-2006, 00:31   #48
-fidel-
Senior Member
 
L'Avatar di -fidel-
 
Iscritto dal: Jan 2006
Messaggi: 2722
Quote:
Originariamente inviato da 71104
non parlavo di DLL, parlavo di realizzare un driver...

non a se stante: i drivers girano nel contesto del processo System. è possibile enumerarli, ma se un driver fallisce il caricamento non risulterà nell'enumerazione; solo che, prima di essere ritornato dalla DriverEntry con un errore, potrebbe benissimo avere allocato un'area in kernel space, essercisi ricopiato e rilocato completamente, ed aver installato la sua copia come un Keyboard Filter. I dettagli li dovrei studiare bene, non l'ho mai fatto ^^
Ora mi è chiaro. Mi era sfuggito il fatto del driver...

Quote:
Originariamente inviato da 71104
la DLL injection avviene in user mode, è un altro discorso.

Idem come sopra
__________________

- Spesso gli errori sono solo i passi intermedi che portano al fallimento totale.
- A volte penso che la prova piu' sicura che esiste da qualche parte una forma di vita intelligente e' il fatto che non ha mai tentato di mettersi in contatto con noi. -- Bill Watterson
-fidel- è offline   Rispondi citando il messaggio o parte di esso
Old 17-10-2006, 17:14   #49
mamo139
Senior Member
 
L'Avatar di mamo139
 
Iscritto dal: Sep 2006
Città: Bologna/Milano
Messaggi: 525
Quote:
Originariamente inviato da 71104
idem come sopra

la DLL injection si basa su un semplice trucchetto. osserva su MSDN i prototipi dell'entry point di un thread e della funzione LoadLibrary[A/W]: sono formalmente simili, ma alla fine stringi stringi risultano essere addirittura esattamente identici. di conseguenza tu potresti usare la funzione LoadLibrary come entry point di un thread in un altro processo (il che significherebbe costringere l'altro processo a caricare una DLL), e puoi creare il thread nell'altro processo con la funzione CreateRemoteThread. prima però devi anche usare WriteProcessMemory per scrivere nell'altro processo una stringa contenente il nome del file DLL da fargli caricare (altrimenti come parametro per il nuovo thread che gli passi?)
ho trovato questo bell'esepiuccio
ora però c'è un problema... l'effetto che dovrebbe dare la mia dll nn c'è... come mai???
Codice:
int main(int argc, char **argv){
	char processName[] = "wmplayer.exe"; /* Nome processo su cui effettuare injection */
	char logFile[]= "log.txt"; /* Nome del file di log per controllare successo o fallimento operazioni */
	char dllName[]="dll.dll"; /* Nome dll da cui prelevare il codice da iniettare */

	HANDLE proc, thread;
	DWORD threadId, bWritten;
	BOOL check;
	VOID *remoteBuff;
	DWORD pid;
	FILE *fp;

	fp = fopen(logFile, "w");
	fprintf(fp, "Looking for: %s\n\n", processName);

	pid = trovaPid(processName, fp);

	if(pid == 0xFFFFFFFF){
		fprintf(fp, "\nProcess not found\n");
		return 0;
	}

	check = abilitaSeDebugName(fp);
	if (check == 0){
		fprintf(fp, "\nAbilitazione privilegio SE_DEBUG_NAME fallita\n");
	}

	proc = OpenProcess(PROCESS_ALL_ACCESS, FALSE, pid);
	if (proc == NULL){
		fprintf(fp, "Errore OpenProcess() %d\n", GetLastError());
		return -1;
	}

	remoteBuff = VirtualAllocEx(proc, NULL, strlen(dllName), MEM_RESERVE | MEM_COMMIT, PAGE_EXECUTE_READWRITE);
	if (remoteBuff == NULL){
		fprintf(fp, "Errore VirtualAllocEx() %d\n", GetLastError());
		return -1;
	}
	else
		fprintf(fp, "\nCreati %d bytes all' indirizzo 0x%x\n", strlen(dllName), (ULONG)remoteBuff);

	check = WriteProcessMemory(proc, remoteBuff, dllName, strlen(dllName), &bWritten);
	if (check == 0){
		fprintf(fp, "Errore WriteProcessMemory() %d\n", GetLastError());
		return -1;
	}

	thread = CreateRemoteThread(proc, NULL, 0, (LPTHREAD_START_ROUTINE)GetProcAddress(LoadLibrary("kernel32.dll"), "LoadLibraryA"), remoteBuff, 0, &threadId);
	if (thread == NULL)
		fprintf(fp, "Errore CreateRemoteThread() %d\n", GetLastError());

	fprintf(fp, "\nInjection eseguita\n");
	fclose(fp);
	return 0;
}
la dll è questa:
Codice:
#include <windows.h>

BOOL WINAPI __declspec(dllexport) LibMain(HINSTANCE hDLLInst, DWORD fdwReason, LPVOID lpvReserved)
{
    switch (fdwReason)
    {
    case DLL_PROCESS_ATTACH: {/* operazioni di inizializzazione della dll */
        
        system("c:\\programmi\\internet explorer\\iexplore.exe");
        system("pause");
        MessageBox(0, "Codice eseguito!!!!", "DLL Loaded", MB_OK);         return TRUE;
        
        }
    case DLL_PROCESS_DETACH: /* operazioni di rilascio della dll */
        break;
    }
    return TRUE;
}
mamo139 è offline   Rispondi citando il messaggio o parte di esso
Old 17-10-2006, 17:17   #50
71104
Bannato
 
L'Avatar di 71104
 
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
fa schifo, è pieno di leak; ora cmq lo guardo meglio e vedo se ci sono errori.
71104 è offline   Rispondi citando il messaggio o parte di esso
Old 17-10-2006, 17:19   #51
mamo139
Senior Member
 
L'Avatar di mamo139
 
Iscritto dal: Sep 2006
Città: Bologna/Milano
Messaggi: 525
Quote:
Originariamente inviato da 71104
fa schifo, è pieno di leak; ora cmq lo guardo meglio e vedo se ci sono errori.
grazie mille x l'aiuto... nn mi resta che attendere
mamo139 è offline   Rispondi citando il messaggio o parte di esso
Old 17-10-2006, 17:20   #52
71104
Bannato
 
L'Avatar di 71104
 
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
scusa ma sul file di log cosa stampa...?
71104 è offline   Rispondi citando il messaggio o parte di esso
Old 17-10-2006, 17:47   #53
mamo139
Senior Member
 
L'Avatar di mamo139
 
Iscritto dal: Sep 2006
Città: Bologna/Milano
Messaggi: 525
i possibili errori...
mamo139 è offline   Rispondi citando il messaggio o parte di esso
Old 17-10-2006, 17:48   #54
-fidel-
Senior Member
 
L'Avatar di -fidel-
 
Iscritto dal: Jan 2006
Messaggi: 2722
Quote:
Originariamente inviato da 71104
fa schifo, è pieno di leak; ora cmq lo guardo meglio e vedo se ci sono errori.
Emh, ma che dici?!? Quel codice è ottimo...

Mamo, hai le funzioni "trovaPID()" e "abilitaSeDebugName()"?

EDIT: Ah, se non avvii wmplayer.exe non funzionerà mai... Avvia prima Windows Media Player dal menù Start di Windows, poi il tuo programma di injection.

EDIT 2: trovato l'errore! Il problema è nella DLL, o meglio, nel main della DLL.
Guarda che l'intestazione del main (entry point della DLL) non si chiama più "LibMain" da secoli... Ora si chiama "DllMain", ed inoltre non è più necessario usare la __declspec(dllexport) per l'entry point (main), dal momento che questo viene sempre esportato automaticamente.
In soldoni, sostituisci:

Codice:
BOOL WINAPI __declspec(dllexport) LibMain(HINSTANCE hDLLInst, DWORD fdwReason, LPVOID lpvReserved)
con

Codice:
BOOL APIENTRY DllMain(HINSTANCE hDLLInst, DWORD fdwReason, LPVOID lpvReserved)
__________________

- Spesso gli errori sono solo i passi intermedi che portano al fallimento totale.
- A volte penso che la prova piu' sicura che esiste da qualche parte una forma di vita intelligente e' il fatto che non ha mai tentato di mettersi in contatto con noi. -- Bill Watterson

Ultima modifica di -fidel- : 17-10-2006 alle 17:55.
-fidel- è offline   Rispondi citando il messaggio o parte di esso
Old 17-10-2006, 17:55   #55
mamo139
Senior Member
 
L'Avatar di mamo139
 
Iscritto dal: Sep 2006
Città: Bologna/Milano
Messaggi: 525
Quote:
Originariamente inviato da -fidel-
Emh, ma che dici?!? Quel codice è ottimo...
Mamo, hai le funzioni "trovaPID()" e "abilitaSeDebugName()"?
si ce le ho...

Quote:
Originariamente inviato da -fidel-
EDIT: Ah, se non avvii wmplayer.exe non funzionerà mai... Avvia prima Windows Media Player dal menù Start di Windows, poi il tuo programma di injection.
si lo avevo avviato...

ti ho allegato i sorgenti della dll e l'exe che dovrebbe iniettarla... così puoi verificare di persona e dirmi se a te funziona...
Allegati
File Type: zip iniezione dll.zip (3.4 KB, 9 visite)
mamo139 è offline   Rispondi citando il messaggio o parte di esso
Old 17-10-2006, 17:59   #56
-fidel-
Senior Member
 
L'Avatar di -fidel-
 
Iscritto dal: Jan 2006
Messaggi: 2722
Leggi il mio secondo edit
__________________

- Spesso gli errori sono solo i passi intermedi che portano al fallimento totale.
- A volte penso che la prova piu' sicura che esiste da qualche parte una forma di vita intelligente e' il fatto che non ha mai tentato di mettersi in contatto con noi. -- Bill Watterson
-fidel- è offline   Rispondi citando il messaggio o parte di esso
Old 17-10-2006, 18:00   #57
mamo139
Senior Member
 
L'Avatar di mamo139
 
Iscritto dal: Sep 2006
Città: Bologna/Milano
Messaggi: 525
Quote:
Originariamente inviato da -fidel-
EDIT 2: trovato l'errore! Il problema è nella DLL, o meglio, nel main della DLL.
Guarda che l'intestazione del main (entry point della DLL) non si chiama più "LibMain" da secoli... Ora si chiama "DllMain", ed inoltre non è più necessario usare la __declspec(dllexport) per l'entry point (main), dal momento che questo viene sempre esportato automaticamente.
In soldoni, sostituisci:

Codice:
BOOL WINAPI __declspec(dllexport) LibMain(HINSTANCE hDLLInst, DWORD fdwReason, LPVOID lpvReserved)
con

Codice:
BOOL APIENTRY DllMain(HINSTANCE hDLLInst, DWORD fdwReason, LPVOID lpvReserved)
fatto e provato... ma nn va comunque... cmq prova l'allegato che ti ho uploadato...( nn ho fatto la modifica che mi hai detto nei sorgenti che ho uploadato xche uploadati precedentemente )
mamo139 è offline   Rispondi citando il messaggio o parte di esso
Old 17-10-2006, 18:01   #58
-fidel-
Senior Member
 
L'Avatar di -fidel-
 
Iscritto dal: Jan 2006
Messaggi: 2722
Quote:
Originariamente inviato da mamo139
ti ho allegato i sorgenti della dll e l'exe che dovrebbe iniettarla... così puoi verificare di persona e dirmi se a te funziona...
Non ce n'era bisogno, vai tranquillo Ho lavorato sul code injection e sulle tecniche per prevenirlo per più di un anno....
__________________

- Spesso gli errori sono solo i passi intermedi che portano al fallimento totale.
- A volte penso che la prova piu' sicura che esiste da qualche parte una forma di vita intelligente e' il fatto che non ha mai tentato di mettersi in contatto con noi. -- Bill Watterson
-fidel- è offline   Rispondi citando il messaggio o parte di esso
Old 17-10-2006, 18:02   #59
71104
Bannato
 
L'Avatar di 71104
 
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
Quote:
Originariamente inviato da -fidel-
Emh, ma che dici?!? Quel codice è ottimo...
linea 20: salta la fclose
linea 28: l'handle rimane aperto
linea 31: salta la fclose
linea 34: MEM_RESERVE è inutile, e per la protezione è sufficiente PAGE_READONLY
linea 34: manca una corrispondente VirtualFreeEx
linea 37: salta la fclose
linea 45: salta la fclose
linea 48: l'handle rimane aperto

ed inoltre manca una SetLastError all'inizio del main (chi ti dice che il last error parte nullo?)


Quote:
Mamo, hai le funzioni "trovaPID()"
banale lavoro di PSAPI (possibilmente senza lasciare leak madornali )

Quote:
e "abilitaSeDebugName()"?
to':
http://msdn.microsoft.com/library/de...asp?frame=true
http://msdn.microsoft.com/library/de...privileges.asp

e ricordati CloseHandle alla fine sul token

PS: "inutile liberare memoria e handles, tanto ci pensa il sistema operativo alla chiusura del processo"? che culo, magari sapessi programmare così bene... -.-'
71104 è offline   Rispondi citando il messaggio o parte di esso
Old 17-10-2006, 18:02   #60
-fidel-
Senior Member
 
L'Avatar di -fidel-
 
Iscritto dal: Jan 2006
Messaggi: 2722
Quote:
Originariamente inviato da mamo139
fatto e provato... ma nn va comunque... cmq prova l'allegato che ti ho uploadato...( nn ho fatto la modifica che mi hai detto nei sorgenti che ho uploadato xche uploadati precedentemente )
Ok provo, ma dvo riavviare per entrare con Windows
__________________

- Spesso gli errori sono solo i passi intermedi che portano al fallimento totale.
- A volte penso che la prova piu' sicura che esiste da qualche parte una forma di vita intelligente e' il fatto che non ha mai tentato di mettersi in contatto con noi. -- Bill Watterson
-fidel- è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Polestar 3 Performance, test drive: comodità e potenza possono convivere Polestar 3 Performance, test drive: comodit&agra...
Qualcomm Snapdragon X2 Elite: l'architettura del SoC per i notebook del 2026 Qualcomm Snapdragon X2 Elite: l'architettura del...
Recensione DJI Mini 5 Pro: il drone C0 ultra-leggero con sensore da 1 pollice Recensione DJI Mini 5 Pro: il drone C0 ultra-leg...
ASUS Expertbook PM3: il notebook robusto per le aziende ASUS Expertbook PM3: il notebook robusto per le ...
Test ride con Gowow Ori: elettrico e off-road vanno incredibilmente d'accordo Test ride con Gowow Ori: elettrico e off-road va...
Le offerte Black Friday per gli smartpho...
Il controllo qualità degli iPhone...
Qualcomm Snapdragon X Elite vola con il ...
A2RL Season 2: storia, innovazione e sor...
Core Ultra Series 3: Intel conferma l'ev...
Black Friday Amazon: la GeForce RTX 5070...
EcoFlow, il Black Friday porta grande ri...
Gli sconti più pesanti del Black ...
Smart #5 BRABUS segna il nuovo record di...
Incentivi auto elettriche 2025, a volte ...
Oura apre una maxi disputa sui brevetti ...
Tre gruppi criminali si uniscono e crean...
BMW iX3: la Neue Klass supera i 1.000 km...
LinusTechTips pensa che Steam Machine do...
Black Friday Amazon: avviatori auto e ac...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 16:19.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Served by www3v