Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

winapi Podstawienie swojej biblioteki za już obecną - logging oraz zmiana parametrów funkcji.

Ostatnio zmodyfikowano 2013-01-03 08:14
Autor Wiadomość
totally_begin
Temat założony przez niniejszego użytkownika
winapi Podstawienie swojej biblioteki za już obecną - logging oraz zmiana parametrów funkcji.
» 2013-01-02 14:44:20
Witam!

Posiadam program który wykonuje pewne operację związane z urządzeniem1, które lączy się następnie z kolejnym urządzeniem2 i wykonuje różne funkcje, np. łączy się testuje, drukuje itd. wykorzystując do tego bibliotekę dll. Każda funkcja posiada kilka "dróg" realizacji w zależności od tego jakiego rodzaju jest drugie urządzenie.

Mój problem polega na tym, że chciałbym wiedzieć jaką "drogą" realizacji urządzenie1 wykonało daną funkcję w urządzeniu2 aby później móc dokonać ewentualnych zmian.

Myślałem o tym, żeby za istniejąca bibliotekę dodać swoja bibliotekę, która bedzie odwoływać się do oryginajnej zastąpionej przez nią biblioteki i wykonywac logging do pliku.

czy dobrze myślę, może ktoś już borykał się z podobnym problemem?
P-72701
DejaVu
» 2013-01-02 15:03:41
Jest co całkiem dobry pomysł, o ile nie jest to DLL-ka COM-owa. Jeżeli jest to zwykła DLL-ka to zapewne wystarczy utworzenie takiego samego API, zmiana nazwy oryginalnej DLL-ki, załadowanie dynamiczne oryginalnej DLL-ki w nowej DLL-ce i wywoływanie funkcji (+ dodanie odpowiednich logów).

/edit:
Choć z drugiej strony to nie jestem pewien czy taki myk przejdzie. Trzeba by było przeprowadzić eksperyment lub doczytać w dokumentacji w jaki sposób kompilator ustala położenie określonych funkcji w DLL-ce - czy po nazwie, czy też na podstawie jakichś stałych adresów zapisanych w pliku *.lib / *.a, linkowanych do projektu.
P-72710
Elaine
» 2013-01-02 18:57:49
Trzeba by było przeprowadzić eksperyment lub doczytać w dokumentacji w jaki sposób kompilator ustala położenie określonych funkcji w DLL-ce - czy po nazwie, czy też na podstawie jakichś stałych adresów zapisanych w pliku *.lib / *.a, linkowanych do projektu.
Po nazwie. Może też po liczbie porządkowej, ale tego nikt nie używa.

Poza tym nie robi tego kompilator, bo jego zupełnie nie interesuje gdzie jakiś symbol jest zdefiniowany, zadowoli się byle deklaracją. To jest działka linkera, w tym wypadku także częściowo systemu operacyjnego.
P-72750
totally_begin
Temat założony przez niniejszego użytkownika
» 2013-01-02 19:15:53
Dzięki za odpowiedzi. Czytacie w mojej głowie. A moglibyście podpowiedzieć jakiego narzędzia najlepiej użyć do otwarcia tej dll ki w celu skopiowania kodu i utworzenia nowej. Chodzi mi o to, żeby po tym jak program wywoła daną funkcje, po wglądzię do utworzonego przez moją dll-kę pliku z loggingiem, móc zmienić parametry ww. funkcji. <?>

ps. jest to zwykla dll ka
P-72757
Mrovqa
» 2013-01-02 19:46:04
Polecam Ci serię Reverse Craft Gynveala Coldwinda - pokazał tam jak przy pomocy DLL Injection i Inline hook zmodyfikować output, który jest przesyłany do bodajże puts. Gdy to już oglądniesz to zapewne wpadniesz na jakiś fajny pomysł jak zrobić to co chcesz :)
Btw do przeglądnięcia kodu - diassembler. Tyle, że otrzymany kod będzie w assembly :) Ja mogę Ci polecić IDA'ę (w serii Reverse Craft jest o niej).
P-72773
DejaVu
» 2013-01-02 19:50:09
Poszukaj jakiegoś oprogramowania - być może istnieją również jakieś funkcje w WinAPI, które umożliwiają odczytanie listy funkcji w pliku *.DLL.
Frazy, które należy wpisać w wyszukiwarkę google:

/edit:
http://stackoverflow.com/questions/4353116/listing-the-exported-functions-of-a-dll
P-72776
totally_begin
Temat założony przez niniejszego użytkownika
» 2013-01-02 20:41:49
Myślę, że teraz coś znajdę, zajmę się najpierw otwarciem i "zdublowaniem" dll ki oraz dodaniem nowych funkcji, później przejdę do kolejnych kroków, jeśli oczywiście wszystko się uda. Mam nadzieję, że w ciągu najbliższych dni bd mógł się pochwalić w odpowiedzi gotowym rozwiązaniem. Narazie analizuję odpowiedzi, które są bardzo trafne i pomocne. Dziękuję bardzo

PS
DLL EXPORT VIEWER - fajny program -> wyswietla funkcję dllki, które można zapisać w pliku, wygląda to mniej więcej tak

==================================================
Function Name     : PassIoctl
Address           : 0x1000e6a0
Relative Address  : 0x0000e6a0
Ordinal           : 14 (0xe)
Filename          : APA122.dll
Full Path         : C:\Windows\System32\APA122.dll
Type              : Exported Function
==================================================

Problem polega na dostaniu oryginalnego kodu, skopiowania go i utworzenia nowej dll, która przy wywolaniu np wyżej pokazanej funkcji odwoła się do oryginalnego pliku dll i wykona ją ale utworzy plik tekstowy w którym będą zapisane wszystkie czynności (logi) jakie były wykonane podczas działania tej funkcji, tak by w przyszłości na ich podstawie móc zmienić sposób wykonywania tej funkcji.

P-72787
Mrovqa
» 2013-01-03 08:14:32
Problem polega na dostaniu oryginalnego kodu, skopiowania go i utworzenia nowej dll, która przy wywolaniu np wyżej pokazanej funkcji odwoła się do oryginalnego pliku dll i wykona ją ale utworzy plik tekstowy w którym będą zapisane wszystkie czynności (logi) jakie były wykonane podczas działania tej funkcji, tak by w przyszłości na ich podstawie móc zmienić sposób wykonywania tej funkcji.
1. Nigdy nie dostaniesz po dekompilacji oryginalnego kodu C/C++ - pamiętaj o tym.
2. Patrz mój wcześniejszy post.
P-72803
« 1 »
  Strona 1 z 1