Torna indietro   Hardware Upgrade Forum > Software > Programmazione

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
ASUS Expertbook PM3: il notebook robusto per le aziende
ASUS Expertbook PM3: il notebook robusto per le aziende
Pensato per le necessità del pubblico d'azienda, ASUS Expertbook PM3 abbina uno chassis particolrmente robusto ad un pannello da 16 pollici di diagonale che avantaggia la produttività personale. Sotto la scocca troviamo un processore AMD Ryzen AI 7 350, che grazie alla certificazione Copilot+ PC permette di sfruttare al meglio l'accelerazione degli ambiti di intelligenza artificiale
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 30-07-2007, 16:57   #1
KrYeD
Member
 
Iscritto dal: Apr 2006
Messaggi: 83
[c] consiglio dll

ho una dll che serve per implementare un hook che teoricamente nn si dovrebbe vedere

per eseguirla mi conviene utilizzare un normale programma che nn crei nessuna finestra ma facilmente killabile da un utente + "attento"
oppure usare qualche tecnica in particolare?

ho letto di queste dll injection ma gli antivirus fanno delle storie, ho letto anche di questi SHATTER ATTACK ma sn un'attimino complessi...
__________________
AMD Athlon 64 3500+ 939pin Venice TRAY ~~ LanParty UT nF4 SLI-D ~~ 2x512 GeIL Value MemoryPC3200 DDR400 ~~ Zalman CNPS 7000 Cu ~~ Nvidia GeForce 7600 GT ~~ Maxtor HD
KrYeD è offline   Rispondi citando il messaggio o parte di esso
Old 01-08-2007, 12:26   #2
KrYeD
Member
 
Iscritto dal: Apr 2006
Messaggi: 83
__________________
AMD Athlon 64 3500+ 939pin Venice TRAY ~~ LanParty UT nF4 SLI-D ~~ 2x512 GeIL Value MemoryPC3200 DDR400 ~~ Zalman CNPS 7000 Cu ~~ Nvidia GeForce 7600 GT ~~ Maxtor HD
KrYeD è offline   Rispondi citando il messaggio o parte di esso
Old 01-08-2007, 12:53   #3
71104
Bannato
 
L'Avatar di 71104
 
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
un modo semplice di "lanciare" una DLL è usare regsvr32.exe
71104 è offline   Rispondi citando il messaggio o parte di esso
Old 01-08-2007, 13:04   #4
ilsensine
Senior Member
 
L'Avatar di ilsensine
 
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
Quote:
Originariamente inviato da 71104 Guarda i messaggi
un modo semplice di "lanciare" una DLL è usare regsvr32.exe
Forse intendi...rundll32
__________________
0: or %edi, %ecx; adc %eax, (%edx); popf; je 0b-22; pop %ebx; fadds 0x56(%ecx); lds 0x56(%ebx), %esp; mov %al, %al
andeqs pc, r1, #147456; blpl 0xff8dd280; ldrgtb r4, [r6, #-472]; addgt r5, r8, r3, ror #12
ilsensine è offline   Rispondi citando il messaggio o parte di esso
Old 01-08-2007, 15:48   #5
71104
Bannato
 
L'Avatar di 71104
 
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
Quote:
Originariamente inviato da ilsensine Guarda i messaggi
Forse intendi...rundll32
veramente no, parlavo proprio di regsvr32: è un programma che serve tra l'altro a registrare le shell extensions, cioè quelle DLL che sono dei plugins per la shell grafica di Windows (per esempio possono aggiungere voci nei menu di contesto che appaiono quando si fa clic destro sull'icona di un file; WinRAR lo fa). i motivi percui suggerisco regsvr32 anziché rundll32 sono i seguenti:
1) non conosco molto bene rundll32 ma mi pare (anche dalla descrizione che leggo nel link) che la DLL caricata debba rispettare un'interfaccia ben definita e che non possa chiamare le API
2) non è necessario realizzare una vera e propria shell extension: regsvr32 carica la DLL e ne chiama l'entry point, qualunque cosa contenga. a quel punto è fatta: del tuo codice viene eseguito, e quel codice può anche chiamare delle funzioni API. eseguito quel codice, della shell extension può anche fregarsene e far ritornare FALSE alla DllMain, simulando un errore di caricamento. però intanto il tuo codice è stato eseguito e tramite di esso la tua DLL può essersi iniettata chissà dove.
71104 è offline   Rispondi citando il messaggio o parte di esso
Old 02-08-2007, 14:58   #6
KrYeD
Member
 
