AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

DLL-Funktionen in ner andderen DLL

Ein Thema von CrashXY · begonnen am 27. Mär 2005 · letzter Beitrag vom 28. Mär 2005
Antwort Antwort
Seite 1 von 2  1 2      
CrashXY

Registriert seit: 25. Okt 2004
6 Beiträge
 
#1

DLL-Funktionen in ner andderen DLL

  Alt 27. Mär 2005, 12:44
So, ich hab folgendes Problem:

Ich habe eine DLL die Funktionen bereitstellt (ich kenn nur den Namen der Funktionen, nicht die Parameter, da liegt auch ein Problem...)

Nun hab ich eine DLL geschrieben und sie praktisch durchlenken lassen. Ein Prog ruft statt der orginal DLL meien DLL auf und ich 'leite' dann alles weiter da ich alle funktionen per:

procedure xxx; external 'xxx.dll'; Eingebunden und über export freigelegt habe, nun meine Frage:
Wie kann ich nur mit der DLL Datei und dem NAmen der Funktion ihre Parameter abfragen und dann wie kann ich die Weitergabe beienflussen, also mit override, das geht nicht...
  Mit Zitat antworten Zitat
jbg

Registriert seit: 12. Jun 2002
3.483 Beiträge
 
Delphi 10.1 Berlin Professional
 
#2

Re: DLL-Funktionen in ner andderen DLL

  Alt 27. Mär 2005, 13:19
Zitat von CrashXY:
Wie kann ich nur mit der DLL Datei und dem NAmen der Funktion ihre Parameter abfragen
Indem du dir die Header-Dateien anschaust/beschaffst.

Zitat:
und dann wie kann ich die Weitergabe beienflussen, also mit override, das geht nicht...
override ist für Methoden einer Klasse und nicht für Funktionen und Prozeduren. Wenn du die Parameter hast, kannst du doch die original Funktion aus deiner aufrufen. Du musst der original Fkt. nur einen anderen import-Namen geben.
procedure yyy; external 'xxx.dll' name 'xxx';
  Mit Zitat antworten Zitat
Benutzerbild von c113plpbr
c113plpbr

Registriert seit: 18. Nov 2003
Ort: localhost
674 Beiträge
 
Delphi 2005 Professional
 
#3

Re: DLL-Funktionen in ner andderen DLL

  Alt 27. Mär 2005, 13:26
Hallo CrashXY!

Laut deiner Beschreibung versuchst du, das was man unter DLL-Wrapping versteht zu programmieren.
Zitat von CrashXY:
Wie kann ich nur mit der DLL Datei und dem NAmen der Funktion ihre Parameter abfragen und dann wie kann ich die Weitergabe beienflussen, also mit override, das geht nicht...
Meines Wissens nach, geht das unter Delphi nur mit den Parametern, allerdings bin ich mir da nicht ganz sicher.

Aber darf man fragen, wozu du das brauchst? Vielleicht gibt es ja andere (bessere?) Lösungen dafür ...

ciao, Philipp
Philipp
There is never enough time to do all the nothing you want.
*HABENWILL*
  Mit Zitat antworten Zitat
Masterof

Registriert seit: 12. Feb 2004
Ort: Bad Elster
142 Beiträge
 
Delphi 7 Enterprise
 
#4

Re: DLL-Funktionen in ner andderen DLL

  Alt 27. Mär 2005, 13:33
Hallo!!

wenn du die Funktion in der DLL ansprechen willst brauchst du unter Delphi die Paramter, sonnst akzeptiert er deinen Aufruf nicht.

Master
.: Meine Homepage :.
http://www.micha-hertel.de
  Mit Zitat antworten Zitat
CrashXY

Registriert seit: 25. Okt 2004
6 Beiträge
 
#5

Re: DLL-Funktionen in ner andderen DLL

  Alt 27. Mär 2005, 18:49
