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 - DaasCook

#71
Cita de: [D4N93R] en 16 Marzo 2011, 20:36 PM
A qué nivel va a correr eso? En cuál ring?

0, ¿Por qué?.
#72
Cita de: Eternal Idol en 16 Marzo 2011, 12:00 PM
SOURCES
The SOURCES macro specifies the files to be compiled. The SOURCES macro is required by the Build utility. This macro must be placed in your Sources file. All files specified by this macro must reside in the directory containing the Sources file or in the parent directory of the Sources file.

The Build utility examines these files and generates a dependency list. If any of those dependencies change, the Build utility rebuilds this source file.

Use this macro to list your source file names. Include the file name extension, and separate the entries in this list with spaces or tabs.



Woops!, ok i get it. Thanks.
#73
Hola, hola... vaya tíos, tengo una gran duda... y es que he creado un driver para hookear varias funciones que necesito y bien... funciona de maravilla.

Pero como soy un tanto estético se me ha dado por ordenar los archivos, y quise meter los archivos de código (.c) en una carpeta "CFiles", al igual con los headers (.h), y aquí viene el problema...

¿Cómo puedo declarar en el archivo SOURCES el directorio actual de mis archivos de código?

He intentado con:

Código (cpp) [Seleccionar]
SOURCES= .\CFiles\Drvr.c .\CFiles\DaasHook.c

Y nada pues, me da error al compilar... Y debido a esto quisiera saber si... ¿Es posible cambiar los directorios de los archivos de código?. Esto es nada más por estética porque si quiero les mantengo en una misma carpeta, pero odio como se ve desordenado.

Espero puedan aclararme tal duda, y... Gracias :xD.
#74
Cita de: SRVAM en 16 Marzo 2011, 01:22 AM
ahi te dice las librerias que usan, implementalas en tu codigo .net y en teoria podrias hacer lo que quieres sin problemas xD

EDITO: si tu tienes las librerias, da igual que sea codigo manejado o no, puedes hacer las llamadas a los metodos de las librerias de mazarD sin problemas xD

Bien, entonces... comenzaré a convertir código, gracias por todo ;D.
#75
Cita de: raul338 en 16 Marzo 2011, 00:26 AM
Todo depende de lo que usa Mazard, que no se a cual codigo te refieres :xD
Pero si, teoricamente se puede :D

Pues... el código es el siguiente (aunque ya había puesto un vínculo al .pdf):