Iscritto dal: Apr 2006
Messaggi: 83
uhm quindi bastare fare un semplice
Regsvr32.exe c:\prova\nomefle.dll

per eseguire una dll senza prg strani che girano?
__________________
AMD Athlon 64 3500+ 939pin Venice TRAY ~~ LanParty UT nF4 SLI-D ~~ 2x512 GeIL Value MemoryPC3200 DDR400 ~~ Zalman CNPS 7000 Cu ~~ Nvidia GeForce 7600 GT ~~ Maxtor HD
KrYeD è offline   Rispondi citando il messaggio o parte di esso
Old 02-08-2007, 15:42   #7
71104
Bannato
 
L'Avatar di 71104
 
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
Quote:
Originariamente inviato da KrYeD Guarda i messaggi
uhm quindi bastare fare un semplice
Regsvr32.exe c:\prova\nomefle.dll

per eseguire una dll senza prg strani che girano?
si però devi avere l'accortezza di ritornare FALSE dalla DllMain, altrimenti regsvr32 continuerà a caricare la tua ipotetica shell extension aspettandosi di trovare nella tua DLL tutta l'interfaccia necessaria. in pratica devi simulare un errore di caricamento.

inoltre io ci metterei per sicurezza anche l'opzione /s:
Codice:
regsvr32 /s c:\blah\doh.dll
71104 è offline   Rispondi citando il messaggio o parte di esso
Old 02-08-2007, 18:51   #8
KrYeD
Member
 
Iscritto dal: Apr 2006
Messaggi: 83
uhm si cn quello me lo carica però se metto return false mi si blocca subito... invece se lascio true sembra funzionare ma viene quasi subito rilasciata
__________________
AMD Athlon 64 3500+ 939pin Venice TRAY ~~ LanParty UT nF4 SLI-D ~~ 2x512 GeIL Value MemoryPC3200 DDR400 ~~ Zalman CNPS 7000 Cu ~~ Nvidia GeForce 7600 GT ~~ Maxtor HD
KrYeD è offline   Rispondi citando il messaggio o parte di esso
Old 02-08-2007, 21:47   #9
71104
Bannato
 
L'Avatar di 71104
 
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
Quote:
Originariamente inviato da KrYeD Guarda i messaggi
uhm si cn quello me lo carica però se metto return false mi si blocca subito... invece se lascio true sembra funzionare ma viene quasi subito rilasciata
la tua DLL non possiede l'interfaccia necessaria per essere realmente registrata, quindi devi mettere un return FALSE. il motivo percui smette subito di funzionare dipende dal codice che viene eseguito dalla DllMain prima di ritornare con FALSE. puoi postarlo? casomai prova anche ad incrementare il reference count della tua DLL facendo una LoadLibrary passandogli il nome della tua DLL (in questo modo una sola FreeLibrary non basterà a scaricarla, ne serviranno due e suppongo che regsvr32 ne faccia una sola), ma non credo che servirà a molto perché comunque regsvr32 non è un programma fatto per restare in esecuzione: registra ed esce, sia che abbia avuto successo sia che non ne abbia avuto. hai detto di aver utilizzato un Windows Hook: ora controllo se i Windows Hooks vengono eliminati automaticamente quando la DLL viene scaricata dal processo originario.
71104 è offline   Rispondi citando il messaggio o parte di esso
Old 02-08-2007, 22:09   #10
KrYeD
Member
 
Iscritto dal: Apr 2006
Messaggi: 83
per ora stavo giochicchiando con la dll postata da fidel nel 3d del keylogger... nn essendo capace di rifarla provo a cambiarci qualcosina per migliorarlo e capire esattamente cosa fa... ho provato anche a cercare un po' su internet ma nn trovo niente di interessante...
per ora sto usando un semplice LoadLibrary e se metto la visualizzazione di un messaggio prima del rilascio della dll questa funziona correttamente, appena premo ok avviene il rilascio e smette di funzionare.. molto probabilmente è + complessa di quello che pensavo e nn riesco a farla partire...
__________________
AMD Athlon 64 3500+ 939pin Venice TRAY ~~ LanParty UT nF4 SLI-D ~~ 2x512 GeIL Value MemoryPC3200 DDR400 ~~ Zalman CNPS 7000 Cu ~~ Nvidia GeForce 7600 GT ~~ Maxtor HD
KrYeD è offline   Rispondi citando il messaggio o parte di esso
Old 02-08-2007, 22:13   #11
71104
Bannato
 
