Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - Eternal Idol

#3611
Cita de: KiZaR en 27 Abril 2006, 15:24 PMYa sabia, pero entonces los programas k se inyectan en otro proceso inyectan el exe entero en otro proceso, eso es lo k quiero saber hacer...

Yo no conozco ningun software que haga eso, puede que los haya pero no tiene sentido, una DLL es practicamente lo mismo que un EXE (los dos son PE aunque con diferencias).
#3612
Cita de: KiZaR en 27 Abril 2006, 15:13 PM
Y si en vez de inyectar un cacho de code quiero inyectar un proceso entero??
Supongo que tendre que ejecutar el exe y copiar todo su contenido en memoria en el remote thread pero no estoy seguro...
Seria asi?

No se puede inyectar un proceso como tal. Un proceso es un contenedor de una serie de recursos (espacio de memoria virtual, codigo del ejecutable, lista de handles, pid, hilos, etc).

Lo que se puede inyectar es el codigo de un programa pero no tiene gran sentido cuando uno tiene la posibilidad de inyectar una DLL con un minimo esfuerzo. Creando un hilo remoto que llame a la funcion LoadLibrayA/W y pasandole como parametro el nombre de la libreria (VirtualAlloc + WriteProcessMemory para escribirlo en el proceso que queramos) conseguimos cargar la DLL que queramos y en la misma se implementa la funcionalidad requerida.
#3613
Cita de: Pseudoroot en 26 Abril 2006, 23:07 PM
si lo se. por eso la estructura se pone dentro de la funcion. porque obvio que una funcion cualquiera nunca inyectada dentro de otro proceso nunca va a apuntar a la direccion correcta

La estructura se le pasa como parametro a la funcion ...  en fin que estamos en el foro de VB y el codigo tendra que ser la representacion en hexadecimal de codigo en assembly.

Habria que hacer algo asi como esto para que funcionara desde C:

#include <windows.h>

typedef BOOL (__stdcall DeleteFileA_Ptr)(char *);

typedef struct _DelData
{
  DeleteFileA_Ptr *DeleteFile;
  char *file;
}DelData, *PDelData;

void funcion(PDelData Data);

void main(int argc, char **argv)
{
  int procid = atol(argv[1]);
  HANDLE hProc = OpenProcess(PROCESS_ALL_ACCESS, 0, procid);
  if (hProc)
  {
    LPVOID Code = VirtualAllocEx(hProc, 0, 0x1000, MEM_COMMIT, PAGE_EXECUTE_READWRITE);
    LPVOID Data = VirtualAllocEx(hProc, 0, 0x1000, MEM_COMMIT, PAGE_EXECUTE_READWRITE);
    DWORD tid = 0;
    DelData Params;
    Params.DeleteFile = (DeleteFileA_Ptr*)GetProcAddress(GetModuleHandle("Kernel32.dll"), "DeleteFileA");
    Params.file = (char*)((BYTE*)Data) + sizeof(DelData);
    DWORD written = 0;
    char *File = "C:\\BASURA.TXT";
    WriteProcessMemory(hProc, Code, &funcion, 32 /*a ojo*/, &written);
    WriteProcessMemory(hProc, Data, &Params, sizeof(DelData), &written);
    WriteProcessMemory(hProc, ((BYTE*)Data + sizeof(DelData)), File, strlen(File), &written);
    CreateRemoteThread(hProc, 0, 0, (LPTHREAD_START_ROUTINE)Code, Data, 0, &tid);
  }
}

void funcion(PDelData Data)
{
  Data->DeleteFile(Data->file);
}
#3614
Cita de: Pseudoroot en 26 Abril 2006, 22:52 PMSi, pero se que se puede en C++, por eso lo digo. ademas tengo un code, que inyecta al explorer.exe codeado  justamente en C++, y se eso que comentas, por eso a veces es necesario una dll externa o no, en caso que comento no se utilizo, pero si tubo que hacer usos de estructuras tal y como comentas tu..

Por supuesto que se puede hacer en C++ pero si queres hacer cosas como inyectar codigo de 32 o 64 bits dependiendo del proceso a inyectar terminas haciendolo en hexadecimal como casi todo el mundo. Sin tener en cuenta todas las restricciones que te comente antes.

Por cierto no tiene nada que ver que el programa este escrito en C++, lo importante seria el codigo que inyecte. Y lo de la DLL tampoco tiene nada que ver aunque comunmente se hace eso, meter el codigo que haga un LoadLibrary.

El problema es este:


void funcion()
{
  DeleteFileA("Archivo.txt");
}


Si copias funcion al otro proceso (WriteProcessMemory), DeleteFileA llamara a cualquier lado y donde estaba "Archivo.txt" muy probablemente apunte a una direccion invalida y nunca jamas a "Archivo.txt".
#3615
Cita de: Pseudoroot en 26 Abril 2006, 22:39 PM
No necesariamente tiene que ser en Asm, en C++ igual se puede inyectar code, en Visual Basic , no lo se..

Depende de lo que haga el codigo, no podes pretender copiar cualquier codigo y que funcione perfectamente.
Las llamadas a la API de Windows tenes que estructurarlas de manera que no sean enlazadas estaticamente (generalmente se le pasa una estructura con punteros a las funciones que se usaran), cualquier variable de tipo cadena se crea en la zona de datos y el otro programa no la tendra, etc.
#3616
CreateRemoteThread para crear el hilo.
VirtualAllocEx para escribir tanto datos como codigo.

El codigo tiene que ser en assembly ...
#3617
Cita de: LastDragon en 26 Abril 2006, 09:29 AMY tu aporte cual es?

¿Te jode? ¿No queres leerme? ¿Entonces para que carajo me nombras? Hace tu, patetica, vida.

Cita de: LastDragon en 26 Abril 2006, 09:29 AMEntonces por favor deja de escribir en este tema si no piensas aportar nada.

Por cierto, tu aporte es decir obviedades y mentiras, nada mas y nada menos. Ademas de tu hipocresia, me decis troll que gracia, el tipo que abre hilos para desprestigiar lenguajes y no aporta una minima prueba tangible ... por favor.

Jamas pense en aportar nada y si escribi en este tema fue por tu culpa, ahora no te hagas el inocente, por algo me nombraste. No lo hubieras hecho, sabias perfectamente lo que significaba hacerlo.
#3618
Cita de: LastDragon en 26 Abril 2006, 01:22 AMMe pregunto si tu y idol me hubieran insulteteado al escribir algo como eso...

¿Que pasa? ¿Estas obsesionado por haber quedado en ridiculo? No hace falta que me nombres.

En cuanto al tema te comento que Java y .NET me importan tanto como vos: NADA.
#3619
El OllyDbg es un depurador bastante completo para modo Usuario, SoftIce tambien funciona en modo Kernel. Si el codigo que tenes que crackear esta en un .exe seguramente tendras todo lo necesario en el OllyDbg.
#3620
No pero puede llegar a ser muy dificil, hay que ver que tipo de documento es y como esta grabado (puede que este cifrado y/o comprimido).