comment
IRC Chat
play_arrow
Este sitio utiliza cookies propias y de terceros. Si continúa navegando consideramos que acepta el uso de cookies. OK Más Información.

Modificar valores de los registros en runtime

  • 3 Respuestas
  • 2011 Vistas

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado linkgl

  • *
  • Underc0der
  • Mensajes: 45
  • Actividad:
    0%
  • Reputación 0
    • Ver Perfil
« en: Agosto 13, 2011, 01:02:53 pm »
Esta función modifica el valor de algun registro en runtime, puedes usar openprocess o algun sleep si quieres obtener/escribir el valor en algun evento jeje yo cambié el entrypoint haciendo que al cargar el programa eax cambie de valor en el ejemplo, utilicé la estructura CONTEXT para evitarme líos
Código: C
  1. #include <stdio.h>
  2. #include <windows.h>
  3.  
  4. /*
  5. USOS:
  6. Para obtener el valor de otro registro
  7. cambiar donde dice con.Eax por
  8. con.Registro_que_quieras
  9. */
  10.  
  11. DWORD ObtenerRegistro(LPSTR proceso)
  12. {
  13.    STARTUPINFO si;
  14.    PROCESS_INFORMATION pi;
  15.    CONTEXT con;
  16.    You are not allowed to view links. Register or Login(&si, 0, sizeof(si));
  17.    si.cb = sizeof(STARTUPINFO);
  18.    con.ContextFlags = CONTEXT_FULL;
  19.    if(CreateProcess(NULL, proceso, NULL, NULL, FALSE, CREATE_SUSPENDED, NULL, NULL, &si, &pi)==0)
  20.    {
  21.      return 0;
  22.    }
  23.    GetThreadContext(pi.hThread, &con);
  24.    ResumeThread(pi.hThread);
  25.    return con.Eax;
  26. }
  27.  
  28. BOOL EscribirRegistro(LPSTR proceso,DWORD valor)
  29. {
  30.    STARTUPINFO si;
  31.    PROCESS_INFORMATION pi;
  32.    CONTEXT con;
  33.    You are not allowed to view links. Register or Login(&si, 0, sizeof(si));
  34.    si.cb = sizeof(STARTUPINFO);
  35.    con.ContextFlags = CONTEXT_FULL;
  36.    if(CreateProcess(NULL, proceso, NULL, NULL, FALSE, CREATE_SUSPENDED, NULL, NULL, &si, &pi)==0)
  37.    {
  38.      return FALSE;
  39.    }
  40.    GetThreadContext(pi.hThread, &con);
  41.    con.Eax = valor;
  42.    SetThreadContext(pi.hThread,&con);
  43.    ResumeThread(pi.hThread);
  44.    return TRUE;
  45. }
  46.  
  47. //->EJEMPLO DE USO
  48. int main()
  49. {
  50. DWORD eax;
  51. //Cambiamos el valor eax (el entrypoint)
  52. EscribirRegistro("c:\\final.exe",0x413b72f);
  53. eax=ObtenerRegistro("c:\\final.exe");
  54. You are not allowed to view links. Register or Login("%x",eax);
  55. You are not allowed to view links. Register or Login();
  56. return 0;
  57. }

Desconectado Sensei

  • *
  • Underc0der
  • Mensajes: 52
  • Actividad:
    0%
  • Reputación 0
  • Mess with the best, die like the rest.
    • Ver Perfil
    • Email
« Respuesta #1 en: Agosto 16, 2011, 04:31:12 pm »
Estas aportando muy buenos códigos, yo personalmente en C sé programar, pero no sé manejar en profundidad todas las librerias. Un buen ejemplo de como utlilizar la de windows :).

Desconectado linkgl

  • *
  • Underc0der
  • Mensajes: 45
  • Actividad:
    0%
  • Reputación 0
    • Ver Perfil
« Respuesta #2 en: Agosto 16, 2011, 11:04:01 pm »
You are not allowed to view links. Register or Login
Estas aportando muy buenos códigos, yo personalmente en C sé programar, pero no sé manejar en profundidad todas las librerias. Un buen ejemplo de como utlilizar la de windows :).

Gracias, jaja enrealidad no es que maneje bien la librería de windows xD solo basta con mirar la msdn de microshit y mirar que API debe ir jaja ;), seguiré aportando algunos códigos que me salgan de la manga jaja para que no muera esta sección que anda algo "inactiva"  :)

Desconectado Ahkbar

  • *
  • Underc0der
  • Mensajes: 31
  • Actividad:
    0%
  • Reputación 0
    • Ver Perfil
    • Email
« Respuesta #3 en: Julio 18, 2012, 11:18:24 pm »
Genial, con esto puedes saltarte partes de cualquer programa?

Saludos.
You are not allowed to view links. Register or Login

 

¿Te gustó el post? COMPARTILO!



Buscar y reemplazar bytes en runtime (loader)

Iniciado por linkgl

Respuestas: 0
Vistas: 1196
Último mensaje Agosto 13, 2011, 01:35:57 am
por linkgl