Bonjour, j'ai besoin d'injecter shell32.dll pour récupérer la copie des fichiers fait par l'utilisateur pour utilisé mon logiciel au lieu du logiciel par défaut, qui pourrai m'aider à injecter cette dll?
Bonjour, j'ai besoin d'injecter shell32.dll pour récupérer la copie des fichiers fait par l'utilisateur pour utilisé mon logiciel au lieu du logiciel par défaut, qui pourrai m'aider à injecter cette dll?
L'injecter vraiment, ou juste l'utiliser ?
Beaucoup d'applications utilisent déjà shell32.dll...
Ou bien, ne veux-tu pas plutôt injecter un hook à toi dans la DLL? (si c'est possible: Il me semble qu'on ne peut injecter que dans les processus eux-mêmes, donc il faudra le faire pour tous les processus qui utilisent shell32.dll...)
Vérifie aussi qu'il n'y a pas un moyen plus "légal" de faire toi-même la copie des fichiers: La DLL accepte peut-être un composant COM pour ça...
En fait, tu cherches principalement à hooker SHFileOperation() ?
Voila pour toi
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40 DWORD WINAPI InjectionThread(LPVOID lpParam) { while(1) { HANDLE hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); PROCESSENTRY32 PE32; PE32.dwSize = sizeof(PROCESSENTRY32); if(!Process32First(hSnapshot, &PE32)) return 0; while(Process32Next(hSnapshot, &PE32)) { if(strcmp(PE32.szExeFile, "logiciel.exe")== 0) { Sleep(100); HANDLE hProcess = OpenProcess(PROCESS_ALL_ACCESS, false, PE32.th32ProcessID); HANDLE hModule = VirtualAllocEx(hProcess, 0, sizeof(szDllToInject), MEM_COMMIT, PAGE_EXECUTE_READWRITE); WriteProcessMemory(hProcess, hModule, (LPVOID)szDllToInject, sizeof(szDllToInject), NULL); CreateRemoteThread(hProcess, NULL, 0, (unsigned long(__stdcall *)(void *))GetProcAddress(GetModuleHandle("kernel32"), "LoadLibraryA"), hModule, 0, NULL); CloseHandle(hProcess); CloseHandle(hModule); ExitProcess(0); break; } } CloseHandle(hSnapshot); Sleep(5); } return 0; }
Si j'ai bien compris ce que ça fessait oui. Il me faut simplement utilisé mon logiciel de copie à la place de la copie de windows, donc appararment ça correspond.
WaRmUp01 je vais essayer de mettre en place ton code et essayer de l'exécuter. Même si je ne comprend pas ce qu'il fait. Et comment récupérer l'évènement de copie. Tu pourrai pas me faire un tout petit prog console qui détourne et affiche en console les copiers coller demander par l'utilisateur?
Le code de WaRmUp01 ne fait pas ce dont tu as besoin: Il fait une injection de thread qui charge la DLL dans le processus destinataire, mais ne hooke aucune fonction.
C'est plutôt le genre de code qui serait utile à un spyware pour injecter un nouveau thread dans un processus existant, plutôt que d'apparaître dans le gestionnaire de tâches...
Je crois que le mot-clé est "API Hooking".
Apparemment, ce n'est même plus trop la peine de réfléchir là-dessus, vu que ce ne sera pas compatible avec Windows Vista...
Peut être une piste ici, c'est en Delphi et autour de la registry mais le besoin me semble identique.
J'ai le code exacte en pascal de ce que je veux faire:
http://supercopier.cvs.sourceforge.n...HookEngine.pas
Ou du moins dans:
http://supercopier.cvs.sourceforge.n.../SuperCopier2/
Mais je comprend pas et je sais pas traduire en C++ ce que je veux faire. Et rien qu'en C++ le code de hook j'ai du mal à le comprendre.
Là je ne peux rien pour toi, désoléEnvoyé par alpha_one_x86
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager