|
PE file tools | Описание | Информация | Утилиты для работы с PE-EXE файлами.
;========================================= CRC32.COM: Подсчёт контрольной суммы файла.
Так же точно считает Микрософт Link для Win32-PE: Если проверяется PE-EXE файл, то у него должно быть обнулено поле @PE:[58h] (CHECKSUM), тогда показанное этой программой значение можно занести в поле CHECKSUM (@PE:[58h]).
Упрощённый алгоритм расчёта суммы выводится по команде C> CRC32.COM ?
Вообще-то, как верно заметил SergeCpp, алгоритм контрольной суммы в PE - не CRC. См: http://www.codeproject.com/Articles/19326/An-Analysis-of-the-Windows-PE-Checksum-Algorithm
Сумма-то 32-битная, но не CRC.
Такое не совсем удачное название теперь уже, видно, и останется у этой утилитки.
------------------------------ На этой же странице и другие утилиты для манипуляций с PE-файлами.
. | Раздел: Hack tools Скриншоты Операционная система: - Требования: - Автор: .SVD. Издатель: -
Добавил: Nika (2013.05.05) | Доступные файлы - сортировка по имени и версии, времени добавления Файлов: 23. Файл | Размер | Выпуск | Версия | Язык | Качество | Загрузил | | 3.8 Кб | 2010 | 0.0001a | Английский | | Nika 2013.05.05 | DOS COM программа. Подсчёт контрольной суммы файла. Алгоритм такой же, какой используется линковщиками PE-файлов. Программа выводит текст алгоритма, если запустить её как "CRC32 ?". | | 6 Кб | 2010 | 0.0002a | Английский | | Nika 2013.08.06 | DOS COM программа. Подсчёт и запись в PE-файл его контрольной суммы. Установка атрибутов всех секций в PE-файле в r/w/e.
Это похоже на действие команды \masm32\bin\link.exe -edit /SECTION:CODE,rwe <File.exe> Но выполняется эта процедура автоматически для всех секций, а не только для указанной её именем, как у LINK.EXE.
| | 8 Кб | 2017 | 0.000a | Английский | | Nika 2017.03.26 | HIEW32 HEM-PlugIn BLOCK.HEM представляет собой малость усовершенствованный плагин XorBlock, только он может не только ксорить блок с введённой строкой, но и выполнять <Add> и <Sub>. Кроме того, если отказаться от ввода строки, то запрашивается файл, из которого взять эту "строку". Файл может быть и двоичным с нулями, в том числе и очень большого размера (16Mb max.). | | 12.5 Кб | 2017 | 0.000a | Английский | | Nika 2017.04.04 | HIEW32 HEM-PlugIn calculates MD5 sum of marked block (16Mb max.)
| | 4 Кб | 2017 | 1.21 (fixed) | Английский | | Nika 2017.04.06 | WIN32 CMD. (с)FalseMaster. Fixed console output by me. Программа корректирует так называемые "хинты" имён импортируемых функций PE-файла.
| | 19.3 Кб | 2018.05.12 | 0.001a | Английский | | Nika 2018.05.12 | WIN32 CMD. Программа для split/join 32-bit PE-EXE файлов, сделана на основе процедур, позаимствованных в паблик-утилите "PEUtils 1.0 by Andrew de Quincey 1998". http://old-dos.ru/index.php?page=files&mode=files&do=show&id=7557 То есть это, фактически, две утилиты от Anrdew, собранные в один файл, для удобства. И ещё добавлена работа с "оверлеем" в PE-EXE, если он присутствует. Недостаток - не работает с PE-x64 файлами, только с PE-x32. | | 4.5 Кб | 2018.06.09 | 1.0 | Английский | | Nika 2018.06.09 | HIEW32 HEM-PlugIn for unprotect for r/w/e all sections at PE file. Плагин для HIEW32 - установка атрибутов всех секций PE-файла в r/w/e.
Это похоже на действие команды \masm32\bin\link.exe -edit /SECTION:CODE,rwe <File.exe> Но выполняется эта процедура автоматически для всех секций, а не только для указанной её именем, как у LINK.EXE.
Сделано по мотивам программы для DOS - crc32_pe_fix, она тоже есть на этой странице. | | 4.5 Кб | 2018.06.09 | 1.0 | Английский | | Nika 2018.06.09 | HIEW32 HEM-PlugIn для включения/выключения флажка "Relocations Stripped" в характеристиках PE-EXE файла. Это бывает нужно, чтобы избежать ASLR при работе с файлом под Vista+. | | 5.6 Кб | 2018.06.09 | 1.0 | Английский | | Nika 2018.06.09 | HIEW32 HEM-PlugIn - Corrects import Hints of 32-bit PE-EXE file. Original idea and Delphi program - by FalseMaster (Special thanks). Плагин корректирует так называемые "хинты" имён импортируемых функций PE-файла. Насколько это полезная процедура, трудно сказать. Теоретически, уменьшается время настройки импортов при запуске PE-EXE файла. | | 5.8 Кб | 2018.06.09 | 1.0 | Английский | | Nika 2018.06.09 | HIEW32 HEM-PlugIn for Strip/Add/Save overlay of PE-EXE file. Плагин для HIEW32 - Обрезка/добавление/сохранение_в_файл оверлея PE-EXE. (UPDATED. Added option "Goto overlay").
Для простой обрезки оверлея на этой же странице есть утилита командной строки PE_OVLs.EXE | | 4.5 Кб | 2018.06.09 | 1.0 | Английский | | Nika 2018.06.09 | HIEW32 HEM-PlugIn for correcting "tails" of all sections at PE file. Плагин для HIEW32 - убрать "хвосты" всех секций PE-файла. (Правится таблица секций PE-файла). | | 5.8 Кб | 2018.06.23 | 0.001a | Английский | | Nika 2018.06.23 | HIEW32 HEM-PlugIn for locate some positions in MZ & PE-EXE. Плагин восполняет недостающий функционал hiew по переходам в различные позиции файлов MZ и PE.
GOTO.HEM Menu:
Goto MZ: ======== MZ relocs MZ relocs END
Goto PE: ======== MZ Header ... PE Header PE Characteristics PE CheckSum PE Directories PE Directories END PE Obj Table PE Obj Table END PE Overlay | | 8.2 Кб | 2020 | 0.00a | Английский | | Nika 2020.04.17 | HIEW32 HEM-PlugIn - Помещает в клипбоард результат кодирования в BASE64 выбранного блока байтов. | | 14.8 Кб | 2020 | 0.000a | Английский | | Nika 2020.04.18 | HIEW32 HEM-Plugin для чтения секторов диска в файл. | | 5 Кб | 2020.04.23 | 1.0 | Английский | | Nika 2020.04.23 | HIEW32 HEM-Plugin - Установить для PE-файла время файла в соответстви с временем его линковки, и наоборот. Также можно сделать touch файлу, то есть установить для него текущее время. | | 9.7 Кб | 2016 | (fixed) | Английский | | Nika 2020.04.23 | WIN32 CMD. (c)Falsemaster. Fixed console output by me. - Corrects PE file-time according to LinkTime PE-Stamp. | | 21.3 Кб | 2020.04.24 | 0.000a | Английский | | Nika 2020.04.24 | HIEW32 HEM-PlugIn - Split & Join 32-bit PE-EXE file. Плагин для HIEW32 - Расщепить PE-EXE на секции или собрать его обратно. Сделано по мотивам "PEUtils 1.0 by Andrew de Quincey 1998". Работает только с 32-битными PE-файлами, как и прототип.
| | 11.3 Кб | 2020.04.26 | 1.0 | Английский | | Nika 2020.04.26 | WIEW32 HEM-Plugin для записи выделенного блока байтов в файл с именем в виде HEX-адреса этого блока.
Простое сохранение блока в файл в Hiew по <F2>. Но тогда придётся задавать имя этого файла. А плагин подставляет имя файла сам, в виде адреса. И его уже можно или изменить, или согласиться.
| | 3.6 Кб | 2020.12.10 | 0.001a | Английский | | Nika 2020.12.10 | HIEW32 HEM-PlugIn for set x32 PE-EXE OSVer/SubSystem = 1/4 for run on Win9x+. | | 4.8 Кб | 2021.10.17 | 0.000a | Английский | | Nika 2021.10.17 | HIEW32 HEM-PlugIn for detect if address in a "tail" of PE/PE+ file section. Плагин для HIEW32 - для определения, попадает ли текущий адрес PE/PE+ файла в "хвост" одной из секций, в заголовок или в оверлей (что является некорретным для патчения).
| | 4.9 Кб | 2024.03.14 | 0.001a | Английский | | Nika 2021.11.02 | HIEW32 HEM-PlugIn. Writes current file address with comment into file "Locate.txt". Copies current file position to clipboard. 273 | | 3.9 Кб | 2022.02.20 | 0.000a | Английский | | Nika 2022.02.20 | WIN32 CMD tool for test/strip overlay from PE/PE+ EXE file. Similar to PE_OVL.HEM plugin. | | 10.8 Кб | 2023 | 1.02 | Английский | | Nika 2024.02.08 | HIEW32 HEM-PlugIn Вычисляет хеши CRC32, MD5, SHA-1, SHA-256 файла или выделенного блока. (c) Fernando Merces (github.com/merces) - Rebuild by .SVD. Note: PlugIn requires bcrypt.dll present in system. |
|
Комментарии | #1 Автор: Nika (2013.08.05 03:12, изменений: 3, 2017.04.14 22:16) | Архив "crc32": Похожая по назначению программа PEKS.EXE: http://old-dos.ru/index.php?page=files&mode=files&do=show&id=3907
Сравните размер. |
#2 Автор: SergeCpp (2013.08.14 02:57) | Алгоритм контрольной суммы в PE - не CRC: http://www.codeproject.com/Articles/19326/An-Analysis-of-the-Windows-PE-Checksum-Algorithm
|
#3 Автор: Nika (2013.08.14 03:26) | SergeCpp, строго говоря, да. Подошло бы лучше название "PEchksum.com", но с помощью этой программки CRC32.COM можно проверять контрольную сумму вообще любого файла, не только PE-EXE. |
#4 Автор: Serge (2017.03.30 22:15) | HEM_pe_bind будет много лучше этого паллиатива с хинтами.
Даю большую цитату на Инглезе.
Bound imports The PE file format also supports a peculiar feature known as "binding". The process of loading and resolving import addresses can be time consuming, and in some situations this is to be avoided. If a developer is fairly certain that a library is not going to be updated or changed, then the addresses in memory of imported values will not change each time the application is loaded. So, the import address can be precomputed and stored in the FirstThunk array before runtime, allowing the loader to skip resolving the imports - the imports are "bound" to a particular memory location. However, if the versions numbers between modules do not match, or the imported library needs to be relocated, the loader will assume the bound addresses are invalid, and resolve the imports anyway.
The "TimeDateStamp" member of the import directory entry for a module controls binding; if it is set to zero, then the import directory is not bound. If it is non-zero, then it is bound to another module. However, the TimeDateStamp in the import table must match the TimeDateStamp in the bound module's FileHeader, otherwise the bound values will be discarded by the loader.
|
#5 Автор: Nika (2017.03.30 22:37, изменений: 6, 2017.03.30 23:01) | Вообще-то эти штучки с "ускорениями настройки адресов" мне не по душе. Просто попалась готовая реализация мудрежа с хинтами, на паскале, - прикрутил её к Hiew. По ходу дела выяснилась неприятная особенность HEM-движка в Hiew - иногда, по необъяснимой причине, после записи в файл с помощью HEM-API файл остаётся неизменённым, хотя функция записи возвращает нормальный код завершения. Попался мне один такой абсолютно нормальный файл, с абсолютно нормальной таблицей импорта, который после обработки в HIEW32 с помощью этого плагина остаётся неизменным. Хотя плагин не сообщает об ошибке, пишет "ОК". Потому, что и HIEW ему ошибку не вернул. Отложил пока тот файл, заметка на будущее. Также, по необъяснимой причине, бывает в HEM'е не отрабатывает превод RVA->ABS. Тогда плагин завершается с сообщением "PE file is damaged". Хотя файл вполне рабочий. В общем, этот HEM_pe_hints сделан скорее просто для тренировки и тестирования, нужды в нём особой не вижу. Так, для коллекции
А вот остальные три плагина - HEM_pe_rwe, HEM_pe_tails , HEM_block - довольно полезны, уже в использовании. Раньше приходилось делать это вручную или с помощью других инструментов.
|
#6 Автор: Bind (2017.03.30 23:00) | Есть утилита bind.exe у Микрософта, и все системные файлы -- уже bound. Избавление от поиска адресов при загрузке может иметь значение. Это, конечно, уже будет локально- зависимо (работает только там, где сделано или на такой же системе). И, всё же, bind.exe -- существует же.
|
#7 Автор: Nika (2017.03.30 23:03, изменений: 1, 2017.03.30 23:08) | Привязка таким образом к системе это противоречит самой идее динамического связывания по именам функций. А этот биндинг при ASLR вообще теряет смысл. |
#8 Автор: Bind (2017.03.30 23:13) | Так это остаётся же в полной мере, см. цитату.
Глядя на дизасм загрузчика, становится плохо от такого количества лишнего при поиске адресов.
|
#9 Автор: Nika (2017.03.30 23:21, изменений: 1, 2017.03.30 23:22) | На фоне всех этих чудес идея с хинтами смотрится довольно безобидно. Хинт это индекс Thunk'а нужной функции в импортируемой DLL. Тогда при настройке импортов можно использовать вполне нормальный алгоритм: 1) Взять хинт и, если он не 0, тогда в импортируемой DLL по нему найти имя запрашиваемой функции. 2) Сравнить это найденное в DLL имя с запрашиваемым именем функции. 3) Если они одинаковы, то нужная функция найдена. Иначе искать импорт обычным перебором всех имён функций в DLL. |
#10 Автор: ASLR (2017.03.30 23:30) | For a component to support ASLR, all components that it loads must also support ASLR. For example, if A.exe consumes B.dll and C.dll, all three must support ASLR.
То есть можно сделать bind у non-aslr exe. А если это aslr управляется флагом в заголовке, то и убрать. Может, новая bind так и делает. Anyway, we here on OLD software site.
|
#11 Автор: Nika (2017.03.30 23:33) | Это ещё то гадство с этим ASLR'ом.. |
#12 Автор: Nika (2017.04.17 22:44, изменений: 4, 2018.04.23 10:25) | Перезалит архив HEM_kbd_cyr - обнаружился небольшой баг с восстановлением состояния при переключении CYR<->LAT, назначенном на <Alt+Shift>. Состояние автоматически не восстанавливалось при загрузке HEM'а, надо было явно выбирать пункт из меню плагина.
--Добавлено-- И ещё, по поводу версий HIEW32. Как оказалось, начиная с версий 8.х, автор компилирует HIEW32.EXE для каждого клиента отдельно. То есть даже номинально одна и та же версия HIEW32.EXE, полученная из разных источников, будет отличаться двоично. Это сделано для упрощения обнаружения источников утечек. Есть такая мулька..
Теоретически, новая версия плагина kbd_cyr.HEM (v.0.001a) должна работать нормально с любой версией HIEW32.EXE. Но надо пробовать. |
#13 Автор: SergeCpp (2018.05.29 20:08) | ...locate some positions in MZ & PE-EXE. ...недостающий функционал hiew по переходам в различные позиции файлов MZ и PE. ===
Как-то загадочно: "some positions", "недостающий функционал", "различные позиции". Что там такое (хотя бы вкратце)? |
#14 Автор: Nika (2018.05.30 00:28, изменений: 1, 2018.05.30 00:32) | Ok, добавил в описание. |
#15 Автор: SergeCpp (2018.05.30 17:52, изменений: 1, 2018.05.30 17:53) | Nika, ясно, спасибо.
Это позиции блоков (слово секции тут не подойдёт, у него особый смысл в EXE) разнообразной служебной информации.
=== HIEW32 HEM-PlugIn to go to service information blocks in MZ & PE-EXE.
Плагин восполняет недостающий функционал hiew по переходам к блокам с разнообразной служебной информацией файлов MZ и PE-EXE. ===
Прекрасная крошечная Win-утилита PEview на ассемблере, показывающая всё это (я и с автором переписывался): http://wjradburn.com/software/
|
#16 Автор: Nika (2018.06.11 03:06) | Утилита неплохая - но не хватает либо возможности копирования текста, либо генерации ею файла отчёта. |
#17 Автор: SergeCpp (2018.06.12 16:48) | Про это можно автору написать, описав детально, что нужно. Это разумное пожелание, думаю, автор сделает. |
#18 Автор: Nika (2018.06.12 19:41) | Странно, что это не было реализовано. Это же базовый функционал, без него тулзой можно только поиграться |
#19 Автор: SergeCpp (2018.06.13 12:04, изменений: 2, 2018.06.13 12:06) | Ну вот я лично ей пользовался с 2000, кажется, года, когда получил её на сиди к какой-то книге (вроде, даже тут в библиотеку загружал этот сиди). И очень хорошо пользовался, часто, то есть, чуть не ежедневно. Посмотреть то да сё. Была б неполезная, я бы и с автором не списывался, обнаружив какие-то мелочи (он поправил сразу).
P.S. Вот этот диск: http://old-dos.ru/index.php?page=lib&do=show&id=43
|
#20 Автор: Nika (2018.06.14 02:15) | А, да, знакомая тема. То-то вспоминаю, где-то эту программу [вроде бы] уже видел. |
#21 Автор: SergeCpp (2018.06.14 11:50) | Мне, кстати, не припомню, когда и требовался текстовый отчёт подобного рода. Наверняка, были случаи, но вот не припомню. DUMPBIN и подобные просто смотрел и всё -- не пригождались. А тут быстренько посмотреть, например, по какому адресу контрольная сумма, и поправить (уже в hiew). Можно бы и редактор приделать и текст выдавать, тогда и размер был бы больше и ошибок, соответственно.
Вот тот же depends (я тут выкладывал свою /чуть модифицированную/ версию) -- невероятно полезен, но имеющейся в нём возможностью создания текстового отчёта я пользовался всего раз-два (при тысячах, наверное, случаях использования) и то, вполнне мог бы и без него обойтись.
|
#22 Автор: Nika (2018.06.14 11:54, изменений: 1, 2018.06.14 11:55) | >> быстренько посмотреть, например, по какому адресу контрольная сумма, и поправить (уже в hiew).
-- Кстати, в Hiew 6.x контрольная сумма PE резактировалась прямо в диалоге заголовка (F8->F3). В новых версиях Hiew в том диалоге сумма уже не редактируется, а просто обновляется по F3. Забыл добавить эту локацию в GOTO.HEM.. Может, добавлю. |
#23 Автор: SergeCpp (2018.06.14 18:27) | А я смотрел сумму в depends, адрес в peview, а правил в hiew (4 или 5 версия, не помню).
|
#24 Автор: SergeCpp (2018.06.23 09:34, изменений: 1, 2018.06.23 10:02) | Ещё есть MS Rich-signature.
Вот старая статья, 2008-10: http://ntcore.com/files/richsign.htm
Вот новая статья, 2017-18 (старая там упоминается): http://bytepointer.com/articles/the_microsoft_rich_header.htm
Вот PELOOK (и другие утилиты), скрины там красивые (Latest Version: 1.58, Released: May 11, 2018): http://bytepointer.com/tools/index.htm#pelook
P.S. Главная страница -- шедевр! http://bytepointer.com/index.htm
|
#25 Автор: Nika (2018.06.24 11:01) | BYTE* да. Таскал оттуда, помню, "Неофициальные ченчлоги" для TASM & MASM. Полезная вещь. |
#26 Автор: SergeCpp (2020.04.28 09:02) | Nika --- HIEW32 HEM-Plugin для записи выделенного блока байтов в файл с именем в виде HEX-адреса этого блока. ===
А там разве нет записи блока в файл (и чтения из файла в блок)? Или это в QView только (не помню)? Или вы сделали для получения удобного имени в виде адреса? |
#27 Автор: Nika (2020.04.28 15:38, изменений: 1, 2020.04.28 15:39) | Да, есть.
Простое сохранение блока в файл в Hiew по <F2>. Но тогда придётся задавать имя этого файла. А плагин подставляет имя файла сам, в виде адреса. И его уже можно или изменить, или согласиться.
Кстати, это та опция, которую стоило бы добавить стационарно в Hiew32, в ту самую процедуру сохранения блока по <F2>.
|
#28 Автор: SergeCpp (2020.04.28 18:34, изменений: 1, 2020.04.28 18:44) | А если сделать (или настройку) в виде name-begin-end (или точками). В общем, имя выходного файла есть строка, в которой могут быть параметры: <name> <ext> <beg> <end> <len> -- на манер environment variables или в multi-edit есть подобное (плюс я там подобное добавил в диалоге поиска файлов). Это, конечно, скорее, размышления, так как это слишком для простой программы, но вполне бы и пригодилось.
Уже не помню, писал ли об этом. Скрин нашёл: http://old-dos.ru/screenshot/1328/ME_DIALOGS_HIDE_1.PNG Вроде бы, там и вложенные обрабатывались, вида <a<b>c> -- сперва разворачивается <b> (допустим, в BBB), а затем <aBBBc>.
UPD. Ага, есть рекурсия (хотя детали и позабыл я уже изрядно). Файл SEARCH.S макро ALIAS_EXPAND (L3672 и до конца файла). |
#29 Автор: Nika (2020.04.28 19:54, изменений: 4, 2020.04.28 20:08) | Да можно маску создать в настройках плагина, не проблема, но смысл в том, что мне оно нужно было именно в таком виде, чисто HEX цифры. Просто есть у меня утилита, которая потом занимается этими выдранными файлами, используя их имена именно как адреса. И подумываю примантулить ту утилиту тоже к Hiew в виде плагина. Так что этот плагин BL_FILE.HEM это уже фактически часть будущего плагина, и именно в таком виде, ни добавить, ни убавить. А если такая маска в его настройках будет, то она будет только мешать тому новому плагину, о котором я пишу.
И кстати, уже вовсю пользую и этот плагин, и предыдущий, PE_SPLIT.HEM. А сегодня плаг MBYTE2.HEM помог запихнуть в код для MSVC длинную строку, которую в обычном виде компилятор кушать отказывался по причине Error C2026: https://docs.microsoft.com/en-us/cpp/error-messages/compiler-errors-1/compiler-error-c2026?view=vs-2019
И вот, кстати же, TurboC для DOS не имеет никаких искусственных ограничений на длину строки.
|
#30 Автор: SergeCpp (2020.04.28 21:16) | The string was longer than the limit of 16380 single-byte characters. Прямо как в multi-edit win. 4 байта для длины вестимо. А вот так не объединяет? "string one" "string two". Вроде, было так (или я уже фантазирую). |
#31 Автор: Nika (2020.04.28 21:23) | Нет, так не объединяет, пробовал перед тем, как лезть искать ответ в интернете. И на той док-страничке, что я дал ссылку, такой вариант тоже рассмотрен и указано, что он тоже не прокатыват. |
| |
|