L'Avatar di 71104
 
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
non so se l'hook viene cancellato automaticamente alla terminazione del processo originario ma in teoria è una cosa possibile, quindi tanto vale premunirsi contro tale eventualità. l'idea che mi è venuta in mente è questa: ogni volta che nella DllMain ricevi una notifica DLL_PROCESS_ATTACH chiami LoadLibrary col nome della tua DLL, incrementandone così il reference count. tieni però presente che l'hook verrebbe disinstallato... potresti installarne uno nuovo, ma cercherei una soluzione più semplice. domanda: l'hook ti serve per davvero o è solo un modo per far sì che User32 ti caricasse dappertutto?
71104 è offline   Rispondi citando il messaggio o parte di esso
Old 02-08-2007, 22:17   #12
71104
Bannato
 
L'Avatar di 71104
 
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
Quote:
Originariamente inviato da KrYeD Guarda i messaggi
per ora stavo giochicchiando con la dll postata da fidel nel 3d del keylogger... nn essendo capace di rifarla provo a cambiarci qualcosina per migliorarlo e capire esattamente cosa fa... ho provato anche a cercare un po' su internet ma nn trovo niente di interessante...
per ora sto usando un semplice LoadLibrary e se metto la visualizzazione di un messaggio prima del rilascio della dll questa funziona correttamente, appena premo ok avviene il rilascio e smette di funzionare.. molto probabilmente è + complessa di quello che pensavo e nn riesco a farla partire...
il problema è che se usi rundll32 come proponeva ilsensine poi il processo rundll32.exe resta visibile nel Task Manager e può essere terminato. per un utonto è un processo "fidato", ma un utente un po' più accorto potrebbe semplicemente informarsi su cosa faccia realmente (esegue gli applet del pannello di controllo) e vedendo che resta in esecuzione pure col pannello di controllo chiuso si insospettirebbe e lo terminerebbe, quindi sarebbe meglio se la DLL installasse l'hook solo quando è stata caricata in qualche processo di "lungo termine", come explorer.exe. ho partecipato anche io al thread del keylogger che dici (se ho capito qual è), e ricordo che la DLL di fidel non prevedeva l'eventualità che l'hook dovesse essere installato da un processo diverso da quello che effettua il primo caricamento.
71104 è offline   Rispondi citando il messaggio o parte di esso
Old 02-08-2007, 22:28   #13
KrYeD
Member
 
Iscritto dal: Apr 2006
Messaggi: 83
esatto è lo stesso 3d dove avevi postato anche te... avevo pensato a fare un injection dll ma ormai gli antivirus fanno storie
così avevo inizialmente provato a vedere se funzionava caricandola normalmente ma appena si scarica puff scompare anche l'hook
__________________
AMD Athlon 64 3500+ 939pin Venice TRAY ~~ LanParty UT nF4 SLI-D ~~ 2x512 GeIL Value MemoryPC3200 DDR400 ~~ Zalman CNPS 7000 Cu ~~ Nvidia GeForce 7600 GT ~~ Maxtor HD
KrYeD è offline   Rispondi citando il messaggio o parte di esso
Old 02-08-2007, 23:23   #14
tomminno
Senior Member
 
Iscritto dal: Oct 2005
Messaggi: 3306
Quote:
Originariamente inviato da KrYeD Guarda i messaggi
esatto è lo stesso 3d dove avevi postato anche te... avevo pensato a fare un injection dll ma ormai gli antivirus fanno storie
così avevo inizialmente provato a vedere se funzionava caricandola normalmente ma appena si scarica puff scompare anche l'hook
Io darei un'occhiata a questa:
http://www.codeproject.com/system/Paladin.asp
AVG 7.5 e Symantec Corporate non battono ciglio, riesci ad agganciare un hook a qualunque API Win32. L'unico problema che ho riscontrato è che su alcuni computer recenti provando a nascondersi al task manger questo viene terminato, sicuramente non è a causa dell'antivirus forse è il no execute (NX) che fa killare il processo, non ho ancora capito però se è questa la causa.
tomminno è offline   Rispondi citando il messaggio o parte di esso
Old 03-08-2007, 01:15   #15
71104
Bannato
 
