Можно ли "склеить" два экзешника?

Тема в разделе "WASM.BEGINNERS", создана пользователем Green_DiCk, 6 авг 2008.

  1. Green_DiCk

    Green_DiCk New Member

    Публикаций:
    0
    Регистрация:
    8 июл 2007
    Сообщения:
    338
    Есть небольшая консольная утилитка, работающая через параметры командной строки. Ну например тот же компилятор - яркий пример. Можно ли прикрутить ее к своей программе? Т.е. чтобы не просто рядом в папке лежала, а как-нибудь "прилинковать намертво"?
     
  2. l_inc

    l_inc New Member

    Публикаций:
    0
    Регистрация:
    29 сен 2005
    Сообщения:
    2.566
    Green_DiCk
    Можно делать так: http://www.wasm.ru/article.php?article=memfile
     
  3. ironway

    ironway New Member

    Публикаций:
    0
    Регистрация:
    21 июн 2006
    Сообщения:
    90
    можно ещё при помощи winrar'a
    sfx+скрипт для распаковки и поочерёдного запуска
     
  4. spa

    spa Active Member

    Публикаций:
    0
    Регистрация:
    9 мар 2005
    Сообщения:
    2.240
    ironway
    Ты помоему не так понял что нужно топикстартеру
     
  5. Sol_Ksacap

    Sol_Ksacap Миша

    Публикаций:
    0
    Регистрация:
    6 мар 2008
    Сообщения:
    623
    Иохо, проще думать не "как прикрутить к своей программе", а "как прикрутить свою программу". Потому что в этом случае один может отталкиваться от множества статей о написании вирусов.

    Используемые dll-ки теоретически тоже можно "прилинковать". О готовых инструментах информации нет, а чтобы сделать свой, один должен разбираться в основах PE-формата.
     
  6. l_inc

    l_inc New Member

    Публикаций:
    0
    Регистрация:
    29 сен 2005
    Сообщения:
    2.566
    Sol_Ksacap
    :) Можно продолжать... : A strong poison runs through your veins. You carry a horrible disease. It literally boils inside you. You are immortal. Well, almost immortal... :)
    Особенно, когда нужно "прикрутить к своей программе" несколько чужих.
     
  7. Mikl___

    Mikl___ Супермодератор Команда форума

    Публикаций:
    14
    Регистрация:
    25 июн 2008
    Сообщения:
    3.792
    Может быть ТС имел в виду это?
    самотранслирующаяся программа (взято из Пирогова "Ассемблер для Windows" )

    BAT-файл, который транслирует сам себя. Коммандный процессор игнорирует точку с запятой, которые в ассемблере обозначают начало строки комментария, который скрывает комманды операционной системы от ассемблера. Пусть наша программа называется asm.bat
    Код (Text):
    1. ;goto masm
    2. ...;текст программы
    3. end start
    4. ;:masm
    5. ;c:\masm32\bin\ml /c /Cp /Gz /Ic:\masm32\include /coff /nologo asm.bat
    6. ;if errorlevel 1 goto TheEnd
    7. ;c:\masm32\bin\link /SUBSYSTEM:WINDOWS asm.obj
    8. ;:TheEnd
     
  8. ironway

    ironway New Member

    Публикаций:
    0
    Регистрация:
    21 июн 2006
    Сообщения:
    90
    SPA
    Насколько я понял, ТС нужно чтобы в одном exe было несколько, которые запускаются по-очереди.
    Скрипты winrar'a позволяют создавать exe-архив, который распаковывается во временную папку, поочерёдно запускает выбранные файлы (setup1=... setup2=...) и удаляет себя из временной папки.
     
  9. spa

    spa Active Member

    Публикаций:
    0
    Регистрация:
    9 мар 2005
    Сообщения:
    2.240
    ironway
    надеюсь автору не надо так тупо....
     
  10. justru

    justru New Member

    Публикаций:
    0
    Регистрация:
    21 янв 2008
    Сообщения:
    39
    Можно просто из ресурсов доставать, записывать в темп и оттуда запустить.
    Если очень не надо записывать файл на диск, то засунуть её в ресурсы, потом промеппить, изменить память в командлайн... и запустить тред на ентрипойнт... только при этом надо будет ещё перехватить ExitProcess чтобы вторая программа не закрыла основную + при создании надо указать ImageBase отличный от консольного.
     
  11. Folk Acid

    Folk Acid New Member

    Публикаций:
    0
    Регистрация:
    23 авг 2005
    Сообщения:
    432
    Адрес:
    Ukraine
    В общем случае, к EXE файлу можно просто добавить любой другой файл, хотябы так copy 1.exe+2.exe 1patched.exe При этом 1patched.exe будет работать как 1.exe
     
  12. Aspire

    Aspire New Member

    Публикаций:
    0
    Регистрация:
    19 май 2007
    Сообщения:
    1.028
    Ой как не факт!!!
    Если 1.exe упакован, то вообще ничего работать не будет.
     
  13. Green_DiCk

    Green_DiCk New Member

    Публикаций:
    0
    Регистрация:
    8 июл 2007
    Сообщения:
    338
    l_inc
    Любопытно... Но здесь как я понял процесс загружается в память, а потом просто делается jmp на его точку входа. Не совсем удобно, тем более что используется ряд хаков, которые не то чтобы очень сложные, но тем не менее... Не хотелось бы вот так извращаться.. И здесь просто передается управление другому процессу, а там будь что будет. Мне бы хотелось контролировать "дочерний" процесс.

    Вообщем немного переформулирую задачу. Предположим есть текстовый редактор и компилятор. Такая мини-IDE. Обычно делается так - в папке лежат два экзешника - редактор и компилятор. В редакторе пишется программа, потом нажимается кнопка "Скомпилировать" и редактор запускает компилятор, передав ему некоторые параметры. Вот это и нужно. За тем только отличием, что требуется соединить все это в рамках одного экзешника. Причем "редактор" мой, т.е. есть исходники, а "компилятор" от стороннего производителя, т.е. готовый бинарник без исходников.

    ironway
    Нееее...


    justru
    Тоже любопытно... Надо подумать.
     
  14. Freeman

    Freeman New Member

    Публикаций:
    0
    Регистрация:
    10 фев 2005
    Сообщения:
    1.385
    Адрес:
    Ukraine
    заюзай потоки нтфс..

    сделай не джамп, а CreateThread.. Перехвати ExitProcess, TerminateProcess или чо там тот компилятор использует для завершения работы...

    также можно сделать так, чтоб при запуске процесса без параметров работал твой редактор, а если обнаруженны пораметры, то стартовал втупую из памяти компилятор.
     
  15. l_inc

    l_inc New Member

    Публикаций:
    0
    Регистрация:
    29 сен 2005
    Сообщения:
    2.566
    Это как? Трассировать что ли? Насколько я понимаю, Вам нужны всего-то пара безымянных пайпов для контроля ввода/вывода консольного процесса. И если хотите, чтобы на диске файла не было, то в любом случае придется брать его из себя: ресурсы, оверлей, секция инициализированных данных, да хоть из кодовой секции, но запускать придется руками.
     
  16. Green_DiCk

    Green_DiCk New Member

    Публикаций:
    0
    Регистрация:
    8 июл 2007
    Сообщения:
    338
  17. Green_DiCk

    Green_DiCk New Member

    Публикаций:
    0
    Регистрация:
    8 июл 2007
    Сообщения:
    338
    Freeman
    Это что такое?

    Как ф-ции перехватывать? Раньше такого не приходилось делать. Смотреть в сторону windows hooks или еще куда?

    l_inc
    Нет.

    Именно это и нужно. Только как перенаправить ввод/вывод на мои пайпы?

    Это уже понятно. Примерная картина сложилась.
     
  18. Green_DiCk

    Green_DiCk New Member

    Публикаций:
    0
    Регистрация:
    8 июл 2007
    Сообщения:
    338
  19. Freeman

    Freeman New Member

    Публикаций:
    0
    Регистрация:
    10 фев 2005
    Сообщения:
    1.385
    Адрес:
    Ukraine
    http://www.google.com.ua/search?q=дополнительные+потоки+ntfs

    поиск по форуму.
     
  20. l_inc

    l_inc New Member

    Публикаций:
    0
    Регистрация:
    29 сен 2005
    Сообщения:
    2.566
    Green_DiCk
    Вы бы прошлись по сайту, поискали бы.
    По пайпам: http://www.wasm.ru/article.php?article=1001021
    По перехватам: http://www.wasm.ru/publist.php?list=21#series_8
    P.S. Опоздал слегка с нравоучениями.