![]() |
api kopieren?
Hallo hab mal wieder eine frage!
gibt es eine möglichkeit eine api zu kopieren um diese getrennt von der originale in meinem programm zu benutzen? Habe schon danach gesucht aber mit den keywords api und kopieren hat man es echt ziemlich schwer. gruß smc |
Re: api kopieren?
kannst du mal genau erleutern was du willst? API heißt ja "Applicaiton Programmer Interface" und da gibts ja eigentlich nix zu kopieren.
|
Re: api kopieren?
Dann müsstest du die API nachprogrammierem... da die Implementation vom Hersteller geändert werden kann, stellt sich die Frage nach dem Sinn (und Unsinn).
Die übliche Gegenfrage: Was willst du erreichen? |
Re: api kopieren?
da gibts ganz praktische sachen, zb gibt für foobar2000 ein plugin mit dem man es wie winamp steuern kann, indem es die api von winamp "kopiert"
|
Re: api kopieren?
ich will readprocessmemory benutzen, für mein gui addon das schön übersichtlich alle werte vom spiel in einer liste anzeigt!
Nun ist das problem das das spiel nachdem es gestartet wird ein 5 byte jmp vor readprocessmemory schreibt deswegen will ich nun readprocessmemory vor dem spielstart kopieren damit ich nachdem man im spielt ist das ganze benutzen kann |
Re: api kopieren?
Wenn du eine DLL in den Zielprozess laden kannst, dann entscheide dich für einen beliebigen IPC-Mechanismus und Read/WriteProcessMemory wird überflüssig...
edit: Schlechtschreibung |
Re: api kopieren?
Stichworte: Dynamische DLL-Einbindung und Funktionsvariablen, evtl. noch etwas Assembler. Damit sollte sich was machen lassen.
|
Re: api kopieren?
ReadProcessMemory ist doch in deinem Prozess vorhanden. Wenn das Spiel ReadProcessMemory überschreibt, dann doch nicht in deinem Prozess. -> Du kannst immer noch ReadProcessMemory benutzen.
|
Re: api kopieren?
wenn das so einfach wäre, das spiel bzw. die protection installiert sich als treiber im system und hooked erstmal global die externen api calls -_-
|
Re: api kopieren?
1) Sicher, dass das nicht die Kerio Firewall ist? (5 Byte jmp in Memory < 0x00100000, dann ein INT2E bzw Sysenter mit der ServiceNummer von NtLoadDriver)
2) Wirds als Treiber geladen, so ist auch sicherlich die SSDT gehookt -> vergiss es wenn du nicht auch einen Treiber schreiben kannst. Um sicher zu gehen, dass des Programm nciht einfach nur einen globalen hook (madCodehook etc) benutzt nimm mal OllyDbg und attache nen neuen Process, der soll aber direkt beim System Breakpoint anhalten. Ist da schon ein jump wirds ein Treiber sein (keine Chance mit ring3 Programm), ansonsten überschreibe den jmp mit den Original Bytes (VirtualProtect + CopyMemory) |
Re: api kopieren?
Also warum jemand ReadProcessMemory hooken würde ist mir irgendwie ein Rätsel, wenn ich es schon über einen Treiber mache, kann ich doch genausogut auch NtReadVirtualMemory nehmen?! :gruebel:
Zitat:
|
Re: api kopieren?
@Olli: Genau meine Ansicht! Kannst dir ja mal die Krio Firewall anschauen. Die macht einen SSDT hook auf ettliche Funktionen (NtWriteProcessMemory usw) und dann noch mal einen hook auf Userebene (mit Relativem Offset [0xE9] und dann wahrscheinlich noch ohne auf die HotPatches zu achten. Obwohl der Usermode Hook rein gar nichts bringt und der kernel Hook ausreichen würde.
Sie springen dann zu ihrem Speicher, wo sie ein NtLoadDriver aufrufen (nachgebautes) und anstatt dem PChar ein signed Byte (< 0) übergeben. Dadurch kann der SSDT hook auf NtLoadDriver erkennen um welch usermode API es sich handelt. Netterweise kann ich aber durch einen Aufruf von CreateRemoteThread (welche unter 2k irgendwie falsch gehandled wird) die Firewall crashen und somit wider normal Pakete ins Inet schicken. Sehr sehr schön oO. Naja war jetzt bisl Offtopic, aber ein Ring0 hook reicht aus und sollte der bei deinem Tool ebenfalls vorhanden sein dann brauchste die Api auch auf User ebene nicht nachbauen. |
Re: api kopieren?
kannst mir das mit dem ring0 hook näher erklären?
Ich gehe also mit meinem programm in ring0, was dann? Wenn ich das spiel starte haut es trotzdem readprocessmemory kaputt :/ |
Re: api kopieren?
Zitat:
Zitat:
Allerdings zeigt die Form der Fragestellung deutlich, daß du noch keinen Treiber schreiben solltest, sondern ruhig lieber noch 2-3 Jahre trainieren solltest, bevor du sowas dann möglicherweise auf Fremdrechner losläßt ;) Ach ja, ist zwar schon ein Jahr alt und sollte inzwischen mit aktuelleren Erkenntnissen verbessert werden, aber damit warte ich noch mindestens bis September: ![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:56 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