http://shelwien.googlepages.com/dllmerge.rar Интересует, нет ли известных аналогов. Ресолвит импорты/экспорты, объединяет секции и получает один exe из exe+dll. Делалось в основном, чтобы иметь возможность программу из кучи запчастей целиком в идашку загрузить. Вещь очень сырая, но все наличные практические задачи подобного рода (объединение wzunzip.exe+wz_clist.dll+wz_cl32.dll в один exe и присобачивание unrar.dll к другому архиватору) доблестно решила.
есть какая-то внутренняя тулза от Microsoft http://www.actiprosoftware.com/Support/Forums/ViewForumTopic.aspx?ForumTopicID=2025 и коммерческая разработка http://www.molebox.com/
Спасибо за попытку, но ILMerge предназначен для .NET, а molebox (судя по описанию) перехватывает api, да еще и все сжимает. У меня же задача получить реально один экзешник из нормальных (не .NET) exe+dll, с которым можно было бы работать в идашке, а также сжимать обычными exe-компрессорами и т.п. Моя утилита правда, "автоматически" работает только для dll со статическим байндингом (т.е. не LoadLibrary), но PE-файлы все равно объединяются любые, а обращения через LoadLibrary/GetProcAddress легко заменить на статические (перехватывать смысла мало, т.к. тогда идашка не отследит вызовы, а иначе автоматизировать это сложно).
К слову, биндинг к длл - это другое. А ты, возможно, имел в виду статическую линковку. А вообще мило, записал в список тулз своих)
Ну там сложно с терминологией в этом смысле. Официально это называется "implicit linking" но я бы прописанную в заголовке файла DLL "неявной" не назвал. А "статическая линковка" - это когда без dll вообще. Так что какой мне вариант нравится, тем и пользуюсь: http://www.google.com.ua/search?q=dll+static+binding А что до "своих тулз" - там есть маленький нюанс, что я поленился обрабатывать релокейшены (для перемещения dll), и сломал вместо этого стандартный rebase.exe (он не разрешал некратные 64k адреса). Так что dll надо rebase'ить отдельно (там есть примеры), указывая ImageBase+ImageSize-0x1000 в качестве базы.
Интересный сайт и из pebundle получился хороший crackme. http://www.bitsum.com/files/PEBundle.zip (оригинал) http://shelwien.googlepages.com/pebundle.rar (распакованная версия с отломанной проверкой времени) Но опять-таки не то. По крайней мере, ничего не сжимается, но зато импорты удаляются даже те что были в exe - вместо этого там вначале свой лоадер отрабатывает. Для загрузки в идашку опять-таки не лучшая идея...
Спасибо за ссылки, насчет флагов loader/debugger не знал. Но мой способ все равно намного удобнее, т.к. секции dll не только подгружаются в базу, но по ним проходит автоанализ, распознаются импорты, и есть возможность пройти по call'ам в dll вне режима отладки. Кроме того, если dll загружается LoadLibrary, то информация из базы вообще к ней не применяется - получается в базе одна версия, а реально отлаживается другая. А заменить импорт через LoadLibrary на статический руками - дело довольно муторное.