Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.08.07;
Скачать: 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 вся ветка

Текущий архив: 2005.08.07;
Скачать: CL | DM;

Наверх




Память: 0.52 MB
Время: 0.056 c
3-1120037936
-=snoop=-
2005-06-29 13:38
2005.08.07
разные пути в запросе


14-1121643366
Мутамба
2005-07-18 03:36
2005.08.07
Правда ли что на Украине какой-то батюшка предал анафиме модерато


14-1121751761
Leya
2005-07-19 09:42
2005.08.07
Изменить расширение


14-1121404111
pasha_golub
2005-07-15 09:08
2005.08.07
Доклад о профессиях


4-1118057183
pavel_guzhanov
2005-06-06 15:26
2005.08.07
можно ли преобразовать файл *.pdf в файл изображения?