Пишем упаковщик по шагам. Шаг шестой. TLS.

Предыдущий шаг здесь.

Появилась новая версия библиотеки для работы с PE-файлами (0.1.5). Перекачайте и пересоберите ее.

Пришло время заняться обработкой такой важной вещи, как Thread Local Storage (TLS) - локальной памяти потока. Что она из себя представляет? Это небольшая структура, которая говорит загрузчику PE-файлов о том, где находятся данные, которые должны быть выделены в памяти для каждого потока. Загрузчиком также производится вызов функции TlsAlloc, и значение, возвращенное ей, записывается по адресу, также указанному в этой структуре (называется это индексом). Кроме того, эта же структура может содержать адрес массива, хранящего набор коллбэков (адресов функций), которые будут вызваны загрузчиком при загрузке файла в память или при создании нового потока в процессе.

С TLS, признаться честно, все будет несколько хардкорнее, чем с остальным, так что приготовьтесь и напрягите мозг. Мой прошлый упаковщик TLS-коллбэки не поддерживал, трусливо выдавая сообщение о том, что они есть, но не обрабатываются. В принципе, поведение разумное, так как TLS-коллбеки имеют в основном всякие странные файлы, использующие эту вещь как антиотладочный прием. Ни один штатный линкер, вроде линкера от Майкрософт или Борланд, не поддерживают создание TLS-коллбэков. Тем не менее, для создания годного упаковщика мы их поддержку запилим.

Читать далее «Пишем упаковщик по шагам. Шаг шестой. TLS.»

Simple PE Dumper

Simple PE Dumper 1.0.

Программа, позволяющая вытянуть немного информации из исполняемых PE-файлов, а также PE .NET-файлов.

Дампит:

[+] Some DOS & NT-headers info
[+] DATA_DIRECTORY
[+] Section table
[+] Security directory
(все сертификаты, содержащиеся в файле)
[+] Debug directory
(+COFF / частично CodeView / Misc)
[+] Import directory
[+] Bound import directory
[+] Delay import directory
[+] Relocation directory
[+] Export directory
[+] TLS directory (incl. callbacks)
[+] Config directory (incl. SE Handlers)
[+] Resource directory (full STRINGTABLE and MESSAGETABLE dump)
[+] COM descriptor (full dotnet headers, streams and tables dump)

Способен корректно показать инфо о файлах, запакованных upack'ом, в отличие от многих других программ редактирования PE, а также лишен багов CFF explorer в плане просмотра информации о .NET-таблицах.

Для создания дампа просто перетащите PE-файл на форму открытого Simple PE Dumper'а.

Скачать: Simple PE Dumper