Wie ich die genau beschaffen könnte ist mir immernoch unklar. Ich habe die DLL und ein Programm das sie nutzt (kein Source der beiden!). Um an die Namen der Proceduren zu kommen hab ich die DLL-Datei mit disasm disassmebliert. Was ich jetzt habe ist der Disassemblirte Code und meine DLL die als Zwischenleitung fungiert.

Zitat:
Number of Exported Functions = 25 (decimal)

Addr:004426B8 Ord: 1 (0001h) Name: HarmonyGetVersion
Addr:004426C0 Ord: 2 (0002h) Name: HarmonyCreate
Addr:004426E4 Ord: 3 (0003h) Name: HarmonyRelease
Addr:00442708 Ord: 4 (0004h) Name: HarmonyInitMidi
Addr:0044272C Ord: 5 (0005h) Name: HarmonyInitWave
Addr:00442750 Ord: 6 (0006h) Name: HarmonyTermMidi
Addr:00442774 Ord: 7 (0007h) Name: HarmonyTermWave
Addr:00442798 Ord: 8 (0008h) Name: HarmonyCheckValidMidi
Addr:004427BC Ord: 9 (0009h) Name: HarmonyCheckValidWave
Addr:00442848 Ord: 10 (000Ah) Name: HarmonyFadeInMusic
Addr:00442874 Ord: 11 (000Bh) Name: HarmonyFadeOutMusic
Addr:004428A0 Ord: 12 (000Ch) Name: HarmonySetMusicVolume
Addr:004428CC Ord: 13 (000Dh) Name: HarmonySetMusicSpeed
Addr:004428F8 Ord: 14 (000Eh) Name: HarmonySetMusicPanpot
Addr:004427E0 Ord: 15 (000Fh) Name: HarmonyPlayMusic
Addr:00442924 Ord: 16 (0010h) Name: HarmonyStopMusic
Addr:00442948 Ord: 17 (0011h) Name: HarmonyGetMusicPlaying
Addr:0044296C Ord: 18 (0012h) Name: HarmonyGetMusicLooping
Addr:00442990 Ord: 19 (0013h) Name: HarmonyPlaySound
Addr:004429F8 Ord: 20 (0014h) Name: HarmonyPlaySoundEx
Addr:00442A6C Ord: 21 (0015h) Name: HarmonyStopSound
Addr:00442A90 Ord: 22 (0016h) Name: HarmonyCacheSound
Addr:00442AF8 Ord: 23 (0017h) Name: HarmonyReserveSound
Addr:00442B60 Ord: 24 (0018h) Name: HarmonyCancelSound
Addr:00442BC8 Ord: 25 (0019h) Name: HarmonyGetMidiTick
Zitat:
Sym = HarmonyGetVersion [004426B8:8 (268984)]

Sym = HarmonyCreate [004426C0:36 (268992)]

Sym = HarmonyRelease [004426E4:36 (269028)]

Sym = HarmonyInitMidi [00442708:36 (269064)]

Sym = HarmonyInitWave [0044272C:36 (269100)]

Sym = HarmonyTermMidi [00442750:36 (269136)]

Sym = HarmonyTermWave [00442774:36 (269172)]

Sym = HarmonyCheckValidMidi [00442798:36 (269208)]

Sym = HarmonyCheckValidWave [004427BC:36 (269244)]

Sym = HarmonyPlayMusic [004427E0:104 (269280)]

Sym = HarmonyFadeInMusic [00442848:44 (269384)]

Sym = HarmonyFadeOutMusic [00442874:44 (269428)]

Sym = HarmonySetMusicVolume [004428A0:44 (269472)]

Sym = HarmonySetMusicSpeed [004428CC:44 (269516)]

Sym = HarmonySetMusicPanpot [004428F8:44 (269560)]

Sym = HarmonyStopMusic [00442924:36 (269604)]

Sym = HarmonyGetMusicPlaying [00442948:36 (269640)]

Sym = HarmonyGetMusicLooping [0044296C:36 (269676)]