L'Avatar di 71104
 
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
Quote:
Originariamente inviato da tomminno Guarda i messaggi
Io darei un'occhiata a questa:
http://www.codeproject.com/system/Paladin.asp
AVG 7.5 e Symantec Corporate non battono ciglio, riesci ad agganciare un hook a qualunque API Win32. L'unico problema che ho riscontrato è che su alcuni computer recenti provando a nascondersi al task manger questo viene terminato, sicuramente non è a causa dell'antivirus forse è il no execute (NX) che fa killare il processo, non ho ancora capito però se è questa la causa.
non se ne fa molto: da quanto ho capito vuole fare un keylogger, usando l'API Hooking dovrebbe hookare GetMessage; in linea di principio è una pessima strategia.

@KrYeD: la DLL injection presuppone che tu abbia già del tuo codice in esecuzione; se puoi fare questa assunzione allora possiamo procedere con una tecnica di DLL injection alternativa di mia invenzione () che forse non darà nell'occhio agli antivirus, o in alternativa si può provare qualche magheggio per far sì che gli antivirus non si accorgano di nulla. nella seconda ipotesi bisogna capire qual è di preciso il punto del codice che fa insospettire l'antivirus, ma dovrai procurarti qualche antivirus tra i più diffusi o tra quelli di cui più probabilmente dispone la tua vittima.

intanto chiariamo la situazione: tu puoi assumere di eseguire codice prima di aver iniettato la tua DLL ed avviato il keylogger?
71104 è offline   Rispondi citando il messaggio o parte di esso
Old 03-08-2007, 12:47   #16
KrYeD
Member
 
Iscritto dal: Apr 2006
Messaggi: 83
Quote:
Originariamente inviato da 71104 Guarda i messaggi
non se ne fa molto: da quanto ho capito vuole fare un keylogger, usando l'API Hooking dovrebbe hookare GetMessage; in linea di principio è una pessima strategia.

@KrYeD: la DLL injection presuppone che tu abbia già del tuo codice in esecuzione; se puoi fare questa assunzione allora possiamo procedere con una tecnica di DLL injection alternativa di mia invenzione () che forse non darà nell'occhio agli antivirus, o in alternativa si può provare qualche magheggio per far sì che gli antivirus non si accorgano di nulla. nella seconda ipotesi bisogna capire qual è di preciso il punto del codice che fa insospettire l'antivirus, ma dovrai procurarti qualche antivirus tra i più diffusi o tra quelli di cui più probabilmente dispone la tua vittima.

intanto chiariamo la situazione: tu puoi assumere di eseguire codice prima di aver iniettato la tua DLL ed avviato il keylogger?

uhm nel mio uso kav6, nell'altro pc uso norton quindi ne ho un paio da testare


beh si prima di iniettarlo posso eseguire qualcosa... (sempre se ho capito la domanda visto che mi sn appena svegliato )

cmq dici che la dll injection è la miglior soluzione per essere il + stealth possibili (senza complicarci troppo la vita) ?
__________________
AMD Athlon 64 3500+ 939pin Venice TRAY ~~ LanParty UT nF4 SLI-D ~~ 2x512 GeIL Value MemoryPC3200 DDR400 ~~ Zalman CNPS 7000 Cu ~~ Nvidia GeForce 7600 GT ~~ Maxtor HD
KrYeD è offline   Rispondi citando il messaggio o parte di esso
Old 03-08-2007, 15:38   #17
71104
Bannato
 
L'Avatar di 71104
 
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
Quote:
Originariamente inviato da KrYeD Guarda i messaggi
cmq dici che la dll injection è la miglior soluzione per essere il + stealth possibili (senza complicarci troppo la vita) ?
in realtà esistono programmi per enumerare le DLL caricate in un processo, di conseguenza sei comunque visibile, ma non credo che ti interessi nasconderti anche per queste evenienze.

per quanto riguarda la DLL injection, una delle innumerevoli tecniche consiste nel chiamare CreateRemoteThread passandogli come indirizzo dell'entry point l'indirizzo della funzione API LoadLibrary, cosicché il nuovo thread carichi la tua DLL. la prima cosa da fare è enumerare i processi con EnumProcesses e trovare quello che ti interessa. se per esempio quello che ti interessa è explorer.exe allora per ciascun processo enumerato devi ottenerne il base name con GetModuleBaseName e confrontarlo in maniera case insensitive con la stringa "explorer.exe". in questo modo trovi il PID di explorer.exe. trovato quello apri un HANDLE con OpenProcess, che alla fine di tutto chiuderai con CloseHandle.

