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

 

 


Tema destacado: Entrar al Canal Oficial Telegram de elhacker.net


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  es posible hacer esto en una inyeccion sin dll?
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: es posible hacer esto en una inyeccion sin dll?  (Leído 1,468 veces)
Belial & Grimoire


Desconectado Desconectado

Mensajes: 559


Tea_Madhatter


Ver Perfil
es posible hacer esto en una inyeccion sin dll?
« en: 2 Enero 2011, 01:32 am »

hola

bueno, se que no se debe de revivir post antiguos asi que preguntare sobre un post que encontre

vi un post donde hablaban de inyecciones sin DLL, abajo posteare el codigo, pero tengo una pregunta

alli se pone una estructura, despues en una funcion se llama a la estructura y despues se utiliza para saber el tamaño a reservar, pero si yo en vez de hacer esto

Código
  1. struct TDatos_MessageBoxA
  2. {
  3.    _MessageBoxA direccionMessageBoxA;
  4.    char titulo[255], texto[255];
  5. };
  6.  
  7. void Hilo_MessageBoxA(TDatos_MessageBoxA *datos)
  8. {
  9.    datos->direccionMessageBoxA(0, datos->texto, datos->titulo, 0);
  10. }

Seria lo mismo que yo hiciera esto?

Código
  1. void Message()
  2. {
  3.   MessageBoxA(pID, "descifra.me", "Codigo inyectado!");
  4. }
  5.  
  6. void Inyectar_MessageBoxA(DWORD pID)
  7.  
  8. ////////////////////////////////////
  9.  
  10. Quitando
  11.  
  12. datos.direccionMessageBoxA = (_MessageBoxA)GetProcAddress(GetModuleHandle("USER32.DLL"), "MessageBoxA");
  13.    sprintf(datos.titulo, titulo);
  14.    sprintf(datos.texto, texto);
  15.  
  16. //////////////////////////////
  17.  

Y en vez dehacer una estructura solo hacer una funcion en donde si quiero iniciar un socket, funcione correctamente, o eso no es posible?

espero me puedan ayudar, les dejo el codigo completo que encontre

Código
  1. typedef int (WINAPI *_MessageBoxA)(HWND, LPCTSTR, LPCTSTR, UINT);
  2.  
  3. struct TDatos_MessageBoxA
  4. {
  5.    _MessageBoxA direccionMessageBoxA;
  6.    char titulo[255], texto[255];
  7. };
  8.  
  9. void Hilo_MessageBoxA(TDatos_MessageBoxA *datos)
  10. {
  11.    datos->direccionMessageBoxA(0, datos->texto, datos->titulo, 0);
  12. }
  13.  
  14. int main()
  15. {
  16.    DWORD pID;
  17.    HWND hWnd;
  18.  
  19.    hWnd = FindWindow("SciCalc", NULL);
  20.  
  21.    if(hWnd!=NULL)
  22.    {
  23.        GetWindowThreadProcessId(hWnd, &pID);
  24.        Inyectar_MessageBoxA(pID, "descifra.me", "Codigo inyectado!");
  25.    }
  26.  
  27.    return 0;
  28. }
  29.  
  30. void Inyectar_MessageBoxA(DWORD pID, char* titulo, char* texto)
  31. {
  32.    DWORD tamFunc;
  33.    HANDLE tHandle, funcionRemota;
  34.    TDatos_MessageBoxA datos, *direccionDatosRemotos;
  35.    void* direccionFuncionRemota;
  36.  
  37.    tHandle = OpenProcess(PROCESS_CREATE_THREAD | PROCESS_VM_OPERATION | PROCESS_VM_WRITE, false, pID);
  38.  
  39.    datos.direccionMessageBoxA = (_MessageBoxA)GetProcAddress(GetModuleHandle("USER32.DLL"), "MessageBoxA");
  40.    sprintf(datos.titulo, titulo);
  41.    sprintf(datos.texto, texto);
  42.  
  43.    direccionDatosRemotos = (TDatos_MessageBoxA*)VirtualAllocEx(tHandle, 0, sizeof(TDatos_MessageBoxA), MEM_RESERVE | MEM_COMMIT, PAGE_READWRITE);
  44.    WriteProcessMemory(tHandle, direccionDatosRemotos, &datos, sizeof(TDatos_MessageBoxA), NULL);
  45.  
  46.    tamFunc = (DWORD)Inyectar_MessageBoxA - (DWORD)Hilo_MessageBoxA;
  47.  
  48.    direccionFuncionRemota = VirtualAllocEx(tHandle, 0, tamFunc, MEM_RESERVE | MEM_COMMIT, PAGE_EXECUTE_READWRITE);
  49.    WriteProcessMemory(tHandle, direccionFuncionRemota, (void*)Hilo_MessageBoxA, tamFunc, NULL);
  50.  
  51.     WaitForSingleObject(funcionRemota,INFINITE);
  52.   CloseHandle(funcionRemota);
  53.  
  54.   VirtualFreeEx(tHandle,direccionFuncionRemota,0,MEM_RELEASE);
  55.   VirtualFreeEx(tHandle,direccionDatosRemotos,0,MEM_RELEASE);  
  56.  
  57.   CloseHandle(tHandle);  
  58. }


En línea

.                                 
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
¿ Es posible hacer esto??? « 1 2 3 »
Desafíos - Wargames
Golfo1974 23 22,865 Último mensaje 18 Abril 2011, 03:24 am
por Gambinoh
es posible hacer esto ...
PHP
pana88 5 3,023 Último mensaje 23 Julio 2008, 14:11 pm
por pana88
es posible hacer esto??
Hacking
-r3- 7 4,341 Último mensaje 16 Octubre 2011, 23:17 pm
por er_wanchu
Es posible hacer esto con un ordenador Win98
Hardware
WIитX 7 3,055 Último mensaje 30 Agosto 2012, 19:39 pm
por WIитX
Es posible hacer esto?
Programación C/C++
Erres 3 2,515 Último mensaje 30 Septiembre 2012, 03:53 am
por lindosekai
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines