Извлечь файлы из dll
Проблема следующая - очень хочется вытащить функцию из *.exe файла, которая возможно там есть.
И встает 2 вопроса:
1) Как увидеть имена и параметры функции в *.exe файле[ для dll использую depends.exe] ?
2) Как преобразовать exe файл в dll или каким-то иным образом извлечь функцию ?
1) сейчас уже не помню, но посмотрю, когда на работу выйду :)
2) EXE ничем особ не отличается от DLL и чтобы использовать функцию необходимо: она должна быть объявлена как EXPORT в самом EXE; потом делаем LoadLibrary и GetProcAddress и пользуемся на здоровье.
Что значит "извлечь функцию"?
EXE не загрузится, как DLL с помощью LoadLibrary.
Для того, чтобы загрузить EXE, как DLL, необходимы три вещи:
1. Необходимо поставить соотв. флаг в PE-заголовке, что это DLL. Только тогда разрешится таблица импорта и секция релокаций.
2. Необходимо обнулить адрес EntryPoint, чтобы после загрузки управление не туда передалось.
3. EXE либо должен иметь таблицу релокаций, либо быть загружен по базовому адресу, что может быть затруднительным.
EXE не загрузится, как DLL с помощью LoadLibrary.
Для того, чтобы загрузить EXE, как DLL, необходимы три вещи:
1. Необходимо поставить соотв. флаг в PE-заголовке, что это DLL. Только тогда разрешится таблица импорта и секция релокаций.
2. Необходимо обнулить адрес EntryPoint, чтобы после загрузки управление не туда передалось.
3. EXE либо должен иметь таблицу релокаций, либо быть загружен по базовому адресу, что может быть затруднительным.
Что-то подобное я и предполагал. Но мне еще бы очень хотелось инструкцию о том, как это сделать, используя допустим IDA pro.
Если есть познания в ассемблере то почему бы и нет? Запускай иду, в режиме отладки ищи свою функцию, которую хочешь выловить, попутно анализируя, что она принимает и возвращает (стек). Именно на этом моменте расходуется больше всего времени. Как только чувствуешь, что что то нашол, пиши для себя комментарий! (очень полезно). Также, переименовывай метки в удобочитаемые, если таковые имеются в процедуре, которую нужно рипать, благо ида это позволяет. Как только осознал, что куда передаётся и что собственно процедура делает, выделяй нужный код, жми alt+f10 и сохраняй сорец. После неоднократной обработки и огранки напильником, можешь подцеплять его в свой проект.
Кстати, как отладчик IDA не очень одобна. Присмотрись к OllyDbg. Так же обрати внимание на HexRays, это декомпилятор, который может облегчить тебе твой труд
EXE не загрузится, как DLL с помощью LoadLibrary.
Для того, чтобы загрузить EXE, как DLL, необходимы три вещи:
1. Необходимо поставить соотв. флаг в PE-заголовке, что это DLL. Только тогда разрешится таблица импорта и секция релокаций.
2. Необходимо обнулить адрес EntryPoint, чтобы после загрузки управление не туда передалось.
3. EXE либо должен иметь таблицу релокаций, либо быть загружен по базовому адресу, что может быть затруднительным.
MSDN еще никто не отменял - Вот мой простой (проверенный) исходник который загружает EXE модуль (то чем реально пользуюсь сейчас выложить не могу - все на работе)
typedef DWORD (WINAPI *PExport)(void);
//
hExe = LoadLibrary("export.exe");
if( hExe )
printf("EXE load\n");
pExport = (PExport)GetProcAddress(hExe,"Example");
if( pExport )
printf("EXE get address\n");
printf("Export function return value - %d\n",pExport());
>
А вот исходник EXE из которого импортируется функция
DWORD WINAPI Example(void)
return 123;
>
При создании которого указывается что DWORD WINAPI Example(void) экспортируемая - и все замечательно работает.
Я подобным очень часто пользуюсь. Но для этого надо знать что экспортируется.
Иногда возникает ситуация при которой необходимо извлечь иконку из EXE и DLL-файла. Windows дает возможность использовать для ярлыков и программ иконки встроенные в файлы DLL и EXE, но не позволяет извлечь их и сохранить в формате ICO или PNG.
В этой статье мы рассмотрим несколько бесплатных программ, которые могут извлечь иконку из EXE и DLL файлов в Windows 10.
Заключение
На этом все. Теперь вы знаете как извлечь иконки из DLL и EXE-файлов. В следующей статье я расскажу, как изменить иконку любой программы.
главная программы pe explorer обзорный тур
В состав PE Explorer входит один из самых удобных и мощных редакторов ресурсов исполняемых файлов для Windows. Широкие возможности для открытия и редактирования проблемных файлов, большой список поддерживаемых ресурсов, продуманный интерфейс, совместимость с последними версиями Windows и соответствие всем современным требованиям - всё это делает PE Explorer стандартом де факто при выборе средств редактирования ресурсов.
Однако, если вам не нужна расширенная функциональность PE Explorer, попробуйте Resource Tuner - это редактор ресурсов из PE Explorer, специально выделенный в отдельный продукт.
Ошибки при открытии файла
Если при открытии файла возникает ошибка, то скорее всего по трём причинам: файл защищён, файл 16-битный, или это вообще не исполняемый файл.
1. Ошибка: Файл повреждён, сжат упаковщиком или защищён протектором.
Вероятность того, что файл сжат для уменьшения размера, весьма велика. Упаковщиков и протекторов для исполняемых файлов существует не один десяток, и всё время появляются новые. Resource Tuner поддерживает распаковку только одного, зато самого распостранённого упаковщика - UPX. Остальные упаковщики не поддерживаются, и вам придётся самостоятельно заниматься распаковкой файла, прежде чем вы сможете открыть файл для просмотра или редактирования.
Данная ситуация не рассматривается, как ошибка программы. Мы не собираемся ни бороться с попытками других авторов программ защитить свои творения от взлома, ни поддерживать распаковку нескольких десятков разных упаковщиков, среди которых есть и коммерчиские продукты, и самоделки.
2. Ошибка: Файл определён, как 16-битный NE Executable. Этот формат не поддерживается!
Наши программы работают только с 32- и 64-битными PE файлами. Формат NE (сокращение от "New Executable") - это формат 16-битных приложений, оставшийся в наследство от старых версий Windows 3.xx. С появлением Windows 95 этот формат считается устаревшим и не используется, хотя и может исполнятся на современных платформах от Microsoft. Мы не поддерживаем 16-битные файлы и не собираемся их поддерживать.
3. Ошибка: Файл не является EXE или DLL файлом. Вообще!
Resource Tuner определяет файл не по расширению. Если вы переименуете расширение у исполняемого файла, скажем, исправите .EXE на .TXT или вообще удалите расширение, Resource Tuner этим не обманешь: программа при открытии файла анализирует заголовок файла внутри файла, а на расширение вообще не смотрит.
Поэтому, если Resource Tuner вам сообщает, что файл не является исполняемым, то это так оно и есть. Если кто-то зачем-то снабдил текстовый файл в поставке игры расширением .DLL, то от этого файл не перестаёт быть текстовым, и не становится динамической библиотекой. Не дайте расширению файла себя обмануть.
Редактирование и замена ресурсов в исполняемых файлах
В результате изменения или замены ресурсов вы можете поменять вид у икон, курсоров, диалогов, кнопок, строчек, анимационных вставок, заменить звуки и другие элементы стандартного пользовательского интерфейса приложений, работающих под любой 32-битной операционной системой из семейства Windows.
Все изменения, произведённые в ресурсах, моментально отображаются на экране в режиме WYSIWYG, и если вас не устраивает полученный результат, всегда можно вернуться к предыдущему состоянию. Любые сделанные изменения могут быть отменены до тех пор, пока вы не нажали ОК и не закрыли редактор.
В зависимости от типа и формата ресурса, PE Explorer автоматически запускает редактор ресурсов в одном из соответствующих режимов - графическом, текстовом или специальном (для редактирования меню, диалогов, версии или форм Дельфи).
Изменения чувствительных данных, которые могут привести к неприятным последствиям в виде неработоспособного файла, обычно не разрешаются или контролируются на допустимый диапазон вводимых значений. Также в PE Explorer для предотвращения потери важных файлов по умолчанию включена опция создания резервной копии открываемого файла.
главная программы resource tuner руководство
При помощи Resource Tuner вы можете открывать исполняемые файлы, такие как .EXE, .DLL, .OCX, скринсейверы (.SCR) и многие другие. Открыв файл, вы получаете доступ к ресурсам файла и можете заменять иконы, курсоры и графику в различных форматах, изменять строчки в меню, диалоговых окнах и других элементах пользовательского интерфейса.
Однако стоит иметь в виду, что ресурсы в исполняемом файле отделены от программного кода, и изменяя интерфейс программы, вы не получаете доступ к коду программы. С помощью редактора ресурсов можно изменить управляющие элементы программы. Код программы с помощью редактора ресурсов изменить нельзя.
Для более серьёзных изменений (которые, впрочем, ни к чему хорошему не приведут без достаточного опыта в программировании приложений для Windows) рекомендуем использовать PE Explorer (редактор структуры PE файлов) или FlexHex (хекс-редактор для бинарных файлов).
Извлечение иконки из файлов EXE и DLL с помощью IconViewer
Шаг 1: Скачайте IconViewer (есть как 32-битные, так и 64-битные версии программы).
Шаг 2: Установите приложение IconViewer.
Шаг 3 Откройте проводник и откройте папку, содержащую файл, из которого хотите извлечь иконки. Например, перейдите в c:\Windows\System32.
Шаг 4: Щелкните правой кнопкой мыши по файлу с иконками, например, «shell32.dll» и выберите «Свойства» из контекстного меню.
Шаг 5: Перейдите на вкладку «Icons», добавленную приложением IconViewer.
Шаг 6: Выберите значок, который надо извлечь, и щелкните значок дискеты, чтобы сохранить его.
Шаг 7: Укажите папку назначения, имя файла и выберите формат файла (ICO, PNG или BMP). Далее нажмите на кнопку «Сохранить».
Просмотр и извлечение ресурсов из файла
Открыв файл в PE Explorer и выбрав кнопку Редактора ресурсов на панели инструментов, вы увидите список ресурсов в виде дерева с папками. Каждая из папок содержит определённый тип ресурса, хранящийся в изучаемом файле (графика, меню, диалоги, иконы и так далее). Раскрыв папку, вы увидите список ресурсных файлов.
В правой панели PE Explorer показывает выбранный из списка ресурс, в зависимости от его типа, в виде графического изображения, текста или бинарного кода (в этом случае клавишей F4 можно переключать режим просмотра (текст/hex), а клавишей F8 — кодовую страницу). Визуальные элементы отображаются в том виде, в каком бы они присутствовали в запущенном приложении: навигация, поиск и редактирование структуры меню и элементов диалога при таком подходе значительно упрощается.
Каждый элемент пользовательского интерфеса, обнаруженный в изучаемой программе, можно сохранить на диск, изменить или заменить. Поддерживаются операции практически с любым типом ресурсов, включая PNG, XML, Image Lists и Type Library.
На панели инструментов находятся кнопки для извлечения и сохранения на диск отдельно выделенного ресурса или всех ресурсов файла одновременно, кнопка вызова редактора ресурсов, кнопки удаления и восстановления выбранного ресурса, копирования в буфер обмена и вызова мастера создания ресурса манифест, кнопка поиска в дереве ресурсов, кнопки свойств ресурса и навигации по дереву. Редактирование, сохранение или удаление так же может производится путём щелчка правой кнопкой на выбранном ресурсе и выбора необходимого действия из контекстного меню:
Стандартные типы ресурсов, которые поддерживает PE Explorer, включают bitmap, icon, menu, dialog, cursor, font, stringtable, message table, toolbar, accelerator и version info. Все другие типы ресурсов не являются стандартными. Их название определяется разработчиком файла и может быть каким угодно. В дереве ресурсов названия папок с нестандартныи ресурсами отображается в верхнем регистре, например: AVI, TYPELIB, GIF, PNG, HTML, XML.
В ресурсах программ, созданных при помощи таких средств разработки, как Delphi или C++ Builder, вы не найдёте привычных диалогов, меню или акселераторов. Вместо них зато есть такой тип ресурса, как RCData, в котором и хранятся все эти данные в виде DFM (Delphi Form Module).
Если ресурс RCData содержит формы Delphi, то все найденные объекты и связанные с ними свойства и события отображаются в виде иерархического дерева. Лёгкость навигации и поиск по дереву объектов превращает работу с такими ресурсами в приятное занятие.
Содержимое форм и объектов (имидж листы, битмапы, глифы, стринг-листы) можно просматривать и сохранять на диск, как при работе с обычными стандартными ресурсами.
Извлечь иконку из EXE или DLL-файла с помощью IcoFX
IcoFX — еще один бесплатный инструмент, для извлечения значков (официальный сайт). Сегодня это уже платная программа, но к счастью, архив программ FileHippo по-прежнему предлагает для скачивания старую бесплатную версию 1.6.4.
Основное отличие IcoFX от приложений, упомянутых выше, заключается в том, что IcoFX — это полнофункциональный редактор иконок. Resource Hacker позволяет изменять файлы. IconViewer — это просто средство извлечения значков. С помощью IcoFX вы можете рисовать собственные значки, используя инструменты для рисования и наложения графических эффектов.
Чтобы извлечь значок из файла с IcoFX:
Шаг 1: Скачайте бесплатную версию 1.6.4 из архива FileHippo.
Шаг 2: Выберите File —> Open из меню (или нажмите Ctrl + O).
Шаг 3: Выберите файл для извлечения значка. Появится диалоговое окно со всеми значками, которые приложение смогло найти в данном файле.
Шаг 4: Выберите иконку и нажмите «Extract». Это откроет значок в редакторе.
Шаг 5: Чтобы извлечь значок определенного размера, щелкните правой кнопкой мыши по его миниатюре в левой панели редактора и нажмите на кнопку «Экспорт изображения …» в контекстном меню.
Шаг 6: Укажите папку для хранения файла, нужный формат файла (PNG, BMP, JPEG, GIF или JP2) и присвойте имя файлу.
Шаг 7: Нажмите на кнопку «Сохранить».
Извлечь иконку из EXE или DLL с помощью Resource Hacker
Resource Hacker — это удобное и простое в использовании приложение, которое сэкономит ваше время при необходимости извлечь значок из файла в Windows 10.
Шаг 1: Скачайте Resource Hacker.
Шаг 2: Установите приложение.
Шаг 3: Запустите приложение Resource Hacker.
Шаг 4: Перейдите в меню «Файл» —> «Открыть» или нажмите Ctrl + O, чтобы найти файл, из которого следует извлечь иконку (я открою папку c:\windows\explorer.exe).
Шаг 5: На левой панели разверните группу значков и перейдите к нужному значку (используйте область предварительного просмотра справа).
Шаг 6: В меню выберите «Действие» —> «Сохранить ресурс * .ico».
Шаг 7: Выберите папку для сохранения файла ICO и нажмите Сохранить.
Теперь значок извлечен и сохранен в файле *.ico:
Несколько советов по использованию Resource Hacker
- Resource Hacker — это 32-битное приложение. Если вы используете его в 64-битной версии Windows 10, оно может не открыть определенные системные файлы. В таком случае вы можете скопировать их в другой каталог, например, скопировать файл c:\windows\system32\shell32.dll в c:\data и открыть файл c:\data\shell32.dll в Resource Hacker.
- Сохраняя отдельные иконки из группы иконок, вы получаете один файл с расширением ICO с одним размером иконки.
- Чтобы получить файл ICO со всеми доступными размерами значков, перейдите к узлу «Группа значков» на левой панели, разверните ее и повторите шаги, описанные выше.
Некоторым пользователям может быть сложно использовать Resource Hacker. Пара альтернативных приложений: IconViewer и IcoFX, позволят сохранять значков в других форматах изображений, включая PNG и BMP.
Какие файлы не имеет смысла открывать в редакторе ресурсов
Не смотря на то, что Resource Tuner предназначен для открытия и редактирования любых 32-/64-битных исполняемых файлов, существуют некоторые виды EXE файлов, в которых ресурсы практически отсутствуют.
1. Файлы, созданные при помощи Visual Basic.
В таких файлах в секции ресурсов ничего нет, кроме иконы и информации о версии. Строчки и диалоги в программах, написанных на визуальном бейсике, хранятся в своём собственном закрытом формате, и стандартная секция ресурсов в них не используется.
2. Файлы .EXE размером в гигабайт и более.
Поскольку Resource Tuner - это 32-битная программа, существуют естественные ограничения для размещения образа открываемого файла в виртуальной памяти в пределах первого гигабайта. Файл размером в гигабайт и более туда просто не поместится.
3. Самораспаковывающиеся архивы в виде EXE файлов.
В таких файлах в ресурсах ничего нет, кроме иконы и информации о версии, а может и этого не быть. По сути, это архивированные данные, снабжённые подпрограммой для распаковки.
4. Инсталляторы других программ.
В таких файлах в ресурсах ничего нет, кроме иконы и информации о версии. Очень похожи на п.3. Файл инсталлятора можно рассматривать как контейнер, внутри которого содержится другой .EXE файл в сжатом виде и подпрограмма для его извлечения. К тому же, программы для создания инсталляторов используют разные алгоритмы для хранения внутри себя архивированных данных.
Руководство
начало | след.
Resource Tuner работает на всех версиях Windows
от 2000 и XP до 8, 10 и 11.
Минимальные системные требования:
Процессор Intel Pentium® или AMD K5 166 MHz
16 MB RAM
Иногда в разработке конфигурации мы используем DLL библиотеки с драйверами или приложения для весовых терминалов к примеру, но они представлены не в той форме, которая подходит непосредственно для нашего приложения, либо запрашивает диалоги, которые не очень нужны, для их исправления и изменения и предназначена данная утилита.
Приложение позволяет редактированию файлов *.dll; *.exe; *.res; *.rs
- добавлять;
- просматривать;
- видоизменять;
- переименовывать;
- удалять ресурсы в данных файлах.
Подобные приложения имеются в сети интернет и их много за основу взята идея (Resource Hacker) но данное приложение позволяет не только отредактировать и скопировать обработать скрипты, но и создать с нуля, создать новый ресурсный файл и скомпоновать его из ресурсов различных файлов в один.
Суть действия программы - открывает доступ к изменению иконок, кнопок, стилей, оформлению диалоговых окон "Windows", что в рамках перенастроек параметров системы сделать невозможно. Вы можете полностью изменить интерфейс программы или ресурса под себя или под стиль своего приложения.
Чтобы отредактировать какой-то файл, его нужно открыть в этом приложении. На старте перед вами появятся следующие пункты:
- AVI. Открытый файл содержит в себе файлы расширения AVI.76.
- Курсор. В файле содержатся файлы с различными вариациями внешнего вида курсора.
- Точечный рисунок. В файле имеются точечные изображения.
- Значок. Файл содержит в себе иконки, значки. Меню.
- Подразумевает, что в файле различные типы оформления меню.
- Диалоговые окна. Файле содержит несколько вариаций оформления диалоговых окон.
- Строки таблицы. Соответственно, в Файле версии строк.
- Акселераторы. Файл содержит в себе данные о применяемом сочетании клавиш.
- Информация о версии. Что это значит? В файле данные о версии файла.
- Тип ресурса. Будет обозначено, к какому из вышеперечисленных типов относится данный: курсор, акселераторы, точечные рисунки, диалоговые окна и проч. Название ресурса. Какое наименование данный ресурс имеет в системе "Windows".
- Язык ресурса. Тут, соответственно, обозначается язык, используемый в файле. Применяется кодировка. Например, для английского - 1033, для русского - 1049.
Алгоритм действий по изменению ресурса тут несложный:
- Выберите в каталоге ресурс, который вы хотите изменить. Например, это точечный рисунок в интерфейсе. Примерный путь таков: Bitmap-> 131-> 1033.
- Далее мы переходим (в русскоязычной вариации программы) в "Действия", выбираем пункт "Замена курсора/точечного рисунка/значка". В англоязычной версии этот путь интуитивно понятен: Action -> Replace Icon/Cursor/Bitmap.
- Перед вами появится новое окно. Выберите в нем "Открыть файл. " с нужным ресурсом. Им может быть другой точечный рисунок, вариация курсора и т. д. Поэтому важно предварительно загрузить новую версию изображения на свой компьютер.
- В следующем диалоговом окне выберите нужный ресурс на замену.
- Нажмите на кнопку "Открыть".
- Следующее действие - "Изменить".
Вот и все действия.
- Действия по замене интерфейса тут несколько отличаются от предыдущих:
- Выберите ресурс, который вы хотите изменить. Например: String Table -> 4 -> 1049.
- Внесите необходимые изменения.
- После этого кликните на комплементация скрипта.
Далее произведется комплементация скрипта. Что хорошо, если вы допустили ошибку в перенастройке, появится соответствующее оповещение. Изменения вступят в силу только после того, как проблема будет устранена.
Помимо изменений возможно и добавление своих ресурсов, пунктов меню, или копирование ресурсов из других файлов
Добавление новых пунктов меню самое сложное задание. Программа позволяет пользователю самостоятельно добавлять в интерфейс собственные пункты контекстного меню. Сделать это возможно.
Пример: MENUITEM "ur_desired_string", 12345, MFT_STRING, MFS_GRAYED | MFS_DEFAULT
Разберем что к чему:
- "ur_desired_string" - текст, который будет отображаться в контекстном меню.
- 12345 - числовой идентификатор. Он должен отличаться от уже существующих.
- MFT_STRING - описание текста, который будет представлен.
- MFS_GRAYED - отключение MENUITEM.
- Для обратного действия (активации) измените на MFS_ENABLED. MFS_DEFAULT - делает запись полужирной. Параметр можно не изменять.
- Чтобы у вас не возникало сложностей с добавление нового пункта, отредактируйте только разделы "ur_desired_string" и 12345.
- Для всех иных параметров оставьте автоматические значения.
Также присутствует возможность сохранения ресурсов в виде графических файлов (.ICO, .BMP и т.д.), файлов сценариев (.RC), ресурсных (.RES) и нетипизированных двоичных файлов (.BIN). Кроме того приложение дает пользователю возможность удалять неиспользуемые ресурсы, что позволяет уменьшить размер приложения.
Открытие EXE или DLL файла в Resource Tuner
Resource Tuner поддерживает несколько способов открытия файлов. Чтобы открыть файл для просмотра и редактирования, нажмите кнопку Open File на панели инструментов или выберите команду File > Open [CTRL+O] из меню. Выпадающее меню рядом с кнопкой на тулбаре даёт вам быстрый доступ к списку последних открывавшихся файлов. Этот же список можно получить командой File > Recent Files из меню программы. Количество файлов в списке настраивается в диалоге Customize.
Вы также можете открыть файл при помощи Resource Tuner прямо из Проводника Windows, щёлкнув по файлу правой кнопкой и выбрав Open with Resource Tuner из контекстного меню.
Или вы можете просто перетащить и бросить иконку файла из Проводника Windows на иконку Resource Tuner на рабочем столе или на окно запущенного Resource Tuner.
Вы так же можете открыть файл из командной строки.
Например: restuner.exe filename.exe
Мы рекомендуем проводить все операции по редактированию ресурсов только с копиями файлов, и ни в коем случае не с оригиналами, и только когда вы поместили копию файла в отдельную директорию.
При открытии файла Resource Tuner производит несколько автоматических операций: распаковывает файл, если обнаруживается, что он был запакован при помощи UPX, затем идёт проверка структуры и ресурсов файла на возможные ошибки, и наконец перестройка повреждённых ресурсов в соответствии со спецификацией формата исполняемых файлов.
Как извлечь иконку из EXE и DLL
Чтобы извлечь иконку из файла, вам потребуется сторонний софт. Для этого есть множество утилит. Я расскажу о трех надежных бесплатных программах, которые я использую.
Начнем с утилиты Resource Hacker.
Файл ICO
ICO — это файл изображений, который используется для иконок приложений и ярлыков Windows. Файл ICO содержит одно или несколько изображений с различными размерами и глубиной цвета, поэтому их можно использовать с разным разрешением экрана. Традиционно исполняемые файлы содержат иконку в формате ICO, поэтому они отображаются в меню «Пуск» и на ярлыках на рабочем столе. Операционная система позволяет изменить иконку файла или ярлыка, загрузив ее из другого файла *.ICO, *.EXE, *.DLL.
В Windows 10 есть свои иконки, которые находятся в файлах:
- C:\Windows\system32\shell32.dll
- C:\Windows\system32\imageres.dll
- C:\Windows\system32\moricons.dll
- C:\Windows\explorer.exe
Читайте также: