Текущий архив: 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