Hackerboard Wiki HaboBlog
Hackerboard bei Facebook Hackerboard bei Google+ Hackerboard bei Twitter

[HaBo]

 
Hacks & Crackmes Tests, Fragen oder Hilfestellungen. Crackmes und Hackits werden hier diskutiert.

Fremde .dll ansprechen/benutzen bzw. vorab Syntax herausfinden

Diskussion: Fremde .dll ansprechen/benutzen bzw. vorab Syntax herausfinden im Forum Hacks & Crackmes, in der Kategorie Software Home; Anzeige Hallo, ich habe wieder einmal eine sehr komplizierte Frage. Wie kann man denn eine fremde .dll ansprechen/steuern/benutzen, wenn man ...

Antwort
Alt 24.01.12, 00:01   #1 (permalink)
 
Registriert seit: 03.10.11
Enforcer Leistung: Facit NTK
Likes: 0
Standard Fremde .dll ansprechen/benutzen bzw. vorab Syntax herausfinden

Anzeige

Hallo,

ich habe wieder einmal eine sehr komplizierte Frage.

Wie kann man denn eine fremde .dll ansprechen/steuern/benutzen,
wenn man nicht einmal die Deklaration/den zugehörigen Syntax kennt?

Benutzt man API-SPY, PE-EXPLORER oder Dependency-Walker,
dann kann man ja sehr schön die numerisch/alphabetisch aufgelisteten
Funktionen in den Exports erkennen. Auch im HexEditor kann man diese Funktionen einfach herauslesen. Soweit so gut, denn dies ist kein Problem.

Nimmt man jetzt "übliche" .dll her (z.B. advapi32.dll usw.) und lädt diese,
dann kann man neben den Funktionen auch den Syntax lesen. Aufgrund
des Syntax kann man dann in VB6, VB.NET, Delphi, C++ usw. einen Code schreiben bzw. diese .dll ansteuern. Klar, meistens gibt es auch noch eine Dokumentation zur .dll. Soweit so gut...

Ja, was mache ich denn nun, wenn ich eine fremde .dll benutzen möchte,
die Funktionen zwar erkenne/sehe/auslesen kann, aber beim Syntax "nichts" bzw. "(not available)" steht. Besagte Fremdanwendungen benutzen ja die .dll. Demnach "muss" es ja auch einen Aufruf und eine Deklaration gehen.

Nur wie finde ich dies nun heraus? Ich kann ja nicht alle Variablen durchgehen und irgendetwas zuweisen, wenn ich nicht einmal weiß was Sache ist. Wie geht man da vor bzw. wie kann man fremde .dlls dennoch benutzen?

Mir geht es einfach darum, dass es bereits fertige .dlls gibt und ich Funktionen nutzen möchte.

Danke


Hier die .dll
http://linkcrypt.ws/dir/434u2zka187hw68


Geändert von Enforcer (24.01.12 um 00:05 Uhr)
Enforcer ist offline   Mit Zitat antworten
Alt 24.01.12, 17:22   #2 (permalink)
 
Benutzerbild von fabuloes
 
Registriert seit: 26.01.11
fabuloes Leistung: Z3
Likes: 9
Standard

Disassemble doch die DLL mal mit objdump o.ä..
Dann ordne die Exports der DLL mal den jeweiligen Addressen im Code zu, dann hast du deine Funktionen aus denen du Rückschluss auf benutzte Variablen und Parameter ziehen kannst.

Wäre mein Vorschlag
__________________
http://sourceforge.net/projects/my-connect/
fabuloes ist offline   Mit Zitat antworten
   
HaBOT
 
- Anzeige -

Werbung ist gerade online    
Alt 24.01.12, 18:08   #3 (permalink)
Themenstarter
 
Registriert seit: 03.10.11
Enforcer Leistung: Facit NTK
Likes: 0
Standard

Hallo fabuloes,

vielen Dank für deinen Rat und deine Antwort.
Allerdings wäre mir sehr damit geholfen, wenn du mir evtl. ein Beispiel als Anreiz/Tipp geben könntest.

Die Funktionen habe ich ja bereits im PE-Explorer, API-SPY, Dependency-Walker usw. erkannt.

Aber wie kann ich denn Rückschlüsse auf verwendete Parameter und Variablen schließen? Da stehe ich jetzt im Moment etwas auf dem Schlauch.

