AGB  ·  Datenschutz  ·  Impressum  







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

Dll von *.res Datei laden

Ein Thema von EWeiss · begonnen am 1. Apr 2008 · letzter Beitrag vom 22. Apr 2008
Antwort Antwort
Seite 2 von 4     12 34      
EWeiss
(Gast)

n/a Beiträge
 
#11

Re: Dll von *.res Datei laden

  Alt 1. Apr 2008, 08:08
Zitat von cruiser:
Dann hol ich das Modul eben spätestens aus dem Speicher... mal im Ernst... wenn es alles sooo top-secret ist wirst du um eine verschlüsselte Verbindung zu einem Webservice nicht herum kommen.

bitte nicht zu ernst nehmen
Nein

Bin auch nicht so pingelig..
Meine Datei ist die BassVis welche von Developern im Forum von Un4Seen in deren projekte eingebunden wird
um verschiedene arten von Visualisations Plugins auszuführen.

Ich will denen nicht zumuten sich mit dieser zusätzlichen DLL rumzuschlagen deshalb will ich allen eventualitäten vorbeugen.
Die müssen ja nicht wissen das in BassVis noch ne DLL versteckt ist.

auch wenn man es jetzt weiss.
Zitat:
HA! ich habs... du hast keine Lizenz für die komerzielle DLL !!!
na hab sie selbst unter schwersten bedingungen in C++ geschrieben mit unterstützung natürlich
ist lediglich ein Wasabi Wrapper für die neuen Winamp Plugins der code in c++ läßt sich leider in Delphi
wegen der Classen nicht übersetzen .. aber eagl

gruss EMil
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#12

Re: Dll von *.res Datei laden

  Alt 1. Apr 2008, 09:24
Zitat von EWeiss:
eigentlich nur das die Datei nicht öffentlich werden soll
Und was ist an deiner DLL so geheimnisvoll, dass sie auf keinen Fall abgespeichert werden darf?

Zitat:
und bei Vista .. keine Ahnung wie sich das verhält könnte es probleme geben
wenn man sich nicht an gewisse Regeln hält.
Nein auch bei Vista hat der Benutzer uneingeschränkten Zugriff auf sein temporäres Verzeichnis, sonst würden wahrscheinlich mehr als die Hälfte aller Programme nicht mehr laufen.

Zitat:
Ah ja... hab es oben nicht so explizit geschrieben... kapsel am besten alle Funktionen der DLL in eine Klasse. Bei einer c-DLL gehört hinter den Func-Type glaube(!!!) noch ein cdecl; als Aufrufkonvention
Warum sollte er alle Funktionen in einer Klasse kapseln? Das macht bei einer DLL eigentlich nur Probleme, da man nicht ohne weiteres Objektinstanzen zwischen Exe und DLL austauschen kann. Und welche Aufrufkonvention erwählt, ist so ziemlich egal. Er muss sich eben nur daran halten.

Wenn du sie unbedingt aus der Ressource laden willst, dann dürftest du wesentlich mehr Probleme unter Vista bekommen, als wenn du sie ins temporäre Verzeichnis entpackst. Du kannst dir ja mal Nicos Code angucken, wie er eine Exe aus den Speicher ausführt: http://www.michael-puff.de/Developer.../Importe/Nico/ -> inmemexe.zip.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#13

Re: Dll von *.res Datei laden

  Alt 1. Apr 2008, 10:11
Zitat:
Und was ist an deiner DLL so geheimnisvoll, dass sie auf keinen Fall abgespeichert werden darf?
Na ja will ich nicht sagen das sie nicht darf..

Es sind halt undokumentierte Wasabi Funktionen enthalten die ich mir mühsam erarbeitet habe.
Bei offenlegung der DLL kann sie jeder für seine zwecke nutzen nur dafür habe ich mir nicht die mühe gemacht.
In verbindung mit BassVis kein problem solange sie nur dort verwendet wird.

Nicht mal im Forum von Winamp wollte man mir helfen..
Denke alleine das ist ein grund diese nicht publik zu machen.

Werde mir das Sample mal anschauen .. Danke

gruss Emil
  Mit Zitat antworten Zitat
QuickAndDirty

Registriert seit: 13. Jan 2004
Ort: Hamm(Westf)
1.929 Beiträge
 
Delphi 12 Athens
 
#14

Re: Dll von *.res Datei laden

  Alt 1. Apr 2008, 10:49
Wenn du wirklich nur die Funktionen brauchst und nicht die Load und Unload Events
dann könnte ich mir vorstellen das du darauf zugreifen kannst.
Du müstest vorher die relativen Adressen der
Funktionen mit GetProcAddress ermitteln und notieren.
Dann die Res in den Stream laden und die Proceduralen
variablen mit den entsprechenden Zeigern belegen.

Ich weiß nicht ob das bei DLLs funktioniert aber mit *.com Dateien (kein Datenregister) konnte man sowas früher machen.

Und du wirst bei solchen Actionen (s. inmemexe.exe) auf jedenfall probleme mit Virenscannern bekommen. Mein Kasperski meckert
einen heur.Trojan.generic an bei Michaelpuffs inmemexe und heutzutage verzichtet kaum ein Scanner auf heuristic.

Tatsächlich willst du ja Daten als Code ausführen...das ist das verhalten eines Virus.


Vielleicht hilft es Dir die Datei nicht nur im $TempDir abzulegen sondern auch ein flag zu setzen dem Zufolge die Datei beim Schließen vom Betriebssystem gelöscht wird...das macht zwar auch probleme mit Virenscannern....
Andreas
Monads? Wtf are Monads?
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#15

Re: Dll von *.res Datei laden

  Alt 1. Apr 2008, 10:55
Zitat:
Und du wirst bei solchen Actionen (s. inmemexe.exe) auf jedenfall probleme mit Virenscannern bekommen. Mein Kasperski meckert
einen heur.Trojan.generic an bei Michaelpuffs inmemexe und heutzutage verzichtet kaum ein Scanner auf heuristic.
benutze ich nicht und eine exe ist es auch nicht von daher ?..

habe da, glaube ich das richtige gefunden
vielleicht ist es auch für andere ganz interessant

http://www.joachim-bauch.de/tutorial...ll_memory.html

This tutorial describes a technique how a dynamic link library (DLL)
can be loaded from memory without storing it on the hard-disk first.

genau das was ich erreichen will.

gruss Emil
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#16

Re: Dll von *.res Datei laden

  Alt 1. Apr 2008, 11:02
Auch wenn es gehen mag, halte ich das für den falschen Weg. Zum einem, weil es wohl undokumentiert ist, das heißt, du musst bei jedem Update prüfen, ob es noch funktioniert und das bei zich Systemen und Konfigurationen. Du wirst also nie sicherstellen können, dass es läuft. Und zum anderem wird jemand der an die Funktionen will und deine Exe debuggt, sehr schnell sehen, was Sache ist und hat sich deine DLL ohne weiteres aus der Ressource mit einem Resourcenhacker extrahiert.


Zitat von EWeiss:
Zitat:
Und du wirst bei solchen Actionen (s. inmemexe.exe) auf jedenfall probleme mit Virenscannern bekommen. Mein Kasperski meckert
einen heur.Trojan.generic an bei Michaelpuffs inmemexe und heutzutage verzichtet kaum ein Scanner auf heuristic.
benutze ich nicht und eine exe ist es auch nicht von daher ?..
Du nicht und die Benutzer deiner Anwendung? Und ich wäre mir nicht so sicher, dass Antivirenscanner bei DLLs, die aus dem Speicher geladen werden nicht auch ansprechen, weil letztendlich unterscheiden sich Exe-Dateien und DLLs nicht großartig, nur dass DLLs eben keinen Einsprungspunkt haben.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#17

Re: Dll von *.res Datei laden

  Alt 1. Apr 2008, 11:08
Zitat:
Auch wenn es gehen mag, halte ich das für den falschen Weg.
ja das nehme ich dir ab..

werde es erstmal ausgibig testen davon abgehen kann ich immer noch.
muss mich mal informieren ob das den Leuten genehm ist wenn sie 2 DLL's bekommen

gruss Emil
  Mit Zitat antworten Zitat
Benutzerbild von cruiser
cruiser

Registriert seit: 23. Dez 2003
Ort: Königsbrück/Sachsen
455 Beiträge
 
Delphi 7 Enterprise
 
#18

Re: Dll von *.res Datei laden

  Alt 1. Apr 2008, 20:02
Zitat von Luckie:
Zitat:
Ah ja... hab es oben nicht so explizit geschrieben... kapsel am besten alle Funktionen der DLL in eine Klasse. Bei einer c-DLL gehört hinter den Func-Type glaube(!!!) noch ein cdecl; als Aufrufkonvention
Warum sollte er alle Funktionen in einer Klasse kapseln? Das macht bei einer DLL eigentlich nur Probleme, da man nicht ohne weiteres Objektinstanzen zwischen Exe und DLL austauschen kann. Und welche Aufrufkonvention erwählt, ist so ziemlich egal. Er muss sich eben nur daran halten.
Klarer Fall von falsch verstanden. Ich meinte nicht das übergeben von Instanzen, sondern das Kapseln der Funktionen. Beim Erzeugen eines Objects kann man die extrahieren und laden, und beim zerstören wieder löschen. Die Methoden der Klasse greifen dann intern auf die Funktionen der DLL zurück. Ich seh da eigentlich keine Probleme, oder habe ich etwas übersehn?
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#19

Re: Dll von *.res Datei laden

  Alt 2. Apr 2008, 05:02
hab mich jetzt entschieden..
Mache es wie cruiser vorgeschlagen hat.

aus resource extrahieren
Attribute auf hidden , dann nach Anwender /Lokale Einstellungen/temp
Beim beenden dll löschen (was es nicht immer tut (Zugriff verweigert)
---------
Eigentlich müßte das gehen DLL (Winamp Plugin) wird entladen
in "Finalize" der letzte aufruf bevor BassVis geschlossen wird
mit DeleteFile zum Pfad der extrahierten dll diese löschen..

dürfte eigentlich kein zugriff mehr sein.

gruss Emil
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#20

Re: Dll von *.res Datei laden

  Alt 2. Apr 2008, 16:46
Uwe sagt mir das ich eine *.obj Datei in Delphi einbinden kann
Nun habe ich diese dem Projekt hinzugefügt als Meldung kommt

[Pascal Error] Winamp_IO.pas(138): E2045 Bad object file format: GetAPIService.obj'

Delphi-Quellcode:
{$MINENUMSIZE 4}
{$ALIGN ON}
{$L GetAPIService.obj}
jetzt frage ich mich ob es daran liegt das sie mit MSVC erstellt wurde..

jemand irgendwelche informationen darüber warum es nicht geht ?
bzw.. geht es theoretisch wenn ich diese mit Borland c++ erstelle und compiliere.(müßte dann erst noch installieren)

Das wäre denke ich die optimale lösung für mein DLL problem

gruss Emil
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 4     12 34      


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 17:54 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