Einzelnen Beitrag anzeigen

nahpets
(Gast)

n/a Beiträge
 
#2

AW: APIs prüfen, ob existet

  Alt 9. Jul 2012, 00:02
Hallo,

da ich gerade an einer ähnlichen Baustelle unterwegs bin, habe ich mich mal ein bisserl um dieses Thema kümmern können, sollen, dürfen, müssen

In der JEDI Code Library gibt es u. a. die Unit JCLPeImage. Diese enthält u. a. die Prozedur PEImportedFunctions.

Dieser übergibt man den Name der EXE-Datei oder einer DLL, eine Stringliste, einen leeren Stringparameter und einen boolschen Wert mit True. Dafür erhält man in der Stringliste alle genutzten Aufrufe von Kernel32.dll und was es sonst noch so alles gibt bzw. genutzt wird. Die Stringliste enthält für jeden Aufruf eine Zeile in der Form DLL=aufgerufene Funktion.
Wenn man nun hergeht und sich aus diesen Zeilen Aufrufe für die Suche in der MSDN macht, so kann man dort aus dem Suchergebnis jeweils den ersten gefundenen Eintrag (= 1. Link) wählen und erhält damit die Beschreibung zu der genutzten Funktion der entsprechenden DLL. Auf dieser Ergebnisseite findet man nun den Abschnitt Requirements. Dort ist detailiert aufgeführt, welche Systemvoraussetzungen für die Nutzung der Funktion erfüllt sein müssen.

Der aus der Stringliste oben genannter Prozedur zu erstellende Link müsste (vermutlich) so aussehen:
Code:
http://social.msdn.microsoft.com/Search/en-US?query=kernel32.dll%20gettickcount
Er ließe sich daher sehr leicht aus der Stringliste erstellen.
Nun muss man die entsprechende Seite laden, die leider inhaltlich nicht so aufgebaut ist, dass ein Heraussuchen des gewünschten Links einfach erscheint. Vermutlich benötigt man den ersten Link, der in etwa folgendem Aufbau entspricht:
Code:
http://msdn.microsoft.com/en-us/library/windows/desktop/*.aspx
Beispiel:
Code:
http://msdn.microsoft.com/en-us/library/windows/desktop/aa385449(v=vs.85).aspx
Die nachfolgende Seite, die die gewünschten Informationen enthält, kann man jedoch relativ einfach parsen und bekommt so die gewünschten Informationen.

Um sich hieraus ein eigenes Nachschlagwerk zu bauen ist ein bisserl Phantasie und die eine oder andere Stunde Arbeit erforderlich. Sicherlich ist es aber einfacher, als jedes Betriebssystem (wie auch immer, VM...) vorzuhalten und die Programme dann zu testen, zumindest die Planung sollte vereinfacht werden können, um ggfls. auftretenden Problemen aus dem Weg gehen oder halt die Systemanforderungen besser beschreiben zu können.

Geändert von nahpets ( 9. Jul 2012 um 00:27 Uhr) Grund: Edit meint: Es ist noch zu früh zum richtig schreiben, Schreibfehler behoben.
  Mit Zitat antworten Zitat