Assembler Code - call

Übersicht BlitzMax, BlitzMax NG Allgemein

Neue Antwort erstellen

Der Eisvogel

Betreff: Assembler Code - call

BeitragSa, Apr 30, 2011 19:28
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi

Ich versuche derzeit mit ASM in BlitzMax zu arbeiten, basierend auf diesem Tutorial.
Jetzt besteht das Problem, dass mein Code nicht so wie ich will compiled wird. Ich versuche einen Funktionsaufruf, auf eine Funktion, die NICHT in meinem Programm enthalten ist, sondern in dem Host Programm in das meine DLL später injected wird enthalten ist.
Code: [AUSKLAPPEN]
call 010104AD0h

Diese Zeile sollte eigentlich die Funktion des Host Programmes an der Stelle $10104AD0 aufrufen, doch wird es von BlitzMax immer in das folgende übersetzt (IDA Pro):
Code: [AUSKLAPPEN]
call    near ptr 20121AD0h


Ich habe keine Ahnung wieso. Ich würde ja das Symbol direkt hinschreiben, doch da es ja "nicht" exisitiert kann BlitzMax das nicht linken und somit funktioniert das nicht.
Mache ich was falsch? Oder geht das einfach nicht, oder nur anders?

MfG
Der Eisvogel
Ungarische Notation kann nützlich sein.
BlitzMax ; Blitz3D
Win 7 Pro 64 Bit ; Intel Core i7-860 ; 8 GB Ram ; ATI HD 5750 1 GB
Projekte: Window-Crasher
Ich liebe es mit der WinAPI zu spielen.

Thunder

BeitragSa, Apr 30, 2011 19:45
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich denke, du musst einen Far Call machen:

Code: [AUSKLAPPEN]
push ebx
mov ebx,0x010104AD0h
call ebx
pop ebx


Weil ein Near Call indirekt zum aktuellen Wert in eip erfolgt. Ich weiß aber nicht, ob das funktionieren wird, weil zum Offset noch ein Wert hinzuaddiert wird, der vielleicht von Start zu Start unterschiedlich ist.
Du kannst aber versuchen die Differenz von den zwei Werten vom Wert in ebx abzuziehen (wenn der obere Code nicht funktioniert):
Code: [AUSKLAPPEN]
push ebx
mov ebx,010104AD0h-1001D000h ; 1001D000h ist die Differenz
call ebx
pop ebx



mfg Thunder
Meine Sachen: https://bitbucket.org/chtisgit https://github.com/chtisgit

Der Eisvogel

BeitragSa, Apr 30, 2011 21:15
Antworten mit Zitat
Benutzer-Profile anzeigen
Das funktioniert leider auch nicht. Keiner der beiden Codes.

EDIT: Habs jetzt so gelöst, dass ich den Funktions-Pointer als Parameter übegebe. Das scheint zu funktionieren.
Ungarische Notation kann nützlich sein.
BlitzMax ; Blitz3D
Win 7 Pro 64 Bit ; Intel Core i7-860 ; 8 GB Ram ; ATI HD 5750 1 GB
Projekte: Window-Crasher
Ich liebe es mit der WinAPI zu spielen.

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group