Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   cómo cambiar valor Opcode en memoria (https://www.clubdelphi.com/foros/showthread.php?t=92659)

carlosprotos 22-12-2017 07:55:41

cómo cambiar valor Opcode en memoria
 
Necesito algo de ayudin , me he preguntado si existe alguna función o procedimiento para hacer una
modificación interna de una memoria de un juego.

Imagen


Me gustaría modificar la dirección

0040B32B = JMP 0040B2FD
(Address) (Valor Opcode)

pero con alguna funcion o procedimiento en delphi

Alguna función o idea ... ? :confused::confused::confused:

Reasen 30-12-2017 23:25:38

Puedes guiarte mediante esta función, saludos.

Código Delphi [-]
function WriteBytes(pAddress: Pointer; Bytes: array of Byte): Boolean;
var
  OldProtect, NewProtect: DWORD;
begin
  if VirtualProtect(pAddress, SizeOf(Bytes), PAGE_EXECUTE_READWRITE, @OldProtect) then
  begin
    Move(Bytes, pAddress^, Length(Bytes));
    VirtualProtect(pAddress, SizeOf(Bytes), OldProtect, @NewProtect);
    Result := True;
  end
  else
    Result := False;
end;

Suponiendo que el proceso es externo y la edición la quieres efectuar internamente entonces tendrás que usar técnicas de inyección de DLL
o modificar la función y usar la API WriteProcessMemory pero entonces ya estaríamos hablando de algo externo

carlosprotos 03-01-2018 02:27:57

:v
 
Eso hize , igual no funciona ,me saca del juego, por que los bytes cambian cada vez que ingreso

el JMP "0040B2FD" -> 0040B2FD el addreess es la misma , solo que en array of bytes cambia un par de bytes
y no funciona y te da errores., por eso quiero averiguar si se puede poner JMP "Modulo+B2FD" ya que eso no cambia
, solo los valores en array of bytes y 4 bytes por cada ingresada. Alguna forma?

Reasen 03-01-2018 14:57:43

Teniendo un valor estático te quedaría escanear la memoria hasta encontrar la localización/patrón de dicho salto.

Te recomiendo que uses Cheat Engine, te resultará más fácil que programar la función.


La franja horaria es GMT +2. Ahora son las 13:09:48.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi