Zum Inhalt springen

Function aus DLL entfernen bzw. ändern


Empfohlene Beiträge

Geschrieben

hi.

Eine Frage an euch Profis :)

Ich habe eine DLL-Datei, aus der ich eine bestimmte Funktion entfernen möchte bzw. diese Funktion soll einfach "nichts" mehr tun.

Wie bekomme ich das am einfachsten hin, ohne den eigentlichen Quellcode zu haben?

Kann ich mit irgend einem Editor die datei öffnen und an die gewünschte stelle springen?

Hab bisher mit DLLs noch keine wirklichen erfahrungen gehabt :/

Hab schon Reverse-Engineering-Tools ausprobiert, aber... geht das nicht irgendwie einfacher, wenn ich schon genau weiß, was die DLL nicht mehr machen soll und wie die spezielle Funktion heißt, die geändert werden soll?

Oder kann ich irgendwie einen Ramen um diese DLL programmieren, der diesen funktionsaufruf abfängt und bearbeitet?

Freue mich über jede Hilfe, die ich kriegen kann :D

LG

XspYroX

Geschrieben

@Guybrush Treepwood:

Hehe, ich spreche nur gebrochen Binärcode mit Hex-Akzent ;)

Ne, Spass beseite...

Also..hmm... dann müsste ich wohl ne Wrapper-DLL schreiben.

Frage:

Da ich ja nur eine einzige Funktion weiterleiten möchte, sollte die Wrapper-DLL ja eigentlich recht einfach aussehen, oder?

Also sowas wie:

(pseudocode)


if [function.name == "spezielle_funktion"] then

(

// nothing

)

else

(

call eigentliche_dll.function.name

)

Kann ich sowas auch ohne Kenntnisse im DLL-Programmieren hinbekommen? Kenne mich "nur" mit VB, C (commandbox-ebene), C++(commandbox-ebene) und PHP uns.w. aus.

Oder hast du vielleicht eine tutorial-seite, die mir da weiterhilft? Wie gesagt.... ich woltle das eigentlich hinbekommen, ohne das ganze drumherum über DLL-Programmierung zu erlernen. Bin gerade mit anderen Programmier-Sachen beschäftigt ^^"

Dankööö schonmal :)

LG

XspYroX

Geschrieben

Gerne :)

Also:

Ich nutze ein MediPlayer-Plugin der Firma UMedia (Unreal Media Player plugin , ist ein Active-X Plugin) zum abgreifen und darstellen von Live-Streams im Browser-Fenster (nur im InternetExplorer, drumherum ist PERL).

Das Plugin aktualisiert sich zu bestimmten Momenten (entweder trigger ich es per Hand oder der Stream bricht ab. Bei Abbruch versucht das Plugin in bestimmten Zeitabständen selbst die Wiederherstellung der Verbindung).

Allerdings wird bei jeder aktualisierung automatisch (durch die DLL, steht nirgendwo als Config-Option) der Windows-Focus auf das IE-Frame gesetzt. D.h. wenn ich gerade nebenbei nen Text tippe, dann fleigt der Focus ständig aus Word raus auf das IE-Frame.

Generell Focus-Änderungen beim IE oder allen Ective-X Plugins zu deaktivieren/verhindern habe ich erfolglos versucht. Viele andere haben dieses Problem, aber nirgendwo gibt es eine Lösung (für Windows 7).

Ich habe die DLL in Vosual Studio geladen und dort wurden mir die vorhandenen Funktionen derDLLL angezeigt (nur die Funktionen. weder code noch war etwas zu editieren). Dort habe ich die "BringToFocus()" (oder so ähnlich) gefunden, die laut Beschreibung eben das macht, nämlich den Z-Index festzulegen.

Wenn ich es also schaffe, diese Function "funktionslos" zu machen, dann sollte der Focus nicht mehr springen sondern auf dem aktuell ausgewählten Element bleiben :)

Falsl du natürlich einen anderen weg kennst, wie man dieses Active-X Plugin am Focusändern hindert, dann nur her damit. Würdest mir damit nen Haufen Arbeit und Ärger ersparen :D

LG

XspYroX

Geschrieben
Ist ganz einfach... Datei mit einem Disassembler laden und die Funktionsaufrufe oder die Funktion mit nop füllen.

Klingt einfacherals es für mich ist ;)

Hab jetzt gerade die DLL-Datei mit dem Tool "ollydbg" geöffnet und sehe ähnliches Brain**** wie bei "WDASM" (hatte WDASM davor schonmal probiert) ;)

So wie ich das sehe, finden sich dort aber nicht die klartext-function-names wie in meinem Fall "bringToFocus", oder? Oder bin ich nur gerade mit dem ganzen Code überfordert?

edit: Wenn ich die DLL mit "ollydbg" öffnen will kommt die Meldung "File blabla.dll is a Dynamic Link Library. Windows can't execute DLLs directly. Launch LOADDLL.EXE?

Hab da immer ja angeklickt, aber ... lädt er dann überhaupt die DLL? Oder lädt er nur den Code der LOADDLL.EXE?

LG

XspYroX

Geschrieben

Die Frage ist, ob dies zulässig ist.

Ansonsten die benötigte Funktion abbilden und die bisherige Funktion kaspeln.

(Pseudocode)


public string GetValue(string param)

{

     var instance = new Instance();

     return instance.GetValue(param);

}


Geschrieben

Hmmm...

Tutorials scheint es dazu wohl wenige im Internet zu geben :/

Wäre es ein großer aufwand, hier den C++-Code zu posten anstelle von Pseudocode?

Wie gesagt: Außer dies eine Function nicht weiterzuleiten, soll die Wrapper-DLL nichts machen ^^""

Danke schonmal ._.

Wenn ich mehr Zeit habe, sollte ich mich echt mal genauer mit DLLs beschäftigen >_<

LG XspYroX

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...