elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Arreglado, de nuevo, el registro del warzone (wargame) de EHN


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  [SOURCE]Inyeccion DLL y control de procesos!
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [SOURCE]Inyeccion DLL y control de procesos!  (Leído 2,134 veces)
Debci
Wiki

Desconectado Desconectado

Mensajes: 2.021


Actualizate o muere!


Ver Perfil WWW
[SOURCE]Inyeccion DLL y control de procesos!
« en: 18 Agosto 2010, 19:44 pm »

Buenas a todos, tras seguir investigando el API de windows, al final he conseguido injectar mi propia dll, en este caso bajo el proceso explorer.exe, que tras realizar pruebas he visto que se bloqueaba, por lo que el programa reinicia el proceso antes de injectar la DLL.

Se que me van a hechar la bronca por abrir el proceso con una call a system(); pero no queria complicarme demasiado la vida, al menos no ahora, queria asegurarme no mas de que funcionaba.

Luego encontre que los antivirus detectan el CreateRemoteThread como malicioso, asi que agradeceria algun otro metodo o consejo.

Sin mas el codigo:

PsControl.h
Código
  1. #ifndef _PSCONTROL_H_
  2. #define _PSCONTROL_H_
  3. #include <Windows.h>
  4. #include <iostream>
  5. #include <cstdlib>
  6. #include <tlhelp32.h>
  7. #include <tchar.h>
  8. #include <stdio.h>
  9. using namespace std;
  10. int killProcess(DWORD pid)
  11. {
  12.    HANDLE proceso;
  13.    proceso=OpenProcess(PROCESS_TERMINATE,FALSE,pid);
  14.  
  15. //cerramos el proceso
  16. TerminateProcess(proceso,0);
  17.  
  18. CloseHandle(proceso);
  19. return 0;
  20.  
  21. }
  22. DWORD getPsId(const char* PsName)
  23. {
  24. DWORD ProcessID;    
  25. HANDLE Handle;
  26. PROCESSENTRY32 ProcI;
  27.  
  28. Handle=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
  29. ProcI.dwSize=sizeof(PROCESSENTRY32);
  30.  
  31. while(Process32Next(Handle,&ProcI))
  32.     if(!strcmp(ProcI.szExeFile,PsName))
  33.        ProcessID=ProcI.th32ProcessID;
  34.  
  35.  
  36. CloseHandle(Handle);
  37.  
  38. return ProcessID;
  39. }
  40. #endif
  41.  

main.cpp
Código
  1. #include <windows.h>
  2. #include <Tlhelp32.h>
  3. #include <stdio.h>
  4. #include <conio.h>
  5. #include <iostream>
  6. #include "PsControl.h"
  7. using namespace std;
  8. void main()
  9. {
  10. HANDLE psHandle;
  11. LPVOID RemoteString;
  12. LPVOID nLoadLibrary;
  13. int PSpid;
  14.  
  15. DWORD psPID = getPsId("explorer.exe");
  16.    cout << psPID << endl;
  17.    killProcess(psPID);
  18. system("explorer.exe");
  19. HANDLE handle = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
  20.    PROCESSENTRY32 procinfo = { sizeof(PROCESSENTRY32) };
  21. cout << "[!]Buscando el proceso... "<< endl;
  22.    while(Process32Next(handle, &procinfo))
  23.    {
  24.       if(!strcmp(procinfo.szExeFile, "explorer.exe"))
  25.       {
  26.           CloseHandle(handle);
  27.   PSpid = procinfo.th32ProcessID;
  28.   cout << "[+]Proceso encontrado!" << endl;
  29.       }
  30.    }
  31.    CloseHandle(handle);
  32.  
  33.  
  34. cout << "[!]Iniciando injecion de DLL..." << endl;
  35. cout << "[+]Obteniendo handle del proceso..." << endl;
  36. if(!(psHandle = OpenProcess(PROCESS_ALL_ACCESS, false, PSpid)) == 0)
  37. cout << "[-]Error al conseguir el handler del proceso!" << endl;
  38. nLoadLibrary = (LPVOID)GetProcAddress(GetModuleHandle("kernel32.dll"),"LoadLibraryA");
  39. RemoteString = (LPVOID)VirtualAllocEx(psHandle,NULL,strlen("C:\\Users\\Administrador\\Documents\\Visual Studio 2008\\Projects\\Injectado\\Debug\\Injectado.dll"),MEM_COMMIT|MEM_RESERVE,PAGE_READWRITE);
  40. WriteProcessMemory(psHandle,(LPVOID)RemoteString,"C:\\Users\\Administrador\\Documents\\Visual Studio 2008\\Projects\\Injectado\\Debug\\Injectado.dll",strlen("C:\\Users\\Administrador\\Documents\\Visual Studio 2008\\Projects\\Injectado\\Debug\\Injectado.dll"),NULL);
  41. CreateRemoteThread(psHandle,NULL,NULL,(LPTHREAD_START_ROUTINE)nLoadLibrary,(LPVOID)RemoteString,NULL,NULL);
  42. CloseHandle(psHandle);
  43. getch();
  44. }
  45.  
El codigo no esta ordenado, he repetido una misma funcion 2 veces (lo arreglare) pero queria que me dijesen que tal.

Saludos


En línea

bizco


Desconectado Desconectado

Mensajes: 698


Ver Perfil
Re: [SOURCE]Inyeccion DLL y control de procesos!
« Respuesta #1 en: 18 Agosto 2010, 20:03 pm »

NtCreateThread


En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
[SOURCE] Control OCX con 2 Caption y un Picture
Programación Visual Basic
enterariel 4 2,592 Último mensaje 18 Abril 2011, 20:30 pm
por CAR3S?
[SOURCE] Extended DTE Toolbox Control Installer
.NET (C#, VB.NET, ASP)
Eleкtro 0 1,694 Último mensaje 3 Enero 2014, 05:32 am
por Eleкtro
Inyección de código en procesos windows
Hacking
XKC 2 2,758 Último mensaje 23 Enero 2019, 18:54 pm
por ThunderCls
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines