Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Google Pixel 10 è compatto e ha uno zoom 5x a 899€: basta per essere un best-buy?
Google Pixel 10 è compatto e ha uno zoom 5x a 899€: basta per essere un best-buy?
Google Pixel 10 è uno smartphone che unisce una fotocamera molto più versatile rispetto al passato grazie allo zoom ottico 5x, il supporto magnetico Pixelsnap e il nuovo chip Tensor G5. Il dispositivo porta Android 16 e funzionalità AI avanzate come Camera Coach, mantenendo il design caratteristico della serie Pixel con miglioramenti nelle prestazioni e nell'autonomia. In Italia, però, mancano diverse feature peculiari basate sull'AI.
Prova GeForce NOW upgrade Blackwell: il cloud gaming cambia per sempre
Prova GeForce NOW upgrade Blackwell: il cloud gaming cambia per sempre
L'abbonamento Ultimate di GeForce NOW ora comprende la nuova architettura Blackwell RTX con GPU RTX 5080 che garantisce prestazioni tre volte superiori alla precedente generazione. Non si tratta solo di velocità, ma di un'esperienza di gioco migliorata con nuove tecnologie di streaming e un catalogo giochi raddoppiato grazie alla funzione Install-to-Play
Ecovacs Deebot X11 Omnicyclone: niente più sacchetto per lo sporco
Ecovacs Deebot X11 Omnicyclone: niente più sacchetto per lo sporco
Deebot X11 Omnicyclone implementa tutte le ultime tecnologie Ecovacs per l'aspirazione dei pavimenti di casa e il loro lavaggio, con una novità: nella base di ricarica non c'è più il sacchetto di raccolta dello sporco, sostituito da un aspirapolvere ciclonico che accumula tutto in un contenitore rigido
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 30-07-2007, 15: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, 11: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, 11: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, 12: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, 14: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, 13: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, 14: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, 17: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, 20: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, 21: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, 21: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, 21: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, 21: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, 22: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, 00: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, 11: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, 14: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 14:49.
71104 è offline   Rispondi citando il messaggio o parte di esso
Old 03-08-2007, 23: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, 13: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, 18: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


Google Pixel 10 è compatto e ha uno zoom 5x a 899€: basta per essere un best-buy? Google Pixel 10 è compatto e ha uno zoom ...
Prova GeForce NOW upgrade Blackwell: il cloud gaming cambia per sempre Prova GeForce NOW upgrade Blackwell: il cloud ga...
Ecovacs Deebot X11 Omnicyclone: niente più sacchetto per lo sporco Ecovacs Deebot X11 Omnicyclone: niente più...
Narwal Flow: con il mocio orizzontale lava i pavimenti al meglio Narwal Flow: con il mocio orizzontale lava i pav...
Panasonic 55Z95BEG cala gli assi: pannello Tandem e audio senza compromessi Panasonic 55Z95BEG cala gli assi: pannello Tande...
Iliad: si consolida la partnership tecno...
Il SoC a 2 nm di Samsung non sfigura nel...
Prezzo shock per i Galaxy Buds FE + nuov...
Il nuovo SoC di Qualcomm vuole stupire: ...
Offerta lampo per pulire l'auto: aspirap...
I robotaxi di Amazon entrano in azione: ...
ECOVACS DEEBOT T50 PRO OMNI Gen2 domina ...
iPhone 17 Pro su Amazon: tutti i colori,...
Disney Plus da 2,99 euro al mese per 3 m...
Nuovo test di accensione dei motori per ...
Novità dalle analisi dell'asteroi...
La PS6 sarà più potente del previsto: ec...
Sony svela Xperia 10 VII: è il nu...
Amazon Weekend da urlo: iPhone 16 a prez...
Spotify diffida ReVanced: chiesta la rim...
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: 20:44.


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