Объединение exe программ

Тема в разделе "WASM.BEGINNERS", создана пользователем Mountaineer, 28 ноя 2010.

  1. Mountaineer

    Mountaineer New Member

    Публикаций:
    0
    Регистрация:
    28 ноя 2010
    Сообщения:
    125
    Требуется создать программу для курсовой.Тема: Объединение exe программ.
    Прошу помочь.
     
  2. MSoft

    MSoft New Member

    Публикаций:
    0
    Регистрация:
    16 дек 2006
    Сообщения:
    2.854
    Тебе методом инфецирования? Или склейки, как в джоинере? Или вставка одного кода в другой? По всем трем способам (возможно, кроме второго), есть статьи на васме
     
  3. _sheva740

    _sheva740 New Member

    Публикаций:
    0
    Регистрация:
    31 авг 2005
    Сообщения:
    1.539
    Адрес:
    Poland
    Mountaineer
    А по какому предмету курсовой пишешь?
    На каком языке?
    Под виндой ?
     
  4. Mountaineer

    Mountaineer New Member

    Публикаций:
    0
    Регистрация:
    28 ноя 2010
    Сообщения:
    125
    Не, мне просто программу на ассемблере для курсовой, типа на примере.
     
  5. Mountaineer

    Mountaineer New Member

    Публикаций:
    0
    Регистрация:
    28 ноя 2010
    Сообщения:
    125
    Предмет Архитектура ЭВМ. СПО
    Ассемблер
    под Windows.
     
  6. Mountaineer

    Mountaineer New Member

    Публикаций:
    0
    Регистрация:
    28 ноя 2010
    Сообщения:
    125
    Незнаю, тема была Объединение exe программ.

    На Assembler нужно.
     
  7. _sheva740

    _sheva740 New Member

    Публикаций:
    0
    Регистрация:
    31 авг 2005
    Сообщения:
    1.539
    Адрес:
    Poland
    Mountaineer
    Ну не знаю потянет ли это на курсовой?
    Могу на фасме дать исходник.
    Так уточни задачу!
    Что конкретно нужно?
    Исходник ты запустил и потом
    - появилось еще два файла 1.exe и 2.exe
    - Запустился 1.exe
    ... так?
     
  8. Mountaineer

    Mountaineer New Member

    Публикаций:
    0
    Регистрация:
    28 ноя 2010
    Сообщения:
    125
    думаю так или типа так:

    беру Программку которую я написал.exe,
    потом в неё как то засовываю или добавляю путь к 1.exe
    и 2.exe
    и потом получаю
    3.exe (12.exe)
    типа так.

    Это дополнение к теории Курсовой, типа в наглядном виде...
     
  9. MSoft

    MSoft New Member

    Публикаций:
    0
    Регистрация:
    16 дек 2006
    Сообщения:
    2.854
    Сразу видно, что человек на лекциях бывает крайне редко. Повторю еще раз свой вопрос - каким способом тебе надо их объединить? Что должно происходить? Вообще процесс работы осознаешь? А то можно обе программы засунуть в рар-архив и назвать это объединением.

    Какой из трех названных мной способов нужен тебе для объединения? Намек: если это дополнение к курсовой, то в самой курсовой должен быть описан способ. Ты ж читал свою курсовую, правда? Ну хотя бы введение открывал?
     
  10. _sheva740

    _sheva740 New Member

    Публикаций:
    0
    Регистрация:
    31 авг 2005
    Сообщения:
    1.539
    Адрес:
    Poland
    Mountaineer
    Ты понимаешь о чем MSoft тебя спрашивает?
    [​IMG]
    Можно sfx - архивом все запаковать, а потом распаковать.
    Этого достаточно для примера?
     
  11. Mountaineer

    Mountaineer New Member

    Публикаций:
    0
    Регистрация:
    28 ноя 2010
    Сообщения:
    125
    Не буду с вами спорит, хотя написанное вами неправда.

    Мы не проходили ни склейку ни джоинеров ни вставка одного кода в другой.
    Так, что думаю вы погорячились с выводами.

    Думаю программу для соединения двух исполнимых файлов типа ".EXE" в ОДИН ИСПОЛНИМЫЙ ФАЙЛ.
     
  12. MSoft

    MSoft New Member

    Публикаций:
    0
    Регистрация:
    16 дек 2006
    Сообщения:
    2.854
    ну тогда используй способ из ответа #10 и не парься
     
  13. Mountaineer

    Mountaineer New Member

    Публикаций:
    0
    Регистрация:
    28 ноя 2010
    Сообщения:
    125
    мне же не архив нужен а ИСХОДНИК И EXE ПРОГРАММА НА ASSEMBLERE который просто объединяет как то программы
     
  14. _sheva740

    _sheva740 New Member

    Публикаций:
    0
    Регистрация:
    31 авг 2005
    Сообщения:
    1.539
    Адрес:
    Poland
    Mountaineer
    Ты не спеши обижаться, так помощи не получишь.
    Просто на вопросы отвечай спокойно.
    Все же человек дал себе труд, чтобы тебе ответить, цени это!

    Могу на фасме дать исходник 00.exe, который
    - рожает из себя файл 01.exe
    - запускает потом 01.exe

    Итак был один файл 00.exe.
    Запустили 00.exe.
    В результате в папке - два файла 00.exe и 01.exe.

    Разберешься?
     
  15. Mountaineer

    Mountaineer New Member

    Публикаций:
    0
    Регистрация:
    28 ноя 2010
    Сообщения:
    125
    мне же не архив нужен а ИСХОДНИК И EXE ПРОГРАММА НА ASSEMBLERE который просто объединяет как то программы

    А вообще что за методы склейки и вставка одного кода в другой?
    Как они работают?
     
  16. Mountaineer

    Mountaineer New Member

    Публикаций:
    0
    Регистрация:
    28 ноя 2010
    Сообщения:
    125
    Не понял =)

    Вы подумали что я злюсь и обижаюсь из-за того, что написал некоторые слова заглавными буквами?
    Сори если это так и если задел вас, просто хотел выделить, что именно нужно =)
     
  17. Mountaineer

    Mountaineer New Member

    Публикаций:
    0
    Регистрация:
    28 ноя 2010
    Сообщения:
    125
    вряд ли, я плохо разбираюсь.
    И нужно же наоборот, который объединяет.
     
  18. _sheva740

    _sheva740 New Member

    Публикаций:
    0
    Регистрация:
    31 авг 2005
    Сообщения:
    1.539
    Адрес:
    Poland
    Ну так в недрах 00.exe как раз и покоится 01.exe.
    До запуска в папке только 00.exe,
    а после запуска 00.exe "породит" еще и 01.exe!

    Исходник 00.exe - тебе могу дать.

    Понял-нет?
     
  19. MSoft

    MSoft New Member

    Публикаций:
    0
    Регистрация:
    16 дек 2006
    Сообщения:
    2.854
    Вобщем, получить хоть какую-то конкретику я не смог. Потому выкладываю сорец, который таки объединяет файлы. Я его не тестил - написал и сразу отдаю. Потойдет он или нет - хз. Под твои условия подходит точно, а что ты там имел ввиду - я хз
    Код (Text):
    1. .586
    2. .Model Flat, STDCALL
    3. option casemap:none
    4. includelib \masm32\include\windows.inc
    5. includelib \masm32\include\kernel32.inc
    6. includelib \masm32\lib\kernel32.lib
    7.  
    8. .data
    9. szFile1         db 'file1.exe',0
    10. szFile2         db 'file2.exe',0
    11. szResult        db 'result.exe',0
    12.  
    13. .code
    14. start proc
    15. LOCAL lhFile1, lhFile2, lhResult: DWORD
    16. LOCAL lsFile1, lsFile2, lsResult: DWORD
    17. LOCAL lmFile1, lmFile2, lmResult: DWORD
    18. LOCAL leFile1, leFile2, leResult: DWORD
    19. LOCAL Tmp: DWORD
    20.  
    21.     int 3
    22.     invoke CreateFile,addr szFile1,GENERIC_READ,FILE_SHARE_READ|FILE_SHARE_WRITE,0,OPEN_EXISTING,0,0
    23.     mov lhFile1,eax
    24.     invoke GetFileSize,lhFile1,0
    25.     mov lsFile1,eax
    26.     invoke GlobalAlloc,GMEM_FIXED,lsFile1
    27.     mov lmFile1,eax
    28.     add eax,lsFile1
    29.     mov leFile1,eax
    30.     invoke ReadFile,lhFile1,lmFile1,lsFile1,addr Tmp,0
    31.  
    32.     hlt
    33.     invoke CreateFile,addr szFile2,GENERIC_READ,FILE_SHARE_READ|FILE_SHARE_WRITE,0,OPEN_EXISTING,0,0
    34.     mov lhFile2,eax
    35.     invoke GetFileSize,lhFile2,0
    36.     mov lsFile2,eax
    37.     invoke GlobalAlloc,GMEM_FIXED,lsFile2
    38.     mov lmFile2,eax
    39.     add eax,lsFile2
    40.     mov leFile2,eax
    41.     invoke ReadFile,lhFile2,lmFile2,lsFile2,addr Tmp,0
    42.    
    43.     retn
    44.     invoke CreateFile,addr szResult,GENERIC_WRITE,0,0,CREATE_NEW,0,0
    45.     mov lhResult,eax
    46.     mov eax,lsFile1
    47.     add eax,lsFile2
    48.     mov lsResult,eax
    49.     add eax,lmResult
    50.     mov leResult,eax
    51.     invoke GlobalAlloc,GMEM_FIXED,lsResult
    52.     mov lmResult,eax
    53.    
    54.     mov esi,lmFile1
    55.     mov edi,lmFile2
    56.     mov ebx,lmResult
    57.    
    58. next:
    59.     cmp esi,leFile1
    60.     jae @F
    61.     mov al,[esi]
    62.     mov [ebx],al
    63.     inc ebx
    64.     inc esi
    65.  
    66. @@: cmp edi,leFile2
    67.     ja @F
    68.     mov al,[edi]
    69.     mov [ebx],al
    70.     inc ebx
    71.     inc edi
    72.    
    73. @@: cmp ebx,leResult
    74.     jb next
    75.    
    76.     invoke WriteFile,lhResult,lmResult,lsResult,addr Tmp,0
    77.     invoke GlobalFree,lmFile1
    78.     invoke GlobalFree,lmFile2
    79.     invoke GlobalFree,lmResult
    80.     invoke CloseHandle,lhFile1
    81.     invoke CloseHandle,lhFile2
    82.     invoke CloseHandle,lhResult
    83.     invoke ExitProcess,0
    84.     ret
    85. start endp
    86. end start
     
  20. max7C4

    max7C4 New Member

    Публикаций:
    0
    Регистрация:
    17 мар 2008
    Сообщения:
    1.203
    короче если не заморачиваться, то Вам скорее всего будет достаточно простого overlay'я. Просто напишите программу, при запуске с параметрам -add file_name или просто file_name дописывает в себя file_name, а при запуске с параметрами -ext file_name/file_id/file_index извлекает из себя файла с именет file_name/идентификатором file_id/порядковым индексом file_index или без параметров для извлечения всех файлов. пример достаточно объемный, чтобы включать его в пост, но если будет время, то пришлю его в личку файлом.