Código (cpp) [Seleccionar]
#include <windows.h>
#include <stdio.h>
//Esta funcion hace la llamada a LoadLibrary pasandole el nombre de nuestra dll, después
//ejecuta el código sobreescrito por el jmp y salta a la instrucción siguiente al jmp
BYTE *CrearCodigo(DWORD Ruta,DWORD dLoadLibrary,DWORD RetDir,BYTE
*RepBuff,DWORD RepSize)
{
BYTE *codeBuff;
codeBuff=(BYTE*)malloc(20+RepSize);
//Guardamos registros y llamamos a LoadLibrary pasandole la ruta a nuestra dll
*codeBuff=0x60; //opcode correspondiente a pushad
codeBuff++;
//push path
*codeBuff=0x68;
codeBuff++;
*((DWORD*)codeBuff)=Ruta;
codeBuff+=4;
//mov eax,dLoadLibrary
*codeBuff=0xB8;
codeBuff++;
*((DWORD*)codeBuff)=dLoadLibrary;
codeBuff+=4;
*((WORD*)codeBuff)=0xD0FF; //call eax
codeBuff+=2;
*codeBuff=0x61; //popad
codeBuff++;
//Ahora metemos el codigo que ha sido reemplazado
memcpy(codeBuff,RepBuff,RepSize);
codeBuff+=RepSize;
//Ahora hacemos el salto a la dirección de la api
*codeBuff=0x68; //push RetDir
codeBuff++;
*((DWORD*)codeBuff)=(DWORD)RetDir;
codeBuff+=4;
*codeBuff=0xC3; //ret
codeBuff-=(19+RepSize);
return codeBuff;
}
int main()
{
void *hMsgBox;
DWORD dLoadLib;
DWORD pID;
HANDLE hproc;
DWORD size=5;
BYTE *ReplacedBuff;
DWORD oldprot;
void *repsite,*dllnsite;
BYTE *inject;
char laDll[]="c:\\ladll.dll";
BYTE *jmpBuff;
printf("Inyección por trampolin by MazarD\nhttp://www.mazard.info\n");
printf("PID del proceso a inyectarse:");
scanf("%d",&pID);
//Preparamos direcciones de apis necesarias
hMsgBox=GetProcAddress(LoadLibrary("user32.dll"),"MessageBoxA");
printf("Dirección de MessageBoxA:%.4x\n",hMsgBox);
dLoadLib=(DWORD)GetProcAddress(GetModuleHandle("kernel32.dll"),"LoadLibraryA");
printf("Dirección de LoadLibraryA:%.4x\n",dLoadLib);
//Abrimos el proceso y damos permisos en la zona de reemplazo
hproc=OpenProcess(PROCESS_ALL_ACCESS,false,pID);
VirtualProtect(hMsgBox,size,PAGE_EXECUTE_READWRITE,&oldprot);
//Leemos el codigo que será reemplazado
ReplacedBuff=(BYTE*)malloc(size+6);
memset(ReplacedBuff,90,size+6);
ReadProcessMemory(hproc,hMsgBox,ReplacedBuff,size,NULL);
//Reservamos memoria y guardamos el nombre de la dll
dllnsite=VirtualAllocEx(hproc,NULL,11,MEM_COMMIT |
MEM_RESERVE,PAGE_EXECUTE_READWRITE);
WriteProcessMemory(hproc,dllnsite,laDll,strlen(laDll)+1,NULL);
printf("Nombre de la dll en:%.4x\n",dllnsite);
//Creamos el codigo
inject=CrearCodigo((DWORD)dllnsite,dLoadLib,(DWORD)hMsgBox+5,ReplacedBuff,size);
//Reservamos memoria y guardamos el codigo
repsite=VirtualAllocEx(hproc,NULL,size+20,MEM_COMMIT |
MEM_RESERVE,PAGE_EXECUTE_READWRITE);
WriteProcessMemory(hproc,repsite,inject,size+20,NULL);
printf("Codigo Reemplazado en:%.4x\n",repsite);
//Creamos un salto hacia nuestro codigo y lo ponemos en el inicio de la api
jmpBuff=(BYTE*)malloc(5);
*jmpBuff=0xE9; //opcode correspondiente a jmp
jmpBuff++;
*((DWORD*)jmpBuff)=(DWORD)repsite-(DWORD)hMsgBox-5;
jmpBuff--;
WriteProcessMemory(hproc,hMsgBox,jmpBuff,5,NULL);
CloseHandle(hproc);
return 0;
}


Ojo ése es sólo el método de inyección por trampolín. En el vínculo dejé el .pdf de MazarD donde se pueden observar todos los demás códigos.

Yo leyendo un poco el código, pues lo veo posible, ya que los punteros en C# no son muy difíciles de manejar, el problema es que... Si por ser código administrado, ¿no vayan a haber problemas?.

Prost, OS!
#76
Vale... pues tíos quisiera saber: ¿Es posible convertir el código de inyección por trampolín y/o el código de Redirección de Threads de MazarD a C#?...

Tengo pensado crear un driver a nivel kernel para darme los permisos necesarios y encima usar uno de los dos métodos más seguros de inyección de código... Pero, no quisiera perder mucho tiempo convirtiendo lo inconvertible (?); Por eso vengo a preguntar: ¿Es posible?.

Me manejo no de manera perfecta, pero si tengo conocimientos acera de los punteros en C#; Y pues las APIS no son problema; Por tal... ¿Qué Decís?.

Prost, OS!
#77
Windows / Re: Recuperar particiones
15 Marzo 2011, 13:33 PM
Jeje, yo que tú usaba Paragon Partition Manager...