Sym = HarmonyPlaySound [00442990:104 (269712)]

Sym = HarmonyPlaySoundEx [004429F8:116 (269816)]

Sym = HarmonyStopSound [00442A6C:36 (269932)]

Sym = HarmonyCacheSound [00442A90:104 (269968)]

Sym = HarmonyReserveSound [00442AF8:104 (270072)]

Sym = HarmonyCancelSound [00442B60:104 (270176)]

Sym = HarmonyGetMidiTick [00442BC8:0 (270280)]
und dann natürlich noch den ASM-Code jeder Funktion:

z.B.:
Zitat:
:004426B8 B8C8000000 mov eax, 000000C8
:004426BD C3 ret

:004426BE 8BC0 mov eax, eax
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#6

Re: DLL-Funktionen in ner andderen DLL

  Alt 27. Mär 2005, 18:56
So weit ich weiß ist disassemblieren fremder Programme (dll's etc.) verboten... korriegiert mich wenn das falsch ist.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Benutzerbild von c113plpbr
c113plpbr

Registriert seit: 18. Nov 2003
Ort: localhost
674 Beiträge
 
Delphi 2005 Professional
 
#7

Re: DLL-Funktionen in ner andderen DLL

  Alt 27. Mär 2005, 20:23
Zitat von SirThornberry:
So weit ich weiß ist disassemblieren fremder Programme (dll's etc.) verboten... korriegiert mich wenn das falsch ist.
Ich bin mir da auch nicht ganz sicher, aber meines wissens nach, ist es nur verboten, wenn du etwas veänderst. Ansonsten könnte man ja Disassembler gleich verbieten ...

Achja, mit dem richtigen Disassembler bekommt man auch meist die richtigen Parameter heraus (z.B. mit IDA, testversion sollte reichen ...)

Trotzdem würde es mich interessieren, was es dir dann nutzt, wenn du die ganzen funktionen weiterleitest?

ciao, Philipp
Philipp
There is never enough time to do all the nothing you want.
*HABENWILL*
  Mit Zitat antworten Zitat
CrashXY

Registriert seit: 25. Okt 2004
6 Beiträge
 
#8

Re: DLL-Funktionen in ner andderen DLL

  Alt 27. Mär 2005, 21:29
Nein, ich will die Funktionen nicht nur weiterleiten ich will sie vorher noch beeinflöussen können...

Das sieht standart so aus:

Programm <--> DLL

Ich will es so

Programm <--> Meine DLL <--> DLL

So kann ich bestimmte Sachen im Programmablauf verändern...
  Mit Zitat antworten Zitat
Masterof

Registriert seit: 12. Feb 2004
Ort: Bad Elster
142 Beiträge
 
Delphi 7 Enterprise
 
#9

Re: DLL-Funktionen in ner andderen DLL

  Alt 27. Mär 2005, 22:40
Hallo!!

Das disassemblieren fremder Programme verboten ist dann verboten wenn es sich um kommerzielle Software handelt. Da dann der geschützte Code ausgelesen werden kann. Auf diesem Weg werden meist auch Cracks geschrieben.
Du brauchst die Parameter. Du kannst ja mal schauen ob du sie mit auslesen kannst

master
.: Meine Homepage :.
http://www.micha-hertel.de
  Mit Zitat antworten Zitat
Zyancali
(Gast)

n/a Beiträge
 
#10

Re: DLL-Funktionen in ner andderen DLL

  Alt 27. Mär 2005, 22:54
Nur mal so eine frage, aber heisst die Original DLL harmony.dll und war diese im system oder system32 ordner ?
Das Programm das diese DLL benutzt, heisst dieses mit der Exename "rpg2000.exe" (vom RPG Maker 2000) ?

Wenn ja, ich kenne jemanden der die volle Funktionsliste hat.
Ob diese Person mir/dir die Liste aushändigt, hmm... ist eine andere Sache.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:06 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz