AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

dll trainer

Ein Thema von k4ni · begonnen am 2. Feb 2008 · letzter Beitrag vom 3. Feb 2008
 
k4ni

Registriert seit: 17. Jul 2007
Ort: Ulm
258 Beiträge
 
Delphi 7 Enterprise
 
#1

dll trainer

  Alt 2. Feb 2008, 16:15
hallo DP,

Ich habe in einem anderen forum in einem thread gesehen wie man eine art dll trainer machen kann.
Also hab ich schonmal etwas simpeles getestet:
Delphi-Quellcode:
library debugger;

uses
  SysUtils,
  Classes;

{$R *.res}
procedure Random()stdcall;assembler;
asm
mov byte ptr [$008B0108],$74
end;

exports
  Random;

begin
end.
"$008B0108" ist einfach ne addresse die ich genommen hab von dem spiel MineSweeper.
Opcode "jne 008b010a". 75 = "jne" und 74 = "je".
Also wenn ich mit einem dll-injector (ich hab Cheat Engine benützt) die dll injecte und die function bzw. die procedure Random aufrufe ändert er den opcode genau so wie ich es wollte zu "je 008b010a".

Doch ich will diese dll injecten ohne eine function auf zu rufen.
Dann mit einer normalen delphi Anwedung durch einen buttonklick die procedure aufrufen, da bin ich auf dllmain gekommen.

Und dann bin ich zu diesem code gekommen:
Delphi-Quellcode:
library debugger;

uses
  SysUtils,
  Classes,
  Windows;

{$R *.res}


procedure DllMain(reason: integer) ;
var
  buf : array[0..20] of char;
  loader : string;
begin
   case reason of
     DLL_PROCESS_ATTACH:
     begin
       GetModuleFileName(0, buf, SizeOf(buf)) ;
       loader := buf;
       if Pos('winmine.exe', loader) > 0 then
         ExitCode := -1
     end;
     DLL_PROCESS_DETACH:
     begin
       //DLL unloading...
     end;
   end;
end; (*DllMain*)

procedure Random()stdcall;assembler;
asm
mov byte ptr [$008B0108],$74 //75 = jne, 74 = je (short jumps)
end;

exports
  GodMode;

begin
   DllProc := @DllMain;
   DllProc(DLL_PROCESS_ATTACH) ;


   //more DLL code here...
end.
Erstmal zusammenfassung:
Ich will eine dll in einen prozess injecten (MineSweeper/winmine.exe) ohne eine function oder eine procedure zu laden (bis jetzt). Das injecten erstmal mit Cheat Engine.
Dann mit einer delphi anwendung die procedure "Random" die auch in exports steht aufrufen.

Mit dem zuletzt geposted-dem code hab ich mit einer andwendung die export function geladen und durch ein buttonclick ausgeführt.
So:
Delphi-Quellcode:
procedure Random(); external 'debugger.dllname 'Random';

procedure TForm1.Button1Click(Sender: TObject);
begin
Random();
end;
Doch das funktioniert nicht. Muss ich das anderst machen oder ist das alles komplett falsch?
  Mit Zitat antworten Zitat
 


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 19:16 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz