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

 

 


Tema destacado: ¿Eres nuevo? ¿Tienes dudas acerca del funcionamiento de la comunidad? Lee las Reglas Generales


  Mostrar Mensajes
Páginas: 1 2 3 4 5 6 7 [8]
71  Programación / .NET (C#, VB.NET, ASP) / Re: Conversión de código de MazarD a C# en: 16 Marzo 2011, 21:03 pm
A qué nivel va a correr eso? En cuál ring?

0, ¿Por qué?.
72  Programación / Programación C/C++ / Re: Cambiar directorio de SOURCES (WDK) en: 16 Marzo 2011, 12:53 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  Programación / Programación C/C++ / Cambiar directorio de SOURCES (WDK) en: 16 Marzo 2011, 08:55 am
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
  1. 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  Programación / .NET (C#, VB.NET, ASP) / Re: Conversión de código de MazarD a C# en: 16 Marzo 2011, 01:32 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  Programación / .NET (C#, VB.NET, ASP) / Re: Conversión de código de MazarD a C# en: 16 Marzo 2011, 01:08 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
  1. #include <windows.h>
  2. #include <stdio.h>
  3. //Esta funcion hace la llamada a LoadLibrary pasandole el nombre de nuestra dll, después
  4. //ejecuta el código sobreescrito por el jmp y salta a la instrucción siguiente al jmp
  5. BYTE *CrearCodigo(DWORD Ruta,DWORD dLoadLibrary,DWORD RetDir,BYTE
  6. *RepBuff,DWORD RepSize)
  7. {
  8. BYTE *codeBuff;
  9. codeBuff=(BYTE*)malloc(20+RepSize);
  10. //Guardamos registros y llamamos a LoadLibrary pasandole la ruta a nuestra dll
  11. *codeBuff=0x60; //opcode correspondiente a pushad
  12. codeBuff++;
  13. //push path
  14. *codeBuff=0x68;
  15. codeBuff++;
  16. *((DWORD*)codeBuff)=Ruta;
  17. codeBuff+=4;
  18. //mov eax,dLoadLibrary
  19. *codeBuff=0xB8;
  20. codeBuff++;
  21. *((DWORD*)codeBuff)=dLoadLibrary;
  22. codeBuff+=4;
  23. *((WORD*)codeBuff)=0xD0FF; //call eax
  24. codeBuff+=2;
  25. *codeBuff=0x61; //popad
  26. codeBuff++;
  27. //Ahora metemos el codigo que ha sido reemplazado
  28. memcpy(codeBuff,RepBuff,RepSize);
  29. codeBuff+=RepSize;
  30. //Ahora hacemos el salto a la dirección de la api
  31. *codeBuff=0x68; //push RetDir
  32. codeBuff++;
  33. *((DWORD*)codeBuff)=(DWORD)RetDir;
  34. codeBuff+=4;
  35. *codeBuff=0xC3; //ret
  36. codeBuff-=(19+RepSize);
  37. return codeBuff;
  38. }
  39. int main()
  40. {
  41. void *hMsgBox;
  42. DWORD dLoadLib;
  43. DWORD pID;
  44. HANDLE hproc;
  45. DWORD size=5;
  46. BYTE *ReplacedBuff;
  47. DWORD oldprot;
  48. void *repsite,*dllnsite;
  49. BYTE *inject;
  50. char laDll[]="c:\\ladll.dll";
  51. BYTE *jmpBuff;
  52. printf("Inyección por trampolin by MazarD\nhttp://www.mazard.info\n");
  53. printf("PID del proceso a inyectarse:");
  54. scanf("%d",&pID);
  55. //Preparamos direcciones de apis necesarias
  56. hMsgBox=GetProcAddress(LoadLibrary("user32.dll"),"MessageBoxA");
  57. printf("Dirección de MessageBoxA:%.4x\n",hMsgBox);
  58. dLoadLib=(DWORD)GetProcAddress(GetModuleHandle("kernel32.dll"),"LoadLibraryA");
  59. printf("Dirección de LoadLibraryA:%.4x\n",dLoadLib);
  60. //Abrimos el proceso y damos permisos en la zona de reemplazo
  61. hproc=OpenProcess(PROCESS_ALL_ACCESS,false,pID);
  62. VirtualProtect(hMsgBox,size,PAGE_EXECUTE_READWRITE,&oldprot);
  63. //Leemos el codigo que será reemplazado
  64. ReplacedBuff=(BYTE*)malloc(size+6);
  65. memset(ReplacedBuff,90,size+6);
  66. ReadProcessMemory(hproc,hMsgBox,ReplacedBuff,size,NULL);
  67. //Reservamos memoria y guardamos el nombre de la dll
  68. dllnsite=VirtualAllocEx(hproc,NULL,11,MEM_COMMIT |
  69. MEM_RESERVE,PAGE_EXECUTE_READWRITE);
  70. WriteProcessMemory(hproc,dllnsite,laDll,strlen(laDll)+1,NULL);
  71. printf("Nombre de la dll en:%.4x\n",dllnsite);
  72. //Creamos el codigo
  73. inject=CrearCodigo((DWORD)dllnsite,dLoadLib,(DWORD)hMsgBox+5,ReplacedBuff,size);
  74. //Reservamos memoria y guardamos el codigo
  75. repsite=VirtualAllocEx(hproc,NULL,size+20,MEM_COMMIT |
  76. MEM_RESERVE,PAGE_EXECUTE_READWRITE);
  77. WriteProcessMemory(hproc,repsite,inject,size+20,NULL);
  78. printf("Codigo Reemplazado en:%.4x\n",repsite);
  79. //Creamos un salto hacia nuestro codigo y lo ponemos en el inicio de la api
  80. jmpBuff=(BYTE*)malloc(5);
  81. *jmpBuff=0xE9; //opcode correspondiente a jmp
  82. jmpBuff++;
  83. *((DWORD*)jmpBuff)=(DWORD)repsite-(DWORD)hMsgBox-5;
  84. jmpBuff--;
  85. WriteProcessMemory(hproc,hMsgBox,jmpBuff,5,NULL);
  86. CloseHandle(hproc);
  87. return 0;
  88. }

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  Programación / .NET (C#, VB.NET, ASP) / Conversión de código de MazarD a C# en: 15 Marzo 2011, 23:45 pm
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  Sistemas Operativos / Windows / Re: Recuperar particiones en: 15 Marzo 2011, 13:33 pm
Jeje, yo que tú usaba Paragon Partition Manager...
Páginas: 1 2 3 4 5 6 7 [8]
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines