Register for your free account! | Forgot your password?

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

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

Advertisement



Type convertierung / Funktionspointer to DWORD (Functionsaddr)

Discussion on Type convertierung / Funktionspointer to DWORD (Functionsaddr) within the General Coding forum part of the Coders Den category.

Reply
 
Old   #1
 
Xenox3's Avatar
 
elite*gold: 169
Join Date: Jun 2010
Posts: 663
Received Thanks: 1,138
Type convertierung / Funktionspointer to DWORD (Functionsaddr)

Hey liebe Coder,

Ich habe ein kleines Umsetzungsproblem in einem meiner Programme.

Ich versuche die Addr einer Funktion in DWORD zu speichern.

Code:
class Beispiel
{
public:
void Funktion();
};

void Beispiel::Funktion()
{
     DWORD Ptr2Func = &Beispiel::Funktion; <- so ;)

}
In einen FunktionsPointer die Addr der Funktion zu speichern ist für mich kein Problem aber die Addr einer Funktion in DWORD zu konvertieren funktioniert nicht :/. Mit der Funktion (DWORD) GetProcessAddr() funktioniert das ganze einwandfrei...
Meine Variante ist derzeit etwas unschön. Hoffe mir kann einer helfen .

Vielleicht ist meine Frage auch wieder zu leicht für alle und ich Noob komm wieder nicht drauf
Xenox3 is offline  
Old 06/28/2011, 18:01   #2


 
MrSm!th's Avatar
 
elite*gold: 7110
Join Date: Jun 2009
Posts: 28,902
Received Thanks: 25,407
Das liegt daran, dass Funktionspointer für Klassen anders funktionieren als normale.
Es wird soweit ich weiß nur ein Offset gespeichert und Funktionspointer für Klassen lassen sich auch wirklich nur in jenen Speichern, nicht in anderen Typen wie DWORD.

Korrigiert mich, wenn ich das falsch in Erinnerung habe
MrSm!th is offline  
Old 06/28/2011, 19:09   #3
 
Xenox3's Avatar
 
elite*gold: 169
Join Date: Jun 2010
Posts: 663
Received Thanks: 1,138
ich versuche das ganze assembler übergreifend machen.

Code:
006254E0  /$  83EC 10       SUB ESP,10                               ;Meine funktion in assembler/Memory
006254E3  |.  53            PUSH EBX
006254E4  |.  56            PUSH ESI
006254E5  |.  8BF1          MOV ESI,ECX
006254E7  |.  8B86 40030000 MOV EAX,DWORD PTR DS:[ESI+340]
006254ED  |.  85C0          TEST EAX,EAX
.
.
.
Nun versuche ich die Addr 0x06254E0 herausfinden.

Bisher schaff ich das nur so:
Code:
void (MemoryClass::*pt2Func)();
pt2Func = &MemoryClass::CheckState;
char buf[250];
sprintf(buf,"Hier ist die Funktionsaddr %x",pt2Func);
Jedoch kann ich pt2Func nicht in DWORD konvertieren.
Ich könnte nun zwar den HexString in DWORD konvertieren jedoch finde ich das etwas unschön...
Xenox3 is offline  
Old 06/28/2011, 21:08   #4


 
MrSm!th's Avatar
 
elite*gold: 7110
Join Date: Jun 2009
Posts: 28,902
Received Thanks: 25,407
Versuch es doch so:

Erstell nen Pointer, der auf den Pointer zeigt, caste den und dereferenziere dann.
So kann man auch float in DWORD casten, ohne dass einfach der Wert ohne die Nachkommastellen konvertiert wird (sprich einfach alle bytes werden 1:1 kopiert):

Code:
DWORD addr = (DWORD)(*((DWORD**)(&method_ptr)));
Das sollte eigentlich gehen, da ein Pointer auf nen Pointer (egal welche Größe letzterer hat) ja auf 32bit Maschinen immer 32bit haben sollte und dementsprechend auch konvertiert können werden sollte.
MrSm!th is offline  
Thanks
1 User
Reply


Similar Threads Similar Threads
*(Hot*)(DWORD WhcLabs)(D3D,PlantAnyWhere,SNS,Teleport).......... ......
06/25/2011 - WarRock Hacks, Bots, Cheats & Exploits - 15 Replies
Status : Undetected Version : 1.1 Screen: http://img232.imageshack.us/img232/2425/whcl.png Uploaded with ImageShack.us Virustotal
word,dword,float...
05/04/2009 - Private Server - 0 Replies
Hi I wanted to ask what is the lenght in bytes of: word,dword,qword,float,string,ustring?
Funktionspointer help
07/17/2008 - General Coding - 7 Replies
Hallo, habe ein Problem. Nehmen wir an diese Adresse ist ein Funktionspointer (00A12345) in einem fremden Prozess. Nun möchte ich diese Funktion aufrufen. Dazu habe ich folgendes versucht... Ich habe eine dll erstellt, die diese Funktion aufrufen soll. Die struct stimmt! DELPHI 6 library MoveFunction; uses Windows,
Need item type and token type boot
03/18/2008 - Conquer Online 2 - 1 Replies
Hi All programers and makers of boots, Great job. Could some one make item and token type boot for patch 5118. Please



All times are GMT +1. The time now is 13:15.


Powered by vBulletin®
Copyright ©2000 - 2025, 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 ©2025 elitepvpers All Rights Reserved.