2009-10-10 7 views

Odpowiedz

56

można użyć Dependency Walker, aby wyświetlić nazwę funkcji. możesz zobaczyć parametry funkcji tylko wtedy, gdy są odznaczone. przeczytaj następujące pytania:

Jak wyświetlić parametry i typy zwracanych funkcji? W przypadku większości funkcji ta informacja nie występuje w module. Format pliku modułu Windows zawiera tylko jeden ciąg tekstowy do identyfikacji każdej funkcji. Nie ma uporządkowanej metody wyświetlania liczby parametrów, typów parametrów ani typu zwracanego. Jednak niektóre języki robią coś, co nazywa się funkcją "dekoracji" lub "maniakiem", czyli procesem kodowania informacji w łańcuchu tekstowym. Na przykład funkcja taka jak int Foo (int, int) zakodowana prostą dekoracją może zostać wyeksportowana jako _Foo @ 8. Liczba 8 odnosi się do liczby bajtów używanych przez parametry. Jeśli zostanie użyta dekoracja C++, funkcja zostanie wyeksportowana jako? Foo @@ YGHHH @ Z, która może być bezpośrednio zdekodowana z powrotem do oryginalnego prototypu funkcji: int Foo (int, int). Dependency Walker obsługuje dekompresję C++ za pomocą Undecorate C++ Functions Command.

+0

Dzięki, ale kiedy próbuję otworzyć dowolną bibliotekę DLL, pojawia się ona w oknie dziennika: Błąd: co najmniej jeden moduł ma nierozstrzygnięty import z powodu brakującej funkcji eksportowania w niejawnie zależnym module. Błąd: Znaleziono moduły z różnymi typami procesorów. Ostrzeżenie: nie znaleziono co najmniej jednego modułu zależności opóźnienia obciążenia. Ostrzeżenie: co najmniej jeden moduł ma nierozstrzygnięty import z powodu brakującej funkcji eksportu w module zależnym od opóźnienia. –

+0

Używam systemu Windows 7 x64 Final. –

+3

@Alon: Cóż, twoja aplikacja jest cicho popsuta :) pierwszy błąd wskazuje, że niektóre z twoich bibliotek dll są kompilowane dla systemów 32-bitowych, a niektóre dla 64-bitowych. możesz ładować biblioteki dll tylko z tą samą architekturą CPU w tym samym procesie. możesz żyć z dwoma innymi błędami, o ile aplikacja je obsługuje. –

2

Not sure about its lista parametrów, ale following TotalCommander plugin jest bardzo przydatna.

+8

Nie jestem pewien, że ludzie chcą ściągnąć plik binarny, nie wiedząc dokładnie, co to jest. Strona wtyczki znajduje się tutaj: http://physio-a.univ-tours.fr/tcplugins/ – RedGlyph

+0

@RedGlyph Zapraszam do edycji mojej odpowiedzi – Restuta

8

Jeśli nie masz kodu źródłowego i dokumentacji API, kod maszynowy jest wszystkim, co istnieje, trzeba demontować biblioteki dll przy użyciu coś podobnego IDA Pro, innym rozwiązaniem jest korzystanie z wersji próbnej PE Explorer.

PE Explorer zapewnia dezasembler. Jest tylko jeden sposób, aby dowiedzieć się parametrów: uruchom dezasembler i przeczytaj dane wyjściowe demontażu. Niestety, to zadanie inżynierii wstecznej interfejsu nie może być zautomatyzowane.

Eksplorator PE jest dostarczany z opisami 39 różnych bibliotek, w tym podstawowych bibliotek systemu operacyjnego Windows® (np. KERNEL32, GDI32, USER32, SHELL32, WSOCK32), kluczowych bibliotek graficznych (DDRAW, OPENGL32) i innych.

alt text http://www.heaventools.com/img/tour2-2.gif

+0

Jak to się różni od Nirsoft DLL Export Viewer? – Pacerier

60

DUMPBIN z wiersza polecenia programu Visual Studio:

C: \ Users \ Andrzej \ src2011 \ Cryptography \ cspsdk> DUMPBIN/eksport csp.dll

Microsoft (R) COFF/PE Dumper Wersja 10.00.30319.01 Prawa autorskie (C) Microsoft Corporation. Wszelkie prawa zastrzeżone.

Dump plików csp.dll

Rodzaj

plików DLL

sekcja zawiera następujące eksportu dla CSP.dll

00000000 characteristics 
3B1D0B77 time date stamp Tue Jun 05 12:40:23 2001 
    0.00 version 
     1 ordinal base 
     25 number of functions 
     25 number of names 

ordinal hint RVA  name 

     1 0 00001470 CPAcquireContext 
     2 1 000014B0 CPCreateHash 
     3 2 00001520 CPDecrypt 
     4 3 000014B0 CPDeriveKey 
     5 4 00001590 CPDestroyHash 
     6 5 00001590 CPDestroyKey 
     7 6 00001560 CPEncrypt 
     8 7 00001520 CPExportKey 
     9 8 00001490 CPGenKey 
    10 9 000015B0 CPGenRandom 
    11 A 000014D0 CPGetHashParam 
    12 B 000014D0 CPGetKeyParam 
    13 C 00001500 CPGetProvParam 
    14 D 000015C0 CPGetUserKey 
    15 E 00001580 CPHashData 
    16 F 000014F0 CPHashSessionKey 
    17 10 00001540 CPImportKey 
    18 11 00001590 CPReleaseContext 
    19 12 00001580 CPSetHashParam 
    20 13 00001580 CPSetKeyParam 
    21 14 000014F0 CPSetProvParam 
    22 15 00001520 CPSignHash 
    23 16 000015A0 CPVerifySignature 
    24 17 00001060 DllRegisterServer 
    25 18 00001000 DllUnregisterServer 

Podsumowanie

1000 .data 
    1000 .rdata 
    1000 .reloc 
    1000 .rsrc 
    1000 .text 
+6

Uważaj, aby przypadkowo nie wykonać "dumpbin/export" (na końcu brakuje "s"), jest to zupełnie inne polecenie. –

+1

Zapominam o dumpbinie i muszę sprawdzać tę odpowiedź co sześć miesięcy. Dzięki! – tofutim

17

DLL Export Viewer przez NirSoft puszka służy do wyświetlania wyeksportowanych funkcji w bibliotece DLL.

This utility displays the list of all exported functions and their virtual memory addresses for the specified DLL files. You can easily copy the memory address of the desired function, paste it into your debugger, and set a breakpoint for this memory address. When this function is called, the debugger will stop in the beginning of this function.

enter image description here

+1

Aplikacja Nirsoft nie pokazuje bezimiennych funkcji :-( – TCS

+0

@MagnusLindhe Używam tej aplikacji skopiować adres i ustawić go jako punkt przerwania, ale gdy debuguję go z Visual Studio (tryb debugowania, Win32) nie zatrzymuje się, gdy funkcja jest wywoływana Użyłem zarówno adresu, jak i adresu względnego aby to wypróbować Nie działają Nie wiem, co robię źle Może wiesz Nie mogę znaleźć więcej informacji na ten temat –

+0

Przeglądanie przycisku DLL jest zakończona dla mnie, nie wyświetla żadnych funkcji w bibliotekach DLL Używam Windows 10 (64bit) – Owl