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

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

  1. tex32

    tex32 New Member

    Публикаций:
    0
    Регистрация:
    24 окт 2009
    Сообщения:
    202
    Гы-гы-гы
    А можно и мне тогда, вопрос. Как запустить экрешник, чтобы им можно было управлять. Хочу лоадер и инжект длл, помогите литературой. Пожалуйста.
     
  2. Com[e]r

    Com[e]r Com[e]r

    Публикаций:
    0
    Регистрация:
    20 апр 2007
    Сообщения:
    2.624
    Адрес:
    ого..
    лол, весело тут .))
     
  3. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    Могу предложить два исполнимых в один неисполнимый, но оочень большой. ^)
     
  4. FatMoon

    FatMoon New Member

    Публикаций:
    0
    Регистрация:
    28 ноя 2002
    Сообщения:
    954
    Адрес:
    Russia
    Ну вариант, аналогичный "copy 1.exe + 2.exe 3.exe" слишком прост и для исполняемых не имеет смысла, поэтому не рассматриваю :) Предположим, задание должно иметь смысловую нагрузку, то есть исполняемые файлы должны в итоге какие-то функции выполнять, причем оба.

    ИМХО задача нерешаема в общем случае (2 произвольных исполняемых файла). Почему? потому что не указано, как используется результат. Решаема, если оба файла суть некие линейные программы, выполняемые последовательно. Или файлы суть сервисы, выполняемые одновременно. Поскольку никаких граничных условий не указано, предположу, что ТС неправильно понял задание, и имелось в виду "dual exe", один исполняемый файл для DOS, второй - для Windows, выполняющие схожие функции. То есть надо прилинковать вместо stub'а второй программы первую. То есть кроме "склейки" еще и правка заголовков, в одном - сменить (добавить) указатель на начало PE-header'а, в другом - убрать MZ-stub. Естественно, исполняемые программы должны быть выбраны разумно, а не "возьмем notepad.exe и соединим с iexplore.exe" :))) Главный вопрос: о чем курсовая???
     
  5. Mountaineer

    Mountaineer New Member

    Публикаций:
    0
    Регистрация:
    28 ноя 2010
    Сообщения:
    125
    Com[e]r
    А что?
     
  6. Mountaineer

    Mountaineer New Member

    Публикаций:
    0
    Регистрация:
    28 ноя 2010
    Сообщения:
    125
    Booster
    Почему большой?
     
  7. Mountaineer

    Mountaineer New Member

    Публикаций:
    0
    Регистрация:
    28 ноя 2010
    Сообщения:
    125
    FatMoon
    Объединение exe программ.
    Только это и есть =))
     
  8. _sheva740

    _sheva740 New Member

    Публикаций:
    0
    Регистрация:
    31 авг 2005
    Сообщения:
    1.539
    Адрес:
    Poland
    Mountaineer
    Смех смехом, но ты на консультацию-то пожалуй,
    а то неровен час препод. поймет, что тему дал
    невнятную и прикажет студенту
    Николаю Монтейнеру полученную прожку-то запустить на исполнение!

    Так что будь предусмотрительным.
    Мой тебе совет.
     
  9. KeSqueer

    KeSqueer Сергей

    Публикаций:
    0
    Регистрация:
    19 июл 2007
    Сообщения:
    1.183
    Адрес:
    Москва
    _sheva740
    Ага
    Отмазы типа "а мне не говорили" не катят :)
     
  10. Mountaineer

    Mountaineer New Member

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

    Mountaineer New Member

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

    Mountaineer New Member

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

    Сможете объяснить программу ?
     
  13. Mountaineer

    Mountaineer New Member

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

    Надеюсь покатит )))
     
  14. _sheva740

    _sheva740 New Member

    Публикаций:
    0
    Регистрация:
    31 авг 2005
    Сообщения:
    1.539
    Адрес:
    Poland
    Тебе или преподу?
     
  15. Mountaineer

    Mountaineer New Member

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

    _sheva740 New Member

    Публикаций:
    0
    Регистрация:
    31 авг 2005
    Сообщения:
    1.539
    Адрес:
    Poland
    Ну вот
    Код (Text):
    1. .586
    2. .model flat, stdcall
    3. option casemap :none
    4. include \masm32\include\windows.inc
    5. include \masm32\include\masm32.inc
    6. include \masm32\include\kernel32.inc
    7. include \masm32\include\ws2_32.inc
    8. include \masm32\include\user32.inc
    9. includelib \masm32\lib\masm32.lib
    10. includelib \masm32\lib\kernel32.lib
    11. includelib \masm32\lib\ws2_32.lib
    12. includelib \masm32\lib\user32.lib
    13.  
    14.  
    15. .data
    16. szFile1            db 'file1.exe',0 ; - имя первого склеиваемого файла
    17. szFile2            db 'file2.exe',0 ; - имя второго склеиваемого файла
    18. szResult        db 'result.exe',0   ; - имя файла в котором склеены первый и второй
    19.  
    20. .code
    21. start proc
    22. LOCAL lhFile1, lhFile2, lhResult: DWORD
    23. LOCAL lsFile1, lsFile2, lsResult: DWORD
    24. LOCAL lmFile1, lmFile2, lmResult: DWORD
    25. LOCAL leFile1, leFile2, leResult: DWORD
    26. LOCAL Tmp: DWORD
    27.  
    28. ; Открываем для чтения первый файл
    29.     invoke CreateFile,addr szFile1,GENERIC_READ,FILE_SHARE_READ or FILE_SHARE_WRITE,0,OPEN_EXISTING,0,0
    30. ; Сохраняем его хендл в переменной  lhFile1
    31.     mov lhFile1,eax
    32. ; Найдем размер первого файла
    33.     invoke GetFileSize,lhFile1,0
    34. ; Сохраним размер в переменной lsFile1
    35.     mov lsFile1,eax
    36. ; Закажем память объемом lsFile1
    37.     invoke GlobalAlloc,GMEM_FIXED,lsFile1
    38. ; Сохраним указатель на первый байт этой памяти в переменной lmFile1
    39.     mov lmFile1,eax
    40. ; Добавим к адресу выделенной памяти размер первого файла
    41.     add eax,lsFile1
    42. ; Сохраним этот адрес в переменной leFile1
    43.     mov leFile1,eax
    44. ; Прочитаем первый файл в выделенную память
    45.     invoke ReadFile,lhFile1,lmFile1,lsFile1,addr Tmp,0
    46.  
    47. ; То же самое но теперь для второго файла
    48. ; Все результаты в свои переменные соответственно
    49. ; Тут по аналогии сам разберись
    50.     invoke CreateFile,addr szFile2,GENERIC_READ,FILE_SHARE_READ or FILE_SHARE_WRITE,0,OPEN_EXISTING,0,0
    51.     mov lhFile2,eax
    52.     invoke GetFileSize,lhFile2,0
    53.     mov lsFile2,eax
    54.     invoke GlobalAlloc,GMEM_FIXED,lsFile2
    55.     mov lmFile2,eax
    56.     add eax,lsFile2
    57.     mov leFile2,eax
    58.     invoke ReadFile,lhFile2,lmFile2,lsFile2,addr Tmp,0
    59.    
    60. ;  Создаем для записи файл результата первый файл  
    61.     invoke CreateFile,addr szResult,GENERIC_WRITE,0,0,CREATE_NEW,0,0
    62. ; Прячем его хендл в переменную lhResult
    63.     mov lhResult,eax
    64. ; Определяем размер файла-результата
    65.     mov eax,lsFile1 ; В EAX <- Размер первого файла
    66.     add eax,lsFile2 ; EAX = EAX+Размер второго файла
    67.     mov lsResult,eax ; Все это прячем в переменную lsResult
    68.     add eax,lmResult ; В EAX <- Размер первого файла
    69.     mov leResult,eax ; ????
    70. ; Выделим память объемом = сумме объемов первого + второго файла
    71.     invoke GlobalAlloc,GMEM_FIXED,lsResult
    72. ; Полученный адрес сохраним в перем. lmResult
    73.     mov lmResult,eax
    74.  
    75. ; Начинаем перенос из памяти выделенной под чтение
    76. ; первого файла в память результата
    77.    
    78.     mov esi,lmFile1
    79.     mov edi,lmFile2
    80.     mov ebx,lmResult
    81.    
    82. next:
    83.     cmp esi,leFile1
    84.     jae @F
    85.     mov al,[esi]
    86.     mov [ebx],al
    87.     inc ebx
    88.     inc esi
    89. ; Продолжаем перенос из памяти выделенной под чтение
    90. ; второго файла в память результата
    91. @@:    cmp edi,leFile2
    92.     ja @F
    93.     mov al,[edi]
    94.     mov [ebx],al
    95.     inc ebx
    96.     inc edi
    97.    
    98. @@:    cmp ebx,leResult
    99.     jb next
    100. ; Записываем из наполненной памяти с результатом в файл результата
    101.     invoke WriteFile,lhResult,lmResult,lsResult,addr Tmp,0
    102. ; Освобождаем все участки памяти и заказанные переменные
    103.     invoke GlobalFree,lmFile1
    104.     invoke GlobalFree,lmFile2
    105.     invoke GlobalFree,lmResult
    106.     invoke CloseHandle,lhFile1
    107.     invoke CloseHandle,lhFile2
    108.     invoke CloseHandle,lhResult
    109. ; Выход!
    110.     invoke ExitProcess,0
    111.     ret
    112. start endp
    113. end start
     
  17. Mountaineer

    Mountaineer New Member

    Публикаций:
    0
    Регистрация:
    28 ноя 2010
    Сообщения:
    125
    _sheva740
    А книжки по тасм32 есть?
    И сильна ли разница между тасм32ом и масмом ?
     
  18. Mountaineer

    Mountaineer New Member

    Публикаций:
    0
    Регистрация:
    28 ноя 2010
    Сообщения:
    125
    Как я раньше говорил мы пользуемся компилятором масм...
     
  19. _sheva740

    _sheva740 New Member

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

    Разницы практически и нет!
     
  20. Mountaineer

    Mountaineer New Member

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

    В том то и дело, что не особо знаю, а в этой программе даже некоторые команду не припомню.