Funktionen einer DLL auflisten/prüfen

  • VB.NET

Es gibt 6 Antworten in diesem Thema. Der letzte Beitrag () ist von Gonger96.

    Funktionen einer DLL auflisten/prüfen

    Hallo Gemeinde,

    ich bin es schon wieder und habe eine -zumindest für mich- sehr knifflige Frage.
    Auch hier ist es mir wieder egal, ob man mir den Tipp/Code als VB6, VB2008 oder VB2010 vorgibt
    bzw. sich darauf bezieht. Links, Tutorials, Codes und Beispiele sind selbstverständlich willkommen.

    Problemstellung/-beschreibung:
    Als Anfänger habe ich mich hier und da mit VB6/VB2008/VB2010 Tipps, Tricks und Beispielen
    beschäftigt. Nun hänge ich wieder einmal beim Tipp xyz, da dieser unvollständig erstellt wurde
    und/oder eben leider nicht alle Varianten einbezieht. Da ich ein neugieriger Kerl bin, bitte ich um Auflösung.

    Mir geht es einfach darum, eine .dll zu laden/öffnen und alle enthaltenen Funktionen sauber aufzulisten.
    Bei VB6 bzw. VisualStudio2008/2010 lagen ja bereits Tools dabei, um dies bequem per CMD ausführen zu lassen. Alles schön und gut, aber ich will wissen "wie" und v.a. möchte ich eine schicke GUI haben
    und es selbstständig umsetzen.

    1.) Irgendeine DLL auswählen und dann in einer Listbox alle Funktionen auflisten.

    Zusatzfunktionen (kein muss!) =>
    (Wäre natürlich Knorke, wenn dies dann von 1-x geordnet wäre und zudem noch
    die Address, relative Adress, Name, type (export/import), EntryPoint, Ordinal, Hint
    usw. daneben aufgelistet wären)

    Soweit sollte dies ja kein Problem sein (für mich schon), aber:
    Wie schaut es aber mit "undecorated/decorated c++ function names" aus?
    Wie kann ich "alle" Funktionen einlesen und sowohl in "undecorated" als auch in "decorated" anzeigen lassen?

    Auch hier gibt es diverse Kommandozeilen-Tools, aber mir geht es um die GUI und v.a.
    um den SourceCode => "Wie?"

    Nächstes Problem:
    Nehmen wir einmal an, dass ich diverse Funktionen vorliegen habe
    (undecorated, decorated, Klarnamen) und einfach nur in einer x-beliebigen DLL prüfen möchte,
    ob diese Funktion vorhanden ist und unterstützt wird. Wie geht dies vonstatten?
    Online habe ich "SourceCode" gefunden, aber dieser Code unterstützt "nur" Klarnamen.
    Soll heißen: undecorated + decorated Funktionen, die so 1:1 eingegeben werden, werden gar nicht erkannt!

    Wie geht dies? Code, Beispiele und v.a. Erklärungen!

    Vielleicht mache ich ja einen Fehler, aber wie kann man dies umsetzen,
    dass alles "angenommen" wird? Wie prüft man, ob Funktion (normal, decorated, undecorated) vorhanden ist?

    Da ich noch ein Anfänger bin, bitte ich neben Codebeispielen auch um eine Erklärung!

    Ich meine mit normal, undecorated, decorated FOLGENDES:
    (Für den Fall, dass ich mich falsch ausgedrückt habe)

    normal:
    TestFunktion1

    decorated:
    ??0TestFunktion1@@QAE@ABV0@@Z

    undecorated:
    private: unsigned long __thiscall TestFunktion1::AddDataToRecycledBuffers(unsigned char const *,unsigned long)

    Nur erfunden, um es zu verdeutlichen!


    Danke
    Suchst du das, was der DLL Expoert Viwer kann? nirsoft.net/utils/dll_export_viewer.html

    Wie das Programm zeigt, ist das alles machbar, aber mMn den Aufwand das nachzubauen nicht wert, weil man damit bereits eine ausgezeichnete Umsetzung hat.


    EDIT: vllt. auch noch ein schönes Bild dazu code.google.com/p/corkami/down…e=PE101-v1DE.png&can=2&q=
    Hallo fufu,

    Ja, genau. So etwas suche ich.
    Das Bild ist ja der Hammer.

    Nun ja, dennoch interessiert mich das "wie".
    Diese Programme wurden ja auch irgendwie (c++) geschrieben^^


    Kurz:
    Ein einfaches Programm, das eben alle Funktionen einliest oder auf Wunsch sogar
    Funktion xyz auf Existenz hin prüft. Also: Wie mache ich dies mit vb6, vb2008 oder vb2010.

    Danke

    Übrigens:
    Nur weil es bereits ein Programm gibt, müssen nicht zwangsläufig alle Funktionen enhalten
    oder das Programm perfekt/ausreichend sein. V.a. dann nicht, wenn individuelle Menschen auch
    individuelle Anforderungen haben. Zudem geht es mir hier bei VB nicht um fertige Programme,
    sondern um das Lernen und v.a. um das Verständnis (Wie geht dies? Wie macht man dies?.
    Ansonsten wäre ja so ein Forum ziemlich sinnlos, wenn alle Menschen fertige Programme benutzen.

    Gerne nehme ich auch "APIS" bzw. Links zur "MSDN" an, um mich dann selbstständig duchlesen zu können.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „DerAbsoluteAnfänger“ ()

    Bezogen auf solche Vorhaben kann man sagen "Was in C++ geht, geht auch in VB.Net".

    Mir ist keine .NET-Bibliothek bekannt, die dein Vorhaben bereits realisiert. (Das heißt natürlich nicht, dass es sie nicht gibt)



    Um diese Analyse anzugehen, müsstest du die zu analysierende .DLL zunächst einlesen. Dann hast du entweder einen Stream oder ein eindimensionales Bytearray.
    Was du mit den gelesenen Daten dann anfängst, kannst du dem gezeigten Bild oder einer (vermutich viele hundert Seiten langen) Dokumentation entnehmen.