ora viene l'injection vera e propria. la tecnica che ti spiegherò consiste nel chiamare CreateRemoteThread (che ti servirà a creare un thread nello spazio di indirizzamento del processo di explorer.exe) passandole come entry point la funzione API LoadLibrary, in maniera tale che il thread non farà altro che caricare la tua DLL.

la prima cosa da fare è scrivere nella memoria di explorer.exe il path completo della tua DLL: lo dovrai passare come argomento al nuovo thread (cioè alla LoadLibrary). quindi ricavati il path (questo sai tu come farlo, a seconda di dove prevedi che sarà la DLL), poi alloca un'area di memoria in explorer.exe grossa abbastanza utilizzando la VirtualAllocEx, ed infine scrivici il path con WriteProcessMemory.

fatto questo chiama CreateRemoteThread passandole al quarto parametro esattamente questa cosa:
Codice:
(LPTHREAD_START_ROUTINE)LoadLibraryA
ma attenzione a Unicode: io ho scritto LoadLibraryA perché ho dato per scontato che tu ti ricavassi il path in formato ANSI, ma se invece usi Unicode allora devi passargli LoadLibraryW.

se il thread viene creato attendi che esso termini passandone l'HANDLE alla WaitForSingleObject (l'HANDLE è quello ritornato dalla CreateRemoteThread), ed in caso analizzane il codice di uscita con la GetExitCodeThread per sapere se la DLL è stata caricata con successo (chiaramente il valore ritornato da GetExitCodeThread sarà esattamente lo stesso ritornato da LoadLibrary). in ogni caso ricordati ti deallocare con VirtualFreeEx la memoria che hai allocato con VirtualAllocEx per scrivere il path della DLL. infine chiudi con CloseHandle l'HANDLE del thread remoto.

prova a buttare del codice e a farlo andare, e se gli antivirus rompono le scatole vedremo di preciso quale chiamata API li fa insospettire e a seconda vedremo la soluzione migliore.

Ultima modifica di 71104 : 03-08-2007 alle 15:49.
71104 è offline   Rispondi citando il messaggio o parte di esso
Old 04-08-2007, 00:50   #18
KrYeD
Member
 
Iscritto dal: Apr 2006
Messaggi: 83
uhm ti ringrazio per la bellissima guida, ora sto tentando di metterla in pratica, con un po' (tanti) errori a quanto pare :P
__________________
AMD Athlon 64 3500+ 939pin Venice TRAY ~~ LanParty UT nF4 SLI-D ~~ 2x512 GeIL Value MemoryPC3200 DDR400 ~~ Zalman CNPS 7000 Cu ~~ Nvidia GeForce 7600 GT ~~ Maxtor HD
KrYeD è offline   Rispondi citando il messaggio o parte di esso
Old 04-08-2007, 14:18   #19
KrYeD
Member
 
Iscritto dal: Apr 2006
Messaggi: 83
per ora ho creato questa cosa sbagliatissima usando solo msdn
ovviamente nn funziona, ma almeno dimmi se mi sto avvicinando a qualcosa oppure sono partito per la tangente

Codice:
int _tmain(int argc, _TCHAR* argv[])
{
	DWORD proclist[1024], nbit, cProcesses, nsize[50];
int i;
HANDLE handleproc, p;
LPWSTR nomeproc;
LPVOID ind;
EnumProcesses(proclist,sizeof(proclist),&nbit);

    cProcesses = nbit / sizeof(DWORD);

    for ( i = 0; i < cProcesses; i++ )
        if( proclist[i] != 0 )
		{
			handleproc = OpenProcess(PROCESS_VM_WRITE,FALSE,proclist[i]);
            GetModuleBaseName(handleproc,NULL,&nomeproc,nsize);
			if(nomeproc=="calc.exe") //uhm
			{
				p=LoadLibrary("C:\\key.dll");
				ind=VirtualAllocEx(handleproc,NULL,1024,MEM_RESERVE,PAGE_EXECUTE_WRITECOPY);
				WriteProcessMemory(handleproc,ind,...,&p)
			}
		}
	return 0;
}
__________________
AMD Athlon 64 3500+ 939pin Venice TRAY ~~ LanParty UT nF4 SLI-D ~~ 2x512 GeIL Value MemoryPC3200 DDR400 ~~ Zalman CNPS 7000 Cu ~~ Nvidia GeForce 7600 GT ~~ Maxtor HD
KrYeD è offline   Rispondi citando il messaggio o parte di esso
Old 04-08-2007, 19:16   #20
71104
Bannato
 
