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

 

 


Tema destacado: Recopilación Tutoriales y Manuales Hacking, Seguridad, Privacidad, Hardware, etc


+  Foro de elhacker.net
|-+  Programación
| |-+  Ingeniería Inversa (Moderadores: karmany, .:UND3R:., MCKSys Argentina)
| | |-+  Como puedo ejecutar instrucciones que estan en Memoria
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Como puedo ejecutar instrucciones que estan en Memoria  (Leído 5,267 veces)
bodoke1969

Desconectado Desconectado

Mensajes: 7


Ver Perfil
Como puedo ejecutar instrucciones que estan en Memoria
« en: 7 Marzo 2018, 22:46 pm »

Buenas tardes a todos    :laugh: :

   Les envio un cordial saludo y a su vez le comento lo siguiente    ;-)  :

   Tengo una apliacion hecha en windows que manda instrucciones a un dispositivo que se conecta con USB (No es HID), y deseo enviarle instrucciones en hexadecimal, pero, no he podido, no he encontrado documentacion suficiente para enviarle datos y recibir la respuesta, tambien he visto que ese dispositivo no emula serial, a lo mucho he logrado abrir la conexion, pero, tengo la aplicacion que lo hace, por medio del OllyDbg he visto en que sector de la mamoria lo hace, trate de copiar esa parte en ASM y ejecutarla por fuera y me arroja error, lo que deseo y si me pueden orientar, o que debo de leer, el cómo puedo hacer una apliacion que lea esa parte de memoria y que la ejecute desde ahi.

Gracias de antemano por su ayuda!!  :laugh:

  SALUDOS!!!   :-*
En línea

MCKSys Argentina
Moderador Global
***
Desconectado Desconectado

Mensajes: 5.471


Diviértete crackeando, que para eso estamos!


Ver Perfil
Re: Como puedo ejecutar instrucciones que estan en Memoria
« Respuesta #1 en: 8 Marzo 2018, 01:13 am »

Hola!

Si sabes de ASM, deberías poder copiar, reparar y ejecutar el código. Por supuesto, depende del código, si tiene llamadas a APIS, etc.

Si es por leer, puedes empezar por la intro al cracking con Olly de ricardo narvaja, que está disponible en el FAQ (link en mi firma).

Si quieres modificar el binario ejecutándose, puedes usar WriteProcessMemory desde un ejecutable externo e inyectarle las instrucciones que desees, pero necesitarás saber lo básico para poder hacer algo así.

Saludos!
En línea

MCKSys Argentina

"Si piensas que algo está bien sólo porque todo el mundo lo cree, no estás pensando."

Geovane

Desconectado Desconectado

Mensajes: 208



Ver Perfil
Re: Como puedo ejecutar instrucciones que estan en Memoria
« Respuesta #2 en: 8 Marzo 2018, 23:13 pm »

Escriba la aplicación con lenguaje de fácil implementación de ASM, así como Delphi

begin
asm
...........
...........
escriba asm.......
end;

begin
..........
..........Delphi
...........
end;


Esto lee y graba en la memoria de un proceso .....


Código
  1. unit Unit1;
  2. interface
  3. uses
  4.  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  5.  Dialogs , TlHelp32, StdCtrls, ExtCtrls , Registry , ComCtrls ,shellapi ;
  6. type
  7.  TForm1 = class(TForm)
  8.    Edit1: TEdit;
  9.    Button1: TButton;
  10.    Edit2: TEdit;
  11.    Button2: TButton;
  12.    procedure Button1Click(Sender: TObject);
  13.    procedure Button2Click(Sender: TObject);
  14.    private
  15.    public
  16.  end;
  17. var
  18.  Form1: TForm1;
  19. implementation
  20. {$R *.dfm}
  21. function BlockInput( fBlockIt:boolean):Boolean; StdCall; External 'User32.dll';
  22. //
  23. function GetProcessID(Const ExeFileName: string; var ProcessId: integer): boolean;
  24.    var
  25.    ContinueLoop: BOOL;
  26.    FSnapshotHandle: THandle;
  27.    FProcessEntry32: TProcessEntry32;
  28.    begin
  29.    result := false;
  30.    FSnapshotHandle := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
  31.    FProcessEntry32.dwSize := Sizeof(FProcessEntry32);
  32.    ContinueLoop := Process32First(FSnapshotHandle, FProcessEntry32);
  33.    while integer(ContinueLoop) <> 0 do begin
  34.    if (StrIComp(PChar(ExtractFileName(FProcessEntry32.szExeFile)), PChar(ExeFileName)) = 0)
  35.    or (StrIComp(FProcessEntry32.szExeFile, PChar(ExeFileName)) = 0) then begin
  36.    ProcessId:= FProcessEntry32.th32ProcessID;
  37.    result := true;
  38.    break;
  39.    end;
  40.    ContinueLoop := Process32Next(FSnapshotHandle, FProcessEntry32);
  41.    end;
  42.    CloseHandle(FSnapshotHandle);
  43.    end;
  44. //
  45. procedure TForm1.Button1Click(Sender: TObject);
  46. VAR
  47.  valor,buffer: cardinal;
  48.  PID: integer;
  49.  HandleX:THandle;
  50. BEGIN
  51.   if GetProcessID('Porgrama.exe',PID)then
  52.   begin
  53.    Handlex:= OpenProcess(PROCESS_ALL_ACCESS,False,PID);
  54.    ReadProcessMemory(HandleX,Pointer(strToint('$'+ Edit2.Text)),@valor ,4 ,buffer);
  55.    Edit1.Text:= intTostr(valor);
  56. end;
  57. end;
  58.  
  59. procedure TForm1.Button2Click(Sender: TObject);
  60. VAR
  61.  valor,buffer,endereco: cardinal;
  62.  PID: integer;
  63.  HandleX:THandle;
  64. begin
  65. if GetProcessID('Porgrama.exe',PID)then
  66.   begin
  67.   endereco:=strToint('$'+ Edit2.Text);
  68.   valor:=strToint(Edit1.Text);
  69.   Handlex:= OpenProcess(PROCESS_ALL_ACCESS,False,PID);
  70.   WriteProcessMemory(HandleX,Pointer(endereco),@valor ,4 ,buffer);
  71. end;
  72. end;
  73.  
  74. end.
  75.  
« Última modificación: 8 Marzo 2018, 23:24 pm por Geovane » En línea

Para servicios, envíe un mensaje privado, sólo para servicios en curso hasta fecha de 10/06/2019
bodoke1969

Desconectado Desconectado

Mensajes: 7


Ver Perfil
Re: Como puedo ejecutar instrucciones que estan en Memoria
« Respuesta #3 en: 12 Marzo 2018, 19:42 pm »

Buenas tardes a todos, y gracias por compartir sus conocimientos, voy a probar lo que me dicen y les comento mas adelasnte.

  SALUDOS!!!  ;-)
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines