AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi werte in speicher schreiben (Trainer)
Thema durchsuchen
Ansicht
Themen-Optionen

werte in speicher schreiben (Trainer)

Ein Thema von chris1983 · begonnen am 18. Feb 2007 · letzter Beitrag vom 20. Feb 2007
Antwort Antwort
chris1983

Registriert seit: 16. Feb 2007
5 Beiträge
 
Delphi 7 Personal
 
#1

werte in speicher schreiben (Trainer)

  Alt 18. Feb 2007, 21:37
hey zusamm ich bin es mal wieder...
Ich hab jetzt ein zweites problem ich kann nicht in den speicher schreiben :/


hier mal der komplete source bis auf die NFO die hab ich raus genommen ^^

Delphi-Quellcode:
program GEngine;

{$define Win32App}

uses
  windows,messages,MiniFMOD,sysutils,
  win2k in 'Win2k.pas';

const

LOGO = 113;
ABOUT_DIALOG = 103;
ABOUT_CLOSE_BUTTON = 105;
INFO_EDIT = 14;
info =
..............

hier kommt die NFO rein also nicht wundern :)

......

var
Msg : TMSG;
Win : HWND;
Inst : Integer;
MusicPlayer : HMUSICMODULE;

const
WS_EX_LAYERED = $80000;
LWA_COLORKEY = 1;
LWA_ALPHA = 2;

const
WindowName = 'biohazard 4';
GAddress1 = $A0A274;
GAddress2 = $A0A27F;
GAddress3 = $63CDB2;
Gbuf1 : array[1..11] of byte = ($B9,$38,$1F,$00,$00,$09,$C1,$66,$89,$4F,$08);
Gbuf2 : array[1..5] of byte = ($E9,$34,$2B,$C3,$FF);
Gbuf3 : array[1..6] of byte = ($E9,$BD,$D4,$3C,$00,$90);

{$R res\trainer.res}  
procedure trans(Handle_:hWnd;Trans:byte);
begin
SetWindowLong(Handle_, GWL_EXSTYLE, GetWindowLong(Handle_, GWL_EXSTYLE) or WS_EX_LAYERED);
Win2k.SetLayeredWindowAttributes(Handle_, 0, Trans, LWA_ALPHA);
end;

procedure RunGame;
   var sti:tstartupinfo;
       lpPi:tprocessinformation;
begin
   ZeroMemory(@sti, SizeOf(sti));
   ZeroMemory(@lpPi, SizeOf(lpPi));

   If not CreateProcess(nil,'game.exe',nil,nil,false,CREATE_NEW_CONSOLE or NORMAL_PRIORITY_CLASS,nil,nil,sti,lppi) then begin
      MessageBox(Win,'Game EXE not found','Error',mb_ok+mb_iconinformation);
   end else
      if CreateProcess(nil,'game.exe',nil,nil,false,CREATE_NEW_CONSOLE or NORMAL_PRIORITY_CLASS,nil,nil,sti,lppi) then begin
         FSOUND_Close;
      end;
end;


function PatchMem(WindowName:pchar;BaseAddress:dword;buffer:pointer;LengthOfBuffer:dword):boolean;
var
   hwnd,id,ph:dword;
   written:cardinal;
   successful:longbool;
begin
  asm
  xchg eax,written
  mov eax,0
  end;
   hwnd:=findwindowexa(0,0,nil,WindowName);
   asm
   xchg edx,hwnd
   end;
      asm
      cmp hwnd,0
      end;
      
     getwindowthreadprocessid(hwnd,@id);
     ph:=openprocess(generic_read or generic_write,false,id);
     asm
     cmp ph,0
     end;
     begin
          patchmem:=false;
          exit;
     end;
     asm
        push written
        push LengthOfBuffer
        push buffer
        push BaseAddress
        push ph
        call WriteProcessMemory
        mov successful, eax
     end;
     patchmem:=successful;
     closehandle(0);
end;

procedure Quit;
begin
  EndDialog(win,0);
  FMUSIC_FreeSong(MusicPlayer);
  FSOUND_Close;
  halt;
end;

function AboutDlgProc(hWin, uMsg, wParam, lParam : Integer) : Integer; stdcall;
var
  OldInfo : array[0..65534] of Char;
  hIcon, hFont, Color, I : Integer;
begin
  if uMsg = WM_INITDIALOG then
begin
  trans(hWin,245);
  GetDlgItemText(hWin, INFO_EDIT, PChar(@OldInfo), 65535);
  SetDlgItemText(hWin, INFO_EDIT, PChar(String(OldInfo) + info));
  hFont := CreateFont(10, 0, 0, 0, 400, 0, 0, 0,
                      DEFAULT_CHARSET,OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS,
                      DEFAULT_QUALITY, DEFAULT_PITCH, 'Terminal');
  if hFont <> 0 then SendDlgItemMessage(hWin, INFO_EDIT, WM_SETFONT, hFont, 0);
  SendDlgItemMessage(hWin, 14, 1096, 0, $0);
end;
  if uMsg = WM_LBUTTONDOWN then
begin
  ReleaseCapture;
  SendMessage(hWin,WM_NCLBUTTONDOWN,HTCAPTION,0);
end;
  Result := 0;
 if (uMsg = WM_DESTROY) or (uMsg = WM_CLOSE) or
    ((uMsg = WM_COMMAND) and (wParam = ABOUT_CLOSE_BUTTON))
    then EndDialog(hWin,0);
end;

function SettingsDlgProc(Window : hWnd; Msg,WParam,LParam : Integer): Integer; StdCall;
var
  OldInfo : array[0..65534] of Char;
begin
case Msg of
  wm_InitDialog : begin
  trans(window,205);

  FSOUND_File_SetCallbacks(@XMFile_OpenCallback, @XMFile_CloseCallback,
     @XMFile_ReadCallback, @XMFile_SeekCallback, @XMFile_TellCallback);
  FSOUND_Init(44100, 0);
  MusicPlayer := FMUSIC_LoadSong('XMMUSIC', nil);
  FMUSIC_PlaySong(MusicPlayer);
  end;
  WM_LBUTTONDOWN : begin
  ReleaseCapture;
  SendMessage(Window,WM_NCLBUTTONDOWN,HTCAPTION,0);
  end;
  wm_Close : DestroyWindow(Win);
  wm_Destroy : PostQuitMessage(0);
end;
  Result := 0;
   case Msg of
     WM_COMMAND : begin
   end;
 end;
end;

Procedure RunSettings;
begin
  Win := CreateDialog(hInstance,PCHar(100),0,@SettingsDlgProc);
  Showwindow(Win,SW_SHOW);
  Updatewindow(Win);
 end;

begin
  RunSettings;
while GetMessage(Msg,0,0,0) do
begin
  TranslateMessage(Msg);
  DispatchMessage(Msg);
//end;
  if (GetAsyncKeyState(VK_END) <> 0) then quit;
  if (GetAsyncKeyState($52) <> 0) then RunGame;
  if (GetAsyncKeyState($49) <> 0) then DialogBoxParam(hInstance, PChar(ABOUT_DIALOG), Win,@AboutDlgProc, 0);
  if (GetAsyncKeyState(VK_F1) <> 0) then patchmem(WindowName,GAddress1,@Gbuf1,sizeof(Gbuf1));
                                          patchmem(WindowName,GAddress2,@Gbuf2,sizeof(Gbuf2));
                                          patchmem(WindowName,GAddress3,@Gbuf3,sizeof(Gbuf3));

end;
end.
  Mit Zitat antworten Zitat
Benutzerbild von f.siebler
f.siebler

Registriert seit: 15. Jan 2007
Ort: Hamburg
170 Beiträge
 
Delphi 2006 Professional
 
#2

Re: werte in speicher schreiben (Trainer)

  Alt 19. Feb 2007, 10:37
hi,
es gibt seit windows xp sp2 eine funktion mit dem namen "Datenausführungsverhinderung", dieses kann aber auch von der cpu hardware seitig erledigt, bzw. unterstützt werden. diese super funktion verhindert den direkten speicherzugriff auf andere anwendungen.... ich glaube google etc. sollten dir da ein wenig weiterhelfen...
Viele Grüße aus Hamburg
Fabian
sql-praxis.net: sql von der Theorie in die Praxis...
  Mit Zitat antworten Zitat
chris1983

Registriert seit: 16. Feb 2007
5 Beiträge
 
Delphi 7 Personal
 
#3

Re: werte in speicher schreiben (Trainer)

  Alt 20. Feb 2007, 07:09
weis den keiner eine antwort
  Mit Zitat antworten Zitat
Benutzerbild von turboPASCAL
turboPASCAL

Registriert seit: 8. Mai 2005
Ort: Sondershausen
4.274 Beiträge
 
Delphi 6 Personal
 
#4

Re: werte in speicher schreiben (Trainer)

  Alt 20. Feb 2007, 09:34
Das Teil funktioniert schon, aber deine Adressen für's Game stimmen wohl nicht.
Matti
Meine Software-Projekte - Homepage - Grüße vom Rüsselmops -Mops Mopser
  Mit Zitat antworten Zitat
Benutzerbild von sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#5

Re: werte in speicher schreiben (Trainer)

  Alt 20. Feb 2007, 11:42
Delphi-Quellcode:
asm
  cmp ph,0
end;
begin
  patchmem:=false;
  exit;
end;
Was ist denn das? Soll das eine If-Abfrage werden? Dann mach sie doch besser in reinem Pascal. So wird es auf jeden Fall nix. Exit wird immer ausgeführt. Dein Programm kommt nie bis writeprocessmemory.
Du solltest generell mal das ASM rausschmeißen. Es ist nicht wirklich sinnvoll (also ich kann keinen Sinn erkennen) und es gibt noch andere Probleme (nur als Beipsiel):
Delphi-Quellcode:
hwnd:=findwindowexa(0,0,nil,WindowName);
asm
  xchg edx,hwnd
  //in hwnd steht jetzt edx. Und in edx stand vorher entweder BaseAddress oder irgendein (meist nicht verwertbares)Zwischenergebnis von FindWindowEx
end;
asm //ziemlich sinnlos ASM zu beenden und gleich wieder zu "starten"
  cmp hwnd,0 //hier vergleichst du definitv nicht das hwnd aus FindwindowEx
end;
PS: Ich kann mich auch stark irren, aber es sieht alles etwas eigenartig aus.
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:46 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz