|
ПРОЕКТЫ ДАННОЙ КАТЕГОРИИ Все проекты данной категории - 3 TOP 10 ФРИЛАНСЕРОВ Разработка системного ПО
|
EXE "Packer"Разработка системного ПО
На входе файл EXE. Допустим, EXE зависит (импортирует функции) от somedll1.dll, somedll2.dll, ... somedllN.dll.
На выходе требуется получить EXE, который не имеет зависимостей от somedll1.dll, somedll2.dll, ... somedllN.dll. При этом имеет зависимость только от ntdll.dll. При старте EXE (результирующий) выполняет некий код: например, загружает user32.dll и вызывается MessageBox. Далее загружает все необходимые DLL-ки (somedll1.dll, somedll2.dll, ... somedllN.dll), правятся соответствующие entries в таблицах импорта (пока теоретизирую: не знаю, как лучше организовать перепаковку!), чтобы в дальнейшем EXE работал точно так же, как оригинальный. Требуется поддержка как PE32 так и PE32+ (PE64). [Дополнение: 22.07.2008 в 11:23] Код должен быть написан на С++ и успешно собираться на VC6. [Дополнение: 22.07.2008 в 11:25] Из общения с потенциальными исполнителями. Вопрос: "EXE-шник который на выходе должен только зависить от ntdll, и не использовать функции из "somedll1.dll, somedll2.dll, ... somedllN.dll"?? или же надо функции из этих библиотек "импортировать" в EXE-шник который на выходе, и потом при последующих его запусках, он к этим библиотекам не обращается, тока к ntdll ?" Ответ: "нет :) получившийся EXE не должен иметь явных зависимостей от этих dll-ек, у него не должно быть ссылок на них в таблице импорта. к примеру, если мы загрузим такой exe-шник в depends.exe (входит в состав Visual Studio), то мы должны увидеть зависимости только от ntdll.dll (буквально от пары-тройки функций: загрузить dll, получить адрес функции из dll). но, тем не менее, получившийся EXE будет обращаться к somedll1.dll, somedll2.dll, ... somedllN.dll. Динамически. При старте он должен попытаться подгрузить все эти dll-ки, найти все функции, которые импортировались оригинальным EXE, и сделать еще какую-то подготовительную работу, чтобы дальнейшая работа EXE ничем не отличалась от работы оригинального."
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||