Вниз
Скачать: CL | DM;

Узнать какие dll - ки запрашивает ехе-шник   Найти похожие ветки 

← →
ATarget ©   (2005-06-08 00:41) [0]

У меня вот какая проблема мне надо получить список всех библиотек которые использует программа (не моя конечно :)) в работе по типу того как ехеSkorp делает. Я думал написать какой нит поиск подобия строк в файле как бы по шаблону *.dll но вышло так геморно и долго что у меня духу не хватило. Так вот теперь о главном можно ли выполнить данную задачу как нить попроще и чтоб 3 Мб не колбасило 3 мин. 48 сек. как у меня выходило.


← →
Просто Джо ©   (2005-06-08 02:30) [1]

Кхм. Это еще надо было постараться, чтобы в 3Мб 3(!) часа строку искать...

А по теме. Ищи в сети описание PE-заголовка исполнимых модулей. В заголовке будет ссылка на таблицу импорта. Она-то тебе и нужна, собственно.


← →
Просто Джо ©   (2005-06-08 02:52) [2]

Хотя, не стану утверждать с уверенностью -- сам никогда не копал.


← →
Digitman ©   (2005-06-08 08:31) [3]


> ATarget


анализ таблицы импорта + эвристический анализ кода


← →
Vlad Oshin ©   (2005-06-08 08:51) [4]

можно запустить ее и
tasklist /m


← →
Vlad Oshin ©   (2005-06-08 08:58) [5]

вобще то, он их может и не загрузить их на данный момент...


← →
Digitman ©   (2005-06-08 09:09) [6]


> вобще то, он их может и не загрузить их на данный момент


.. или вообще ни разу не загрузить, если алгоритм программы за весь исследуемый сеанс ни разу не пойдет по той ветке, где модуль потенциально используется


← →
PVOzerski ©   (2005-06-08 17:34) [7]

Есть как минимум 2 способа подключения библиотек dll (не считая COM) - 1) при загрузке, когда используется секция .idata, и позже - через LoadLibrary. Соответственно, нужно еще и дизассемблировать вызовы этой функции :( :)...


← →
NikotiN ©   (2005-06-08 23:21) [8]

delphi\bin\tdump.exe там, кажется пишет, откуда функции импортируются.

тот же PE заголовок можно в пару строчек разобрать на своей программе, у delphi даже все классы\записи для этого есть.
только непомню какие. :)


← →
ANB ©   (2005-06-08 23:27) [9]


> NikotiN ©   (08.06.05 23:21) [8]
- это только статику так достанешь. А динамику - см. PVOzerski ©   (08.06.05 17:34) [7]


← →
Просто Джо ©   (2005-06-08 23:27) [10]


>  у delphi даже все классы\записи для этого есть.
> только непомню какие. :)

В модуле Windows.pas имееется только частичное описание PE-заголовка в виде записей. Плюс набор констант. Никаких специальных классов для разбора PE-заголовков AFAIK -- нет, да и зачем они бы там были. Задача ведь исключительно узкоспециальная.


← →
Игорь Шевченко ©   (2005-06-09 10:41) [11]

depends.exe и не париться.

Никакой динамический анализ кода не поможет.

На носу что ли вырубать ? :)


← →
g-l-u-k ©   (2005-06-09 11:01) [12]

Вот вам классы:

TYPE
IMAGE_DIR_ITEM=record
                        VirtualAddress:DWORD;
                        Size:DWORD;
                end;

IMAGE_FILE_HEADER=record
                        Machine:WORD;
                        NumberOfSections:WORD;
                        TimeDateStamp:DWORD;
                        PointerToSymbolTable:DWORD;
                        NumberOfSymbols:DWORD;
                        SizeOfOptionalHeader:WORD;
                        Characteristics:WORD;
                 end;

IMAGE_OPTIONAL_HEADER=record
                            Magic:WORD;
                            MajorLinkerVersion:BYTE;
                            MinorLinkerVersion:BYTE;
                            SizeOfCode:DWORD;
                            SizeOfInitializedData:DWORD;
                            SizeOfUninitializedData:DWORD;
                            AddressOfEntryPoint:DWORD;
                            BaseOfCode:DWORD;
                            BaseOfData:DWORD;
                            ImageBase:DWORD;
                            SectionAlignment:DWORD;
                            FileAlignment:DWORD;
                            MajorOperatingSystemVersion:WORD;
                            MinorOperatingSystemVersion:WORD;
                            MajorImageVersion:WORD;
                            MinorImageVersion:WORD;
                            MajorSubsystemVersion:WORD;
                            MinorSubsystemVersion:WORD;
                            Win32VersionValue:DWORD;
                            SizeOfImage:DWORD;
                            SizeOfHeaders:DWORD;
                            CheckSum:DWORD;
                            Subsystem:WORD;
                            DllCharacteristics:WORD;
                            SizeOfStackReserve:DWORD;
                            SizeOfStackCommit:DWORD;
                            SizeOfHeapReserve:DWORD;
                            SizeOfHeapCommit:DWORD;
                            LoaderFlags:DWORD;
                            NumberOfRvaAndSizes:DWORD;
                            IMAGE_DIRECTORY_ENTRIES:record
                                                   _EXPORT:IMAGE_DIR_ITEM;
                                                   IMPORT:IMAGE_DIR_ITEM;
                                                   RESOURCE:IMAGE_DIR_ITEM;
                                                   EXCEPTION:IMAGE_DIR_ITEM;
                                                   SECURITY:IMAGE_DIR_ITEM;
                                                   BASERELOC:IMAGE_DIR_ITEM;
                                                   DEBUG:IMAGE_DIR_ITEM;
                                                   COPYRIGHT:IMAGE_DIR_ITEM;
                                                   GLOBALPTR:IMAGE_DIR_ITEM;
                                                   TLS:IMAGE_DIR_ITEM;
                                                   CONFIG:IMAGE_DIR_ITEM;
                                                   BOUND_IMPORT:IMAGE_DIR_ITEM;
                                                   IAT:IMAGE_DIR_ITEM;
                                                    end;
                            DUMB:ARRAY [1..24] OF BYTE;
                     end;

SECTION=record
              Name:packed array [0..IMAGE_SIZEOF_SHORT_NAME-1] of Char;
              VirtualSize:DWORD;
              VirtualAddress:DWORD;
              SizeOfRawData:DWORD;
              PointerToRawData:DWORD;
              PointerToRelocations:DWORD;
              PointerToLinenumbers:DWORD;
              NumberOfRelocations:WORD;
              NumberOfLinenumbers:WORD;
              Characteristics:DWORD;
       end;

CONST
MAX_SECTION_NUMBER= $10;

VAR
   PE_HEADER:record
                IMAGE_NT_SIGNATURE:DWORD;
                FILE_HEADER:IMAGE_FILE_HEADER;
                OPTIONAL_HEADER:IMAGE_OPTIONAL_HEADER;
         end;
                SECTION_HEADER:ARRAY [1..MAX_SECTION_NUMBER] of SECTION;


← →
Игорь Шевченко ©   (2005-06-09 11:37) [13]


> Вот вам классы:


Я не вижу классов


← →
Просто Джо ©   (2005-06-09 16:24) [14]


>  [13] Игорь Шевченко ©   (09.06.05 11:37)
> Я не вижу классов

А это г-л-ю-к :)


← →
deep ©   (2005-06-09 18:25) [15]

http://deep.webest.net/forum/reply.php?num=1.2&id=174321&from=4



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.5 MB
Время: 0.044 c
1-1121769741
td
2005-07-19 14:42
2005.08.07
как определить текущее время?


3-1120116074
tormoz
2005-06-30 11:21
2005.08.07
Индексирование БД


4-1118399440
Суслик
2005-06-10 14:30
2005.08.07
Как перебрать все модули процесса


4-1118140335
Андрей Жук
2005-06-07 14:32
2005.08.07
Функция, обратная wsprintf


9-1113211643
Nic87
2005-04-11 13:27
2005.08.07
NFGE - DEMO




   Наверх