Kann man wohl deutlich erkennen, ob es "Byval as Long, Byval as String, Bval as Integer, As Long, Byref" usw. ist? Echt? Also, dies wundert mich, denn dann bin ich scheinbar doch noch sehr weit am Anfang ;-(
Nun denn, ich lerne immer stets dazu und bin wissbegierig.

Nehmen wir zum Beispiel die im Beispiel genannte .dll (meine Problem .dll):
Dort steht zum Beispiel bei Ord #3 die Funktion "SM_VstLinkGetUniqueID".

Und du meinst jetzt, dass ich die kompletten Parameter mit OllyDBG auslesen kann? Wow. Soweit war ich dann doch noch nicht.

Also kann ich dann komplett ein Ergebnis, wie z.B:

Private Declare Function SM_VstLinkGetUniqueID LIB "vstdll.dll" (Byval path as String, Byval ID as Integer)

ableiten?

Nur ein Beispiel^^


Noch eine Zusatzfrage:
Was mache ich denn, wenn ich Funktionen erkenne und auch noch den dazugehörigen Syntax in c++, aber die Funktionen mit Sonderzeichen und Kauderwelsch beginnen und so im Code nicht deklariert werden können?

Zum Beispiel gibt es in einer anderen .dll Funktionen, die eben alle mit "??" beginnen.

Wenn ich nun so deklarieren möchte:
Private Declare Function ??ܧ%UniqueVSTID@mm78 LIB "123.dll"


Dann haut mir VisualBasic einen Fehler hinein!


Okay, Danke erst einmal. Ich teste/taste mich einmal heran und versuche erst einmal Problem 1 zu lösen.


P.S.
Tutorials und Links sind gerne gesehen!
objdump kannte ich noch gar nicht. Suche ich gerade...

Geändert von Enforcer (24.01.12 um 18:18 Uhr) Grund: Edit:
Enforcer ist offline   Mit Zitat antworten
Alt 24.01.12, 21:52   #4 (permalink)
Senior Member
 
Registriert seit: 13.07.08
enkore Leistung: K 6-3enkore Leistung: K 6-3enkore Leistung: K 6-3
Likes: 85
Standard

Dein Request ist mit hoher Wahrscheinlichkeit illegal.

SM_VstLinkGetUniqueID ->
Zitat:
Company: Steinberg Media Technologies AG
Decription: Virtual Studio Technology Engine
Trotzdem was inhaltliches:
Zitat:
Und du meinst jetzt, dass ich die kompletten Parameter mit OllyDBG auslesen kann? Wow. Soweit war ich dann doch noch nicht.
Kannst du nicht. Weil das da nicht drinsteht, sondern eben durch Hinweise im Assembler klar wird. Dazu solltest du Assembler gut lesen können.
__________________
"It is the human race! The deterioration of the spirit of man. Man undermining himself, causing a self-willed, self-imposed, self-evident self-destruction."
+++ BREAKING +++ Troll ertrinkt im Planschbecken +++
enkore ist offline   Mit Zitat antworten
Alt 25.01.12, 16:20   #5 (permalink)
CDW
Moderator
 
Benutzerbild von CDW
 
Registriert seit: 20.07.05
CDW Leistung: OpteronCDW Leistung: OpteronCDW Leistung: OpteronCDW Leistung: OpteronCDW Leistung: OpteronCDW Leistung: Opteron
Likes: 202
Standard

Die "übliche" Vorgehensweise ist Reverse Engineering.
Entweder disassembliert man die DLL und "rät" die Parameter, so wie die Rückgabewerte (klappt i.d.R nur bei einfachen Funktionen).
Oder man debuggt die Anwendung, die die DLL nutzt - speziell die Aufrufe. Da man die Übergabeparameter vor und nach dem Aufruf einsehen kann, wird das "Ratespiel" um einiges leichter.

Wenn die Funktionen so anfangen:
Code:
??ܧ%UniqueVSTID@mm78 LIB
tippe ich darauf, dass es sich um C++ Classenmethoden/exporte handelt.
Diese sollten eigentlich von Dependency-Walker oder CFFExplorer "decodiert" werden können:
z.B
Code:
?wclog@std@@3V?$basic_ostream@_WU?$char_traits@_W@std@@@1@A
->
class std::basic_ostream<wchar_t,struct std::char_traits<wchar_t> > std::wclog
PS:
Bei "unleserlichen" Bezeichnern mit Sonderzeichen könnte man entweder versuchen Escapezeichen/ASCII Codierung zu nutzen oder zur Laufzeit importieren (LoadLibary und GetProcAddress) und aufrufen:
Dynamic-link library - Wikipedia, the free encyclopedia
__________________
Noch mal, für alle Pseudo-Geeks: 1+1=0. -> 10 wäre Überlauf!
Selig, wer nichts zu sagen hat und trotzdem schweigt.
CDW ist offline   Mit Zitat antworten
Antwort

Stichworte
api, deklarationen, dll, funktionen
   
- Anzeige -

Werbung ist gerade online    

[HaBo] » Software Home » Hacks & Crackmes » Fremde .dll ansprechen/benutzen bzw. vorab Syntax herausfinden
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

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


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Zugriff auf fremde Festplatte Malo Network · LAN, WAN, Firewalls 9 25.06.07 15:38
Fremde Applikation tripleXXX Virenschutz · Tools & Aggressive Software 3 25.05.06 06:51
Speicherzugriff auf fremde Programme Xalon Code Kitchen 4 07.04.06 15:01
"fremde" Ressourcen editieren Vb.net THRALL Code Kitchen 4 25.10.05 19:47


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61