logo

Knowledge Is Power

 
 

- Reinit des nouveaux posts -

- Recherche -

Messages Privés - Derniers posts
S'enregistrer - Login - Liste des membres
Vous logger : Login Pass

Programmation - Langages de Programmation >> DLL injection sous Seven Newtopic | Reply
poster txt
bib0
Inscrit le 25-02-2005
Avatar
Posté le 14-11-2013 16:59

Salut à tous,

Si vous avez 30 secondes. Voilà.
Je me suis mis en tête de jeter un oeil sur l'injection DLL.
J'utilise le code de Xevia (http://xevia.webege.com/old/atoray/2010/06180.php) suivant:

#include <cstdlib>
#include <iostream>
#include <windows.h>

using namespace std;
extern "C"

int main(int argc, char *argv[])
{
char* dllPath = "Hook.dll"; // chaîne de caractère qui contient l'adresse de la DLL à injecter

//on récupère l'adresse de la fonction LoadLibraryA() qui se trouve
//dans le module kernel32 en appelant GetProcAddress() et GetModuleHandle().
//Remarque : LoadLibraryA() est la fonction qui charge une DLL à partir de
//son nom ASCII


void* pLoadLibrary = (void*)GetProcAddress(GetModuleHandle("kernel32"),"LoadLibraryA");
std::cout << "LoadLibrary:" << std::hex << pLoadLibrary << std::dec << "\nCreating process 'TargetApplication.exe' ... \n";


// Injector.exe qui va exécuter TargetApplication.exe
//startupInfo et processInformation sont des structures qui sont "remplies" par CreateProcess().
//startupInfo n'est là que pour que CreateProcess() s'exécute correctement
STARTUPINFOA startupInfo;
PROCESS_INFORMATION processInformation;
ZeroMemory(&startupInfo,sizeof(startupInfo));

if(!CreateProcessA(0,"TargetApplication.exe",0,0,1,CREATE_NEW_CONSOLE,0,0,
&startupInfo,&processInformation))
{
std::cout << "Could not run 'TargetApplication.exe'. GetLastError() = " << GetLastError();
return 0;
}
//Ecriture de l'adresse de la DLL dans le processus cible.
//Etape1: allocation de mémoire dans le processus
//processInformation.hProcess == Handle du processus
//VirtualAllocEx() retourne un pointeur contenant l'adresse de l'espace juste créé.
//On l'enregistre dans la variable pReservedSpace.

std::cout << "Allocating virtual memory ...\n";
void* pReservedSpace = VirtualAllocEx(processInformation.hProcess,NULL,strlen(dllPath),MEM_COMMIT,PAGE_EXECUTE_READWRITE);
std::cout << "pReservedSpace:" << std::hex << pReservedSpace<< std::dec << "\n";

if(!pReservedSpace)
{
std::cout << "Could not allocate virtual memory. GetLastError() = " << GetLastError();
return 0;
}
std::cout << "Writing process memory ...\n";
if(!WriteProcessMemory(processInformation.hProcess,pReservedSpace,dllPath,strlen(dllPath),NULL))
{
std::cout << "Error while calling WriteProcessMemory(). GetLastError() = " << GetLastError();
return 0;
}
std::cout << "Creating remote thread ...\n";
HANDLE hThread = CreateRemoteThread(processInformation.hProcess,
NULL,
0,
(LPTHREAD_START_ROUTINE)pLoadLibrary,
pReservedSpace,
0,
NULL);
if(!hThread)
{
std::cout << "Unable to create the remote thread. GetLastError() = " << GetLastError();
return 0;
}

std::cout << "Thread created.\n";




system("PAUSE");
return EXIT_SUCCESS;
}

Tout semble ok à l’exécution sous Seven. Par contre, j'ai pas la petite fenêtre "hook.dll has been injected" qui s'affiche.
Auriez-vous une idée de là où ça peut bugguer?
En fouillant sur le Web, j'ai bien trouver des histoires de privilèges (SE_PRIVILEGE_ENABLED) mais c'est pas très clair.

A+

Bibo

[ Ce Message a été édité par: bib0 le 2013-11-14 17:01 ]
profil | edit | quote
bib0
Inscrit le 25-02-2005
Avatar
Posté le 15-11-2013 20:50

Salut à tous,

En fait, il faut utiliser la nouvelle version de Dev-C++ càd Orwell Dev-C++ (http://orwelldevcpp.blogspot.fr) qui compile pour les système 64 bits. Et c'est tout bon


A+

Bibo
profil | edit | quote
Bryk
Inscrit le 18-06-2007
Posté le 17-11-2013 08:16

Merci pour l'astuce!

Have Fun ...
profil | edit | quote
Newtopic | Reply

Online : eheobita, obemobuxa et 49 Guests


Retour Index NewFFR Repository : http://taz.newffr.com
Cagades à Stick : http://alcane.newffr.com
Forum HTML et Archive -> ici
ForumFR Sql/Xml (2006/04) (SF pas à jour du tout...) - Alive since 2001 Newffr.com
Pour toute plainte ou problème -> Contacter Borax, Hyatus, Tweakie ou Stick par message privé (ou Gueulez sur le forum :) )
Retour haut de page