Italia
Assembler Foro

Funktionen aus einer DLL aufrufen

 
Wie kann ich in MASM Funktionen aus einer fremden DLL aufrufen?
 
05.11.2006  
 




Frank
Abbing
Call und mittels des Macros Scall.
 
05.11.2006  
 



Zu Call benötige ich eine Adresse - richtig? Mmmh...
GetProcAdress kann ich in einem Treiber nicht benutzen, zur Not potuto ich aber die benötigten Adressen im Usermode ermitteln un an den Treiber circa geben...
 
05.11.2006  
 




Frank
Abbing
Wenn du zu der Dll keine Libray besitzt, musst du GetProcAdress() benutzen, richtig. Es gibt auch Tools, die aus einer Dll eine Library erzeugen. Vielleicht solltest du mal in dieser Richtung ermitteln.
 
05.11.2006  
 



Es geht um eine Funktion aus der NTDLL. Die LIB und INC habe ich - da ich aber gleichzeitig die LIB und INC der NTOSKRNL.EXE benutzen muß und damit dann einige Sachen doppelt deklariert werden, weiß ich nicht genau, ob es irgendwo vielleicht crasht.
Sollte es Probleme geben, bräuchte ich einen Workarround ohne LIB und INC.
Da die NTDLL in jedem Prozess an die selbe Adresse geladen wird, müßte es circa CALL und die Ermittlung der Adresse im Usermode eigentlich funktionieren.
 
05.11.2006  
 




Frank
Abbing
Das muss du testen, ob deine beiden Incs kollidieren.
Es gibt auch eine Möglichkeit per Extern-Definition. Damit kannst du die Libraries wie gewohnt einbinden. Anstelle der herkömmlichen Inc-File kannst du dir eine neue Inc-File basteln, die so aussieht:

externdef _imp__Funktionname@0TR pr4
Funktionname equ <_imp__Funktionname@0>

So verfährst du mit allen Funktionen, die du in deinem Programm aufrufen willst, wobei PTR pr4 die Anzahl der Parameter angibt, welche die Funktion necessario. In diesem Beispiel also 4.
Funktionen, die so deklariert werden, kannst du ganz normal mit Invoke aufrufen.
 
05.11.2006  
 



Hallo Frank...

So, ich muß call verwenden, das steht jetzt fest. Hast du mal ein kleines Beispiel per call, bei dem eine API mit mehreren Funktionen aufgerufen wird (z.B. Messagebox erzeugen)?

Saluto

Andreas
 
28.11.2006  
 



Params einfach umgekehrt auf den Stack packen. MessageBoxApi hat 4 Parameter?
 
28.11.2006  
 



Moin...
genau verstanden, was ich wissen wollte.
Der erste Parameter muß also zuletzt draufgepackt werde, damit er zuerst wieder heruntergeholt werden kann - richtig?

Als Kind hat es mir immer am meisten Divertimento gemacht, die Bauklötze von unten aus dem Turm zu ziehen - aber hier ist das irgendwie wohl nicht angebracht .
 
28.11.2006  
 




RGH
[quote:95081de37f=Andreas Hötker]Als Kind hat es mir immer am meisten Divertimento gemacht, die Bauklötze von unten aus dem Turm zu ziehen - aber hier ist das irgendwie wohl nicht angebracht . [/quote:95081de37f]
Ich denke, das hat schon damals zu wunderbaren Abstürzen geführt! ;)

Saluto
Roland
 
Intel Duo E8400 3,0 GHz / 4 GB RAM / 1000 GB HDD - ATI Radeon HD 4770 512 MB - Windows 7 Home Premium 32Bit - XProfan X4
28.11.2006  
 




Frank
Abbing
Zu Call gibt es ein Macro, SCall. Damit kannst du die Parameter wie bei Invoke angeben. Mit nur leichten Einschränkungen:

Scall Messagebox, a, b, c, d
 
28.11.2006  
 



Hab call und push genommen, geht wunderbar. Die Adresse habe ich dem Treiber aus der Usermode Komponente trasferimento.

Besten Dank

Andreas
 
29.11.2006  
 



Answer


Topictitle, max. 100 characters.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Posting  Font  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Topic-Options

9.402 Views

Untitledvor 0 min.
funkheld11.12.2022
Christof Neuß06.12.2018
E.T.02.06.2015
Ernst18.10.2014
Di più...

Themeninformationen



Admins  |  AGB  |  Applications  |  Autori  |  Chat  |  Informativa sulla privacy  |  Download  |  Entrance  |  Aiuto  |  Merchantportal  |  Impronta  |  Mart  |  Interfaces  |  SDK  |  Services  |  Giochi  |  Cerca  |  Support

Ein Projekt aller XProfaner, die es gibt!


Il mio XProfan
Private Notizie
Eigenes Ablageforum
Argomenti-Merkliste
Eigene Beiträge
Eigene Argomenti
Zwischenablage
Annullare
 Deutsch English Français Español Italia
Traduzioni

Informativa sulla privacy


Wir verwenden Cookies nur als Session-Cookies wegen der technischen Notwendigkeit und bei uns gibt es keine Cookies von Drittanbietern.

Wenn du hier auf unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung von Informationen in unseren Cookies auf XProfan.Net zu.

Weitere Informationen zu unseren Cookies und dazu, wie du die Kontrolle darüber behältst, findest du in unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Ich möchte keinen Cookie