Salut à toi visiteur !
Inscris toi en moins de 10 secondes pour profitez pleinement du site et partager avec la communauté ! S'inscrire


Tutoriel Créer votre propre injecteur DLL


#1
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 :

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.


Messages dans ce sujet
Créer votre propre injecteur DLL - par xnooztvfr - 19-04-2017, 12:19
RE: Créer votre propre injecteur DLL - par TKX - 19-04-2017, 12:40

Sujets apparemment similaires…
Sujet Auteur Réponses Affichages Dernier message
  Tutoriel Comment installé son propre report/commend bot Rhaykoza 6 7,856 01-06-2020, 19:26
Dernier message: Zero2Hero
  Tutoriel VAC n'est pas en mesure de vérifier votre session de jeu. Guildo 5 11,575 17-04-2020, 17:49
Dernier message: romainbart
  Tutoriel Créer un logiciel de triche theo444 10 5,441 30-06-2019, 09:28
Dernier message: xddj
  Tutoriel Utiliser Discord comme injecteur DLL [Non détecté] xnooztvfr 6 5,450 16-05-2017, 23:19
Dernier message: xnooztvfr

Atteindre :