Общие сведения о пакете¶
Пакет включает в себя четыре модуля:
- get_time_info - содержит функции для получения времени компиляции PE-файла.
- get_section_info - содержит функции для получении информации о секциях PE-файла. Позволяет получать информацию о количестве секций в PE-файле, их названиях, значения поля Characteristics, значения MD5-хэша и энтропии для каждой секции.
- get_import_info - содержит функции для получения информации о таблице импорта PE-файла. Позволяет получать информацию о количестве импортируемых dll-библиотек, значение imphash, а также список импортируемых api-функций для каждой dll-библиотеки.
- get_export_info - содержит функции для получения информации о таблице экспорта PE-файла. Позволяет получать информацию о количестве экспортируемых функций, имена экспортируемых функций (при их наличии), а также значения номеров (ординалов) и значения RVA-адресов для всех экспортируемых функций.
Инсталляция пакета¶
pip install pefile_scripts
Примеры использования¶
Командная строка¶
python -m pefile_scripts [-ct <путь к файлу>] [-cdt <путь к файлу>] [-crt <путь к файлу>] [-sn <путь к файлу>] [-si <путь к файлу>]
[-dn <путь к файлу>] [-ih <путь к файлу>] [-ii <путь к файлу>] [-ean <путь к файлу>] [-edn <путь к файлу>]
[-ei <путь к файлу>] [-v] [-h]
- -ct, –compilation-time - Время компиляции PE-файла из стандартного поля
TimeDateStamp
- -cdt, –debug-compilation-time - Время компиляции PE-файла из секции
DIRECTORY_ENTRY_DEBUG
- -crt, –delphi-compilation-time - Время компиляции PE-файла из секции
RESOURCE_ENTRY_DEBUG
- -sn, –section-num - Число секций в PE-файле
- -si, –section-info - Информация о секциях PE-файла
- -dn, –dll-num - Число импортируемых dll-библиотек
- -ih, –imphash - Значение imphash таблицы импорта PE-файла
- -ii, –import-info - Информация о таблице импорта PE-файла
- -ean, –export-api-num - Число экспортируемых функций
- -edn, –export-dll-name - Название библиотеки
- -ei, –export-info - Информация о таблице экспорта PE-файла
- -v, –version - Выводит информацию о версии программы
- -h, –help - Выводит справку по программе
Python программы¶
Модуль get_time_info¶
get_compile_time()
import pefile_scripts
try:
print('Время компиляции файла:', pefile_scripts.get_compile_time('c:/test_file.exe'))
except pefile_scripts.PEfileScriptsError as err:
print(err)
get_debug_compile_time()
import pefile_scripts
try:
print('Время компиляции файла:', pefile_scripts.get_debug_compile_time('c:/test_file.exe'))
except pefile_scripts.PEfileScriptsError as err:
print(err)
get_delphi_compile_time()
import pefile_scripts
try:
print('Время компиляции файла:', pefile_scripts.get_delphi_compile_time('c:/test_file.exe'))
except pefile_scripts.PEfileScriptsError as err:
print(err)
Модуль get_section_info¶
get_section_num()
import pefile_scripts
try:
print('Число секций в файле:', pefile_scripts.get_section_num('c:/test_file.exe'))
except pefile_scripts.PEfileScriptsError as err:
print(err)
get_section_info()
import pefile_scripts
try:
for section_entry in pefile_scripts.get_section_info('e:/c:/test_file.exe'):
print(section_entry['name'])
print('\tCharacteristics: ', section_entry['characteristics'])
print('\tMD5-хэш секции: ', section_entry['MD5hash'])
print('\tЭнтропия секции: ', section_entry['entropy'])
except pefile_scripts.PEfileScriptsError as err:
print(err)
Модуль get_import_info¶
get_import_num()
import pefile_scripts
try:
print('Число dll-библиотек в файле:', pefile_scripts.get_dll_num('c:/test_file.exe'))
except pefile_scripts.PEfileScriptsError as err:
print(err)
get_imphash()
import pefile_scripts
try:
print('Значение imphash:', pefile_scripts.get_imphash('c:/test_file.exe'))
except pefile_scripts.PEfileScriptsError as err:
print(err)
get_import_num()
import pefile_scripts
try:
for import_entry in pefile_scripts.get_import_info('e:/hashcalc.exe'):
print('Из', import_entry['dll'], 'импортируются:')
for api_entry in import_entry['api']:
print('\t', api_entry)
except pefile_scripts.PEfileScriptsError as err:
print(err)
Модуль get_export_info¶
get_export_api_num()
import pefile_scripts
try:
print('Число экспортируемых функций:', pefile_scripts.get_export_api_num('c:/test_file.exe'))
except pefile_scripts.PEfileScriptsError as err:
print(err)
get_export_dll_name()
import pefile_scripts
try:
print('Имя dll-библиотеки:', pefile_scripts.get_export_dll_name('c:/test_file.exe'))
except pefile_scripts.PEfileScriptsError as err:
print(err)
get_export_info()
import pefile_scripts
try:
for export_entry in pefile_scripts.get_export_info('c:/test_file.dll'):
print('Имя экспортируемой функции:', export_entry['api'])
print('\t Номер (ординал):', export_entry['ordinal'])
print('\t RVA-адрес:', export_entry['rva'])
except pefile_scripts.PEfileScriptsError as err:
print(err)
Сведения о лицензии¶
MIT Copyright (c) 2020 Евгений Дроботун