Register for your free account! | Forgot your password?

Go Back   elitepvpers > Coders Den > General Coding
You last visited: Today at 07:52

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



Welche Bytes werden beim Hooken/Detouren per JMP überschrieben?

Discussion on Welche Bytes werden beim Hooken/Detouren per JMP überschrieben? within the General Coding forum part of the Coders Den category.

Reply
 
Old   #1
 
Shadow992's Avatar
 
elite*gold: 77
Join Date: May 2008
Posts: 5,430
Received Thanks: 5,876
Welche Bytes werden beim Hooken/Detouren per JMP überschrieben?

Hey zusammen, mal wieder eine hoffentlich schnell zu beantwortende Frage von mir.

Mir geht es wirklich nur um die Theorie und um diese eine/zwei Frage(n), ich brauche keine Code-Beispiele oder Api-Funktionen.

Wenn ich eine Funktion (z.b. in einem Spiel) hooke, was passiert dann?
Was soweit logisch ist:
1. Jmp in einen Address-Bereich, der von uns erstellt wurde
2. Jmp zurück

Aber wo genau findet dieser Jmp statt?
Wird er in die Funktion geschrieben (also in etwa so):

Pseudo-Assembler:
Code:
Push Arguments
call MEINEFUNKTION
...

MEINEFUNKTION:
Jmp HIER_WIRD_ZU_UNSEREM_SPEICHER_GESPRUNGEN
normale Funktion
...
oder sieht das eher so aus?

Pseudo-Assembler:
Code:
Push Arguments
Jmp HIER_WIRD_ZU_UNSEREM_SPEICHER_GESPRUNGEN
...

MEINEFUNKTION:
normale Funktion
...


Speicher:
; irgendeine Code den wir ausführen wollen
call MEINEFUNKTION
Jmp zurück
Und wo genau liegt der Unterschied zwischen einem Hook und Detour?

Das wars eigentlich schon einmal an Fragen, danke euch.
Shadow992 is offline  
Old 07/15/2013, 12:40   #2
 
Master674b's Avatar
 
elite*gold: 0
Join Date: Dec 2012
Posts: 255
Received Thanks: 110
Der jump wird da hin geschrieben wo du ihn haben wiolst, normal aber am beginn einer Funktion. Dort überschreibt er in aller regel die bytes von funktionsprolog. Falls mit hotpatch funktionalität compilt wurde wären das

Mov edi, edi
Push ebp
Mov ebp, esp

Detour heißt allgemein umleitung, ein hook kann z.b. auch ein breakpoint sein. Den begriff hook würde ich für beides verwenden, detour aber nur für jmp hooks.
Master674b is offline  
Thanks
1 User
Old 07/15/2013, 13:04   #3


 
MrSm!th's Avatar
 
elite*gold: 7110
Join Date: Jun 2009
Posts: 28,904
Received Thanks: 25,394
Detour und Hook wird allgemein relativ synonym verwendet.
Wenn man nur von einem Standard-E9-Detour ausgeht, wie du ihn beschrieben hast, wird er idR an den Anfang der Funktion geschrieben, weil du es dann in deiner highlevel Sprache (meist C/C++) leichter hast, mit Parametern etc. umzugehen.
Theoretisch kannst du aber jede Adresse angeben und entsprechend natürlich auch einen Call zu der Funktion mit einem Call zu deiner Funktion überschreiben o.Ä..
Zu beachten wäre dann aber, dass nur der lokale Call überschrieben wird und nicht wie beim Anfang der Funktion jeder Aufruf der Funktion zu dir umgeleitet wird.

Wundert mich irgendwie, die Frage von dir zu lesen. Noch nie nach einem Detour mal im Debugger geschaut, was im Programm passiert? :x
MrSm!th is offline  
Thanks
1 User
Old 07/15/2013, 13:04   #4
 
Shadow992's Avatar
 
elite*gold: 77
Join Date: May 2008
Posts: 5,430
Received Thanks: 5,876
Bestens beantwortet, danke euch Zweien.

Vielleicht liest dus ja noch smithy:
Ich habe bisher immer versucht alles selbst zu machen und mich hat nur interessiert wie das allgemein normalerweise gemacht wird.
Shadow992 is offline  
Reply


Similar Threads Similar Threads
[C++] Probleme mit Injecten & Detouren
10/06/2012 - C/C++ - 0 Replies
Hallo Leute, diesen Thread kennen die meisten hier ja wohl schon: http://www.elitepvpers.com/forum/coding-tutorials /519256-c-eigene-detours-teil2.html Allerdings habe ich damit mehr als nur ein Problem (manche davon habe ich auch hier im Forum schon wiedergefunden -> allerdings ohne Lösung. Nummer 1 wäre hier: ollydebug findet bei meinem Programm keine referenzierten Strings. Nun gut, ich könnte mir vorstellen, dass cout<<"Ein String"<<endl; hier nicht als Referenz gesehen wird....
neu bei wow welche cds werden benötigt?
05/01/2012 - World of Warcraft - 6 Replies
Hallo ich bin der zeit wow testversion am zocken und überlege mir ob ichs mir nicht kaufe ;-) nun zur frage ich würde es mir ja dann bei MediaMarkt kaufen welche CDs müste ich mir dann kaufen und wie habt ihr angefangen?
Welche Spiele werden laufen
04/05/2011 - Technical Support - 6 Replies
Hallo, da ich mir bald den AMD Phenom II X4 955 Box, Sockel AM3 mit 4x3,2 ghz holen werde wollte ich fragen welche spiele laufen werden. Habe dann: AMD Phenom II X4 955 Box, Sockel AM3 Sapphire Radeon HD 5770 1 Gb 4 GB Ram
2 Bytes oder 4 Bytes ?
02/13/2010 - Kal Online - 3 Replies
Erm wenn ich nach cooldowns schaue für Mockery mit der UCE such ich dann mit 2 Bytes oder 4 Bytes ??
Eigenes Programm detouren
06/05/2009 - General Coding - 3 Replies
Hi, ich habe mir ein Opferprogramm geschrieben und deren Funktionsadresse mit IDA ermittelt. Opfer: void show (int i) { cout << i << endl;



All times are GMT +2. The time now is 07:52.


Powered by vBulletin®
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2024 elitepvpers All Rights Reserved.