Si vous utilisez un injecteur public sur CSGO, vous pouvez avoir un bannissement, vous pouvez faire votre propre injecteur et c'est très simple.
Voici les étapes de base:
1. Obtenir l'adresse de LoadLibraryA
2. Ouvrir le processus
3. Allouer 260 octets dans le processus
4. Ecrire le chemin dll aux octets attribués
5. CreateRemoteThread à l'adresse de LoadLibraryA, avec l'adresse de ces 260 octets
6. Vérifiez si l'injection a réussie
Passons au tutoriel !
1. Obtenir l'adresse de LoadLibraryA :
Étant donné que kernel32.dll est chargé au même endroit dans chaque processus, l'adresse de LoadLibrary dans le processus cible est la même.
2. Ouvrir le processus:
3. Allouer 260 octets dans le processus:
Cela attribue 260 octets (MAX_PATH) dans le processus cible.
4. Ecrire le chemin dll aux octets attribués:
Ici, nous écrivons notre chemin dll à la mémoire afin que nous puissions passer à LoadLibrary plus tard.
5. CreateRemoteThread à l'adresse de LoadLibraryA, avec l'adresse de ces 260 octets:
Nous créons un thread dans le processus, appelons l'adresse de LoadLibraryA (Étape 1) et passons l'adresse à notre dllPath. Le processus cible devrait appeler LoadLibrary et charger notre dll.
6. Vérifiez si l'injection a réussie
Nous vérifions si nous avons créé le thread, puis nous attendons quand il est terminé. Si le résultat est WAIT_OBJECT_0, l'injection a réussi. Si le résultat est WAIT_TIMEOUT, le thread bloque l'exécution du programme mais il a été injecté avec succès. Si le résultat est autre chose, le thread a échoué, donc l'injection à échouer.
J'espère que ce tutoriel vous a aidé à comprendre comment faire un injecteur DLL.
Si je peux améliorer n'importe quoi, dite le moi.
Voici les étapes de base:
1. Obtenir l'adresse de LoadLibraryA
2. Ouvrir le processus
3. Allouer 260 octets dans le processus
4. Ecrire le chemin dll aux octets attribués
5. CreateRemoteThread à l'adresse de LoadLibraryA, avec l'adresse de ces 260 octets
6. Vérifiez si l'injection a réussie
Passons au tutoriel !
1. Obtenir l'adresse de LoadLibraryA :
Code :
HMODULE kernel = GetModuleHandle("Kernel32");
// Obtenir l'adresse de LoadLibraryA
FARPROC loadLibary = GetProcAddress(kernel, "LoadLibraryA");
Étant donné que kernel32.dll est chargé au même endroit dans chaque processus, l'adresse de LoadLibrary dans le processus cible est la même.
2. Ouvrir le processus:
Code :
// Ouvrir le processus avec tout les accès
HANDLE processH = OpenProcess(PROCESS_ALL_ACCESS, FALSE, processId);
3. Allouer 260 octets dans le processus:
Code :
// Allouer 260 octets
LPVOID dllNameAddress = VirtualAllocEx(processH, NULL, 260, MEM_COMMIT, PAGE_READWRITE);
Cela attribue 260 octets (MAX_PATH) dans le processus cible.
4. Ecrire le chemin dll aux octets attribués:
Code :
// Temp Buffer
DWORD numOfBytes;
// Ecrire le chemin dll à la mémoire allouée
WriteProcessMemory(processH, dllNameAddress, pathToDll, 260, &numOfBytes);
Ici, nous écrivons notre chemin dll à la mémoire afin que nous puissions passer à LoadLibrary plus tard.
5. CreateRemoteThread à l'adresse de LoadLibraryA, avec l'adresse de ces 260 octets:
Code :
HANDLE remoteThread = CreateRemoteThread(processH, NULL, 0, (LPTHREAD_START_ROUTINE)loadLibary, dllNameAddress, 0, NULL);
Nous créons un thread dans le processus, appelons l'adresse de LoadLibraryA (Étape 1) et passons l'adresse à notre dllPath. Le processus cible devrait appeler LoadLibrary et charger notre dll.
6. Vérifiez si l'injection a réussie
Code :
// Vérifiez si le thread a été créé
if (remoteThread)
{
// Attendre la sortie
DWORD result = WaitForSingleObject(remoteThread, 10000);
if (result == WAIT_OBJECT_0)
{
cout << "Injecté avec succès!\n";
}
else if (result == WAIT_TIMEOUT)
{
cout << "Temps d'attente dépassé! (Utilisé CreateThread dans dllMain)\n";
}
else
{
cout << "Impossible dinjecter!\n";
}
}
Nous vérifions si nous avons créé le thread, puis nous attendons quand il est terminé. Si le résultat est WAIT_OBJECT_0, l'injection a réussi. Si le résultat est WAIT_TIMEOUT, le thread bloque l'exécution du programme mais il a été injecté avec succès. Si le résultat est autre chose, le thread a échoué, donc l'injection à échouer.
J'espère que ce tutoriel vous a aidé à comprendre comment faire un injecteur DLL.
Si je peux améliorer n'importe quoi, dite le moi.