dllmerge

Тема в разделе "WASM.RESEARCH", создана пользователем Shelwien, 30 апр 2009.

  1. Shelwien

    Shelwien New Member

    Публикаций:
    0
    Регистрация:
    30 апр 2009
    Сообщения:
    8
    http://shelwien.googlepages.com/dllmerge.rar

    Интересует, нет ли известных аналогов.

    Ресолвит импорты/экспорты, объединяет секции и получает один exe из exe+dll.

    Делалось в основном, чтобы иметь возможность программу из
    кучи запчастей целиком в идашку загрузить.

    Вещь очень сырая, но все наличные практические задачи подобного рода
    (объединение wzunzip.exe+wz_clist.dll+wz_cl32.dll в один exe и
    присобачивание unrar.dll к другому архиватору) доблестно решила.
     
  2. Lux_In_Tenebris

    Lux_In_Tenebris New Member

    Публикаций:
    0
    Регистрация:
    31 окт 2008
    Сообщения:
    13
    есть какая-то внутренняя тулза от Microsoft
    http://www.actiprosoftware.com/Support/Forums/ViewForumTopic.aspx?ForumTopicID=2025

    и коммерческая разработка
    http://www.molebox.com/
     
  3. Shelwien

    Shelwien New Member

    Публикаций:
    0
    Регистрация:
    30 апр 2009
    Сообщения:
    8
    Спасибо за попытку, но ILMerge предназначен для .NET, а molebox (судя по описанию)
    перехватывает api, да еще и все сжимает.
    У меня же задача получить реально один экзешник из нормальных (не .NET) exe+dll,
    с которым можно было бы работать в идашке, а также сжимать обычными exe-компрессорами и т.п.
    Моя утилита правда, "автоматически" работает только для dll со статическим байндингом
    (т.е. не LoadLibrary), но PE-файлы все равно объединяются любые, а обращения через
    LoadLibrary/GetProcAddress легко заменить на статические (перехватывать смысла мало, т.к.
    тогда идашка не отследит вызовы, а иначе автоматизировать это сложно).
     
  4. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    К слову, биндинг к длл - это другое. А ты, возможно, имел в виду статическую линковку.

    А вообще мило, записал в список тулз своих)
     
  5. Shelwien

    Shelwien New Member

    Публикаций:
    0
    Регистрация:
    30 апр 2009
    Сообщения:
    8
    Ну там сложно с терминологией в этом смысле.
    Официально это называется "implicit linking" но я бы прописанную
    в заголовке файла DLL "неявной" не назвал.
    А "статическая линковка" - это когда без dll вообще.
    Так что какой мне вариант нравится, тем и пользуюсь:
    http://www.google.com.ua/search?q=dll+static+binding

    А что до "своих тулз" - там есть маленький нюанс, что я поленился
    обрабатывать релокейшены (для перемещения dll), и сломал вместо
    этого стандартный rebase.exe (он не разрешал некратные 64k адреса).
    Так что dll надо rebase'ить отдельно (там есть примеры), указывая
    ImageBase+ImageSize-0x1000 в качестве базы.
     
  6. reverser

    reverser New Member

    Публикаций:
    0
    Регистрация:
    27 янв 2004
    Сообщения:
    615
  7. Shelwien

    Shelwien New Member

    Публикаций:
    0
    Регистрация:
    30 апр 2009
    Сообщения:
    8
    Интересный сайт и из pebundle получился хороший crackme.
    http://www.bitsum.com/files/PEBundle.zip (оригинал)
    http://shelwien.googlepages.com/pebundle.rar (распакованная версия с отломанной проверкой времени)
    Но опять-таки не то. По крайней мере, ничего не сжимается, но зато импорты
    удаляются даже те что были в exe - вместо этого там вначале свой лоадер отрабатывает.
    Для загрузки в идашку опять-таки не лучшая идея...
     
  8. reverser

    reverser New Member

    Публикаций:
    0
    Регистрация:
    27 янв 2004
    Сообщения:
    615
    Если цель - только загрузка в Иду, то самый простой способ это PE scripts.
    Ещё варианты: 1, 2.
     
  9. Shelwien

    Shelwien New Member

    Публикаций:
    0
    Регистрация:
    30 апр 2009
    Сообщения:
    8
    Спасибо за ссылки, насчет флагов loader/debugger не знал.
    Но мой способ все равно намного удобнее, т.к. секции dll не только
    подгружаются в базу, но по ним проходит автоанализ, распознаются
    импорты, и есть возможность пройти по call'ам в dll вне режима отладки.
    Кроме того, если dll загружается LoadLibrary, то информация из базы
    вообще к ней не применяется - получается в базе одна версия, а реально
    отлаживается другая. А заменить импорт через LoadLibrary на статический
    руками - дело довольно муторное.