Loader.exe + zzz.exe [%1 %*]

Тема в разделе "WASM.BEGINNERS", создана пользователем Semiono, 21 апр 2009.

  1. Semiono

    Semiono New Member

    Публикаций:
    0
    Регистрация:
    27 ноя 2005
    Сообщения:
    752
    invoke ExitProcess,0
     
  2. twgt

    twgt New Member

    Публикаций:
    0
    Регистрация:
    15 янв 2007
    Сообщения:
    1.494
    Semiono
    Я не полный исходник даю, там всё есть.
    Код (Text):
    1. format PE GUI 4.0
    2. entry start
    3. include '%fasminc%\win32a.inc'
    4.  
    5. section 'data' data readable writeable
    6. lpParameters dd ?
    7. lpOperation db 'open',0
    8. lpFile db 'notepad.exe',0
    9. CurrentDir db 260 dup(?)
    10.  
    11. section 'code' code readable executable
    12. start:
    13.         invoke GetCommandLine
    14.  
    15. ;        cmp byte[eax],'"'
    16. ;        jnz @F
    17. ;        inc eax
    18. ;        jmp .loop_1
    19. ;@@:
    20. ;        cmp byte[eax],' '
    21. ;        jz  .loop
    22. ;        inc eax
    23. ;        jmp @B
    24. ;.loop_1:
    25. ;        cmp byte[eax],'"'
    26. ;        jz .loop1_
    27. ;        inc eax
    28. ;        jnz .loop_1
    29. ;.loop1_:
    30. ;        add eax,2
    31. ;.loop:
    32. ;        inc eax
    33.  
    34.          mov ebx,eax
    35.          invoke lstrlen,eax
    36.          mov ecx,eax
    37.          add eax,ebx
    38.  
    39. @@:
    40.          cmp byte[eax],' '
    41.          jz @F
    42.          dec eax
    43.          loop @B
    44.  
    45. @@:
    46.         mov [lpParameters],eax
    47.         invoke GetCurrentDirectory,260,CurrentDir
    48.  
    49.         invoke ShellExecute,\
    50.         NULL,\
    51.         lpOperation,\
    52.         lpFile,\
    53.         [lpParameters],\
    54.         CurrentDir,\
    55.         SW_SHOWNORMAL
    56. .exit:
    57. invoke ExitProcess,0
    58.  
    59.  
    60.  
    61. section 'idata' import data readable
    62.         library kernel32, 'KERNEL32.DLL',shell32,'shell32.dll'
    63.         include '%fasminc%\api\kernel32.inc'
    64.         include '%fasminc%\api\shell32.inc'
     
  3. Semiono

    Semiono New Member

    Публикаций:
    0
    Регистрация:
    27 ноя 2005
    Сообщения:
    752
    Благодарю! То что в комментах вообще не надо?
     
  4. twgt

    twgt New Member

    Публикаций:
    0
    Регистрация:
    15 янв 2007
    Сообщения:
    1.494
    Semiono
    Думаю нет. Только есть вы введёшь при запуске
    Запустится file3.
    Если надо передать file1 file2 file3, то нужно раскомментировать код, а
    Код (Text):
    1.   mov ebx,eax
    2.          invoke lstrlen,eax
    3.          mov ecx,eax
    4.          add eax,ebx
    5.  
    6. @@:
    7.          cmp byte[eax],' '
    8.          jz @F
    9.          dec eax
    10.          loop @B
    закомментировать.
     
  5. Semiono

    Semiono New Member

    Публикаций:
    0
    Регистрация:
    27 ноя 2005
    Сообщения:
    752
    Ура!
    Будем применять! =)
     
  6. twgt

    twgt New Member

    Публикаций:
    0
    Регистрация:
    15 янв 2007
    Сообщения:
    1.494
    Semiono
    Вообще такой парсинг коммандной строки - дело не очень хорошее. Лучше сделай поиск по форуму слова GetCommandLine и поищи готовый рабочий код :)
     
  7. Semiono

    Semiono New Member

    Публикаций:
    0
    Регистрация:
    27 ноя 2005
    Сообщения:
    752
    invoke GetEnvironmentStrings
    If the function succeeds, the return value is a pointer to the environment block of the current process.
    Это подойдёт чтоб узнать путь откуда бинарь запустился?

    Мне надо как-то путь привинтить сюда, чтоб он абсолютный не был
    invoke CopyFile,lpExistingFileName,lpNewFileName,TRUE

    а так можно типа ..CopyFile, [eax] + '\' + lpExistingFileName, [eax] + '\' + lpNewFileName,TRUE
    ?