L'Avatar di 71104
 
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
Quote:
Originariamente inviato da KrYeD Guarda i messaggi
per ora ho creato questa cosa sbagliatissima usando solo msdn
ovviamente nn funziona, ma almeno dimmi se mi sto avvicinando a qualcosa oppure sono partito per la tangente
mannò, continua così che stavi andando benino
qualche correzione:

linea 13: quell'if non serve, puoi anche toglierlo (tanto se becchi il PID 0 ti fallisce la OpenProcess).

linea 15: PROCESS_VM_WRITE non basta, non devi solo scrivere memoria: devi anche allocare il thread, e tra l'altro penso che PROCESS_VM_WRITE da solo non basti neanche ad allocare con VirtualAllocEx la memoria che vuoi scrivere. per ora mettici un brutale PROCESS_ALL_ACCESS, poi casomai si vedrà.

linea 16: nomeproc non è allocato, e tra l'altro l'hai esplicitamente dichiarato come Unicode mentre invece hai usato la versione portabile della funzione GetModuleBaseName (non ha ne' il suffisso A ne' W). scegli se vuoi usare ANSI, Unicode, o se vuoi fare un sorgente portabile tra i due standard: nel primo caso devi dichiarare il buffer come LPSTR e usare esplicitamente GetModuleBaseNameA; nel secondo buffer LPWSTR e funzione GetModuleBaseNameW; nel terzo buffer LPTSTR e funzione GetModuleBaseName. se non hai preferenze è consigliabile fare una versione portabile compilandola però in Unicode definendo la macro UNICODE, macro che Visual C++ 2005 definisce già automaticamente di default (infatti scommetto che stai usando quello, si vede dal tipo di errore che hai fatto ).

sempre linea 16: ma nsize non era un array?

linea 17: fa bene a farti riflettere quella cosa, infatti è sbagliata
devi usare la funzione lstrcmpi, che sarebbe la versione API Win32 della strcasecmp. conviene usare lstrcmpi piuttosto che strcasecmp perché lstrcmpi è portabile ANSI/Unicode (infatti esiste lstrcmpiA e lstrcmpiW).

linea 19: piccolo appunto, stai usando implicitamente LoadLibraryW (versione Unicode) però gli hai passato una stringa ANSI. per scrivere una stringa costante Unicode in C devi usare il prefisso L:
Codice:
LoadLibraryW(L"C:\\key.dll");
ma piuttosto che fare così ti conviene usare la macro TEXT che ti da la portabilità:
Codice:
LoadLibrary(TEXT("C:\\key.dll"));
linea 20: MEM_RESERVE non va bene, usa MEM_COMMIT. PAGE_EXECUTE_WRITECOPY neanche va bene: usa PAGE_READWRITE.
71104 è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


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...
Recensione OnePlus 15: potenza da vendere e batteria enorme dentro un nuovo design   Recensione OnePlus 15: potenza da vendere e batt...
Anche l'ISRO ha rilasciato alcune inform...
La NASA mostra le nuove immagini della c...
Superati 13.300 MT/s per DDR5: ad ASUS e...
L’evoluzione dell’IA nelle imprese: la v...
Le storie in evidenza di Instagram torna...
Addio GeForce RTX 5060 e Radeon RX 9060?...
Arriva Hisense Déco TV S5Q, estet...
Aggiornata TOP500, la classifica degli H...
Noctua NH-D15 Chromax.black è rea...
NVIDIA aggiorna DGX Spark: nuovo kernel,...
Con Work IQ, Copilot per Microsoft 365 i...
Azure Cobalt 200: svelata la nuova CPU A...
Intel a tutto tondo: tra processi in ram...
AMD FSR Redstone arriverà ufficia...
L'Olanda 'cede' alla Cina: retromarcia t...
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: 00:13.


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