Главная страница
    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.5 MB
Время: 0.026 c
14-1121765884
YurikGL
2005-07-19 13:38
2005.08.07
Хранение картинок в базе или в файле IB


1-1121441253
Juice
2005-07-15 19:27
2005.08.07
Копирование комонента ( набора данных ?)


1-1121761457
Bird
2005-07-19 12:24
2005.08.07
Добавление элементов на форму в Run-Time


1-1121748839
Shopot
2005-07-19 08:53
2005.08.07
Как использовать технологию DragDrop?


1-1121810389
Quattro
2005-07-20 01:59
2005.08.07
Будильник





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский