ProcessClose("calc.exe")

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

  1. Semiono

    Semiono Member

    Публикаций:
    0
    Регистрация:
    27 ноя 2005
    Сообщения:
    774
    Как это работает?
    AutoIt3 Script:
    ProcessClose("calc.exe") - всего одна строчка!
    Причём, скрипт кампилится в бинарь ProcessClose.exe и исполняется без всякого движка!
    Можно ли на fasm это воспроизвести? Пожалуйста если не трудно в студию? :)
     
  2. Semiono

    Semiono Member

    Публикаций:
    0
    Регистрация:
    27 ноя 2005
    Сообщения:
    774
    ЗЫ Небось по отлавливанию хендлов куча уода будет!...
     
  3. Semiono

    Semiono Member

    Публикаций:
    0
    Регистрация:
    27 ноя 2005
    Сообщения:
    774
    кода, простите будет
     
  4. InsidE

    InsidE Member

    Публикаций:
    0
    Регистрация:
    28 май 2009
    Сообщения:
    357
    Адрес:
    Over the hills and far away...
    Semiono
    а самому посмотреть,в лом?
     
  5. spa

    spa Active Member

    Публикаций:
    0
    Регистрация:
    9 мар 2005
    Сообщения:
    2.240
    пожалуйста если не трудно 200$
     
  6. max7C4

    max7C4 New Member

    Публикаций:
    0
    Регистрация:
    17 мар 2008
    Сообщения:
    1.203
    Semiono
    MSDN, GOOGLE, ...
     
  7. Semiono

    Semiono Member

    Публикаций:
    0
    Регистрация:
    27 ноя 2005
    Сообщения:
    774
    15$ + пиво
    :)
     
  8. Semiono

    Semiono Member

    Публикаций:
    0
    Регистрация:
    27 ноя 2005
    Сообщения:
    774
    у меня в windows taskkill.exe не работает ежели чего, пишет Class not registered... вот такие вот апи :)
     
  9. max7C4

    max7C4 New Member

    Публикаций:
    0
    Регистрация:
    17 мар 2008
    Сообщения:
    1.203
    Semiono
    поздравляю. восстанавливайте реестр. доигрались с чистилками и т.п.
     
  10. Semiono

    Semiono Member

    Публикаций:
    0
    Регистрация:
    27 ноя 2005
    Сообщения:
    774
  11. Semiono

    Semiono Member

    Публикаций:
    0
    Регистрация:
    27 ноя 2005
    Сообщения:
    774
    lpModuleName db 'calc.exe',0

    start:
    invoke GetModuleHandle,lpModuleName
    mov eax,lpModuleName
    invoke ExitProcess,eax
    8)
     
  12. max7C4

    max7C4 New Member

    Публикаций:
    0
    Регистрация:
    17 мар 2008
    Сообщения:
    1.203
    хорошая попытка выйти из программы, но уж больно навороченная
     
  13. max7C4

    max7C4 New Member

    Публикаций:
    0
    Регистрация:
    17 мар 2008
    Сообщения:
    1.203
    1. процесс убивает TerminateProcess, а не ExitProcess.
    2. GetModuleHandle ищет модуль в контексте только текущего процесса.
     
  14. l_inc

    l_inc New Member

    Публикаций:
    0
    Регистрация:
    29 сен 2005
    Сообщения:
    2.566
    Злые Вы все какие-то после пополнения состава модераторов. :)
    Semiono
    Код (Text):
    1. format PE GUI 4.0
    2.  
    3. include 'win32a.inc'
    4.  
    5. TH32CS_SNAPPROCESS                  equ 2
    6. TOKEN_ADJUST_PRIVILEGES             equ 20h
    7. TOKEN_QUERY                         equ 8h
    8. SE_PRIVILEGE_ENABLED                equ 2h
    9.  
    10. struct PROCESSENTRY32
    11.     dwSize                          dd ?
    12.     cntUsage                        dd ?
    13.     th32ProcessID                   dd ?
    14.     th32DefaultHeapID               dd ?
    15.     th32ModuleID                    dd ?
    16.     cntThreads                      dd ?
    17.     th32ParentProcessID             dd ?
    18.     pcPriClassBase                  dd ?
    19.     dwFlags                         dd ?
    20.     szExeFile                       db MAX_PATH dup (?)
    21. ends
    22.  
    23. struct TOKEN_PRIVILEGES
    24.     PrivilegeCount                  dd ?
    25.     LUID1                           dd ?
    26.     LUID2                           dd ?
    27.     Attributes                      dd ?
    28. ends
    29.  
    30. main:
    31.     call AdjustMyToken
    32.     stdcall findProcessID,procName
    33.     invoke OpenProcess,PROCESS_TERMINATE,FALSE,eax
    34.     push eax
    35.         invoke TerminateProcess,eax,1
    36.     invoke CloseHandle
    37. ret
    38.  
    39. AdjustMyToken:
    40.     invoke LookupPrivilegeValue,emptyStr,privName,tokenPriv.LUID1
    41.     mov dword[tokenPriv.PrivilegeCount],1h
    42.     mov dword[tokenPriv.Attributes],SE_PRIVILEGE_ENABLED
    43.     invoke OpenProcessToken,-1,TOKEN_ADJUST_PRIVILEGES OR TOKEN_QUERY,hToken
    44.         invoke AdjustTokenPrivileges,[hToken],FALSE,tokenPriv,0,0,0
    45.     invoke CloseHandle,[hToken]
    46. ret
    47.  
    48. ;takes one parameter through stack: pointer to the process name
    49. findProcessID:
    50.     push ebp
    51.     invoke CreateToolhelp32Snapshot,TH32CS_SNAPPROCESS,0
    52.     mov ebp,eax
    53.     mov dword[procEntry.dwSize],sizeof.PROCESSENTRY32
    54.     invoke Process32First,eax,procEntry
    55.     @@:
    56.         invoke Process32Next,ebp,procEntry
    57.         test eax,eax
    58.         jz @F
    59.         invoke lstrcmpi,procEntry.szExeFile,[esp+8]
    60.         test eax,eax
    61.     jnz @B
    62.     mov eax,dword[procEntry.th32ProcessID]
    63.     @@:
    64.     pop ebp
    65. retn 4
    66.  
    67.  
    68. emptyStr                db '',0
    69. privName                db 'SeDebugPrivilege',0
    70. procName                db 'winlogon.exe',0
    71.  
    72. data import
    73.     library kernel,'kernel32.dll',\
    74.             advapi,'advapi32.dll'
    75.    
    76.     import kernel,\
    77.             OpenProcess,'OpenProcess',\
    78.             TerminateProcess,'TerminateProcess',\
    79.             CloseHandle,'CloseHandle',\
    80.             lstrcmpi,'lstrcmpiA',\
    81.             CreateToolhelp32Snapshot,'CreateToolhelp32Snapshot',\
    82.             Process32First,'Process32First',\
    83.             Process32Next,'Process32Next'
    84.    
    85.     import advapi,\
    86.             OpenProcessToken,'OpenProcessToken',\
    87.             LookupPrivilegeValue,'LookupPrivilegeValueA',\
    88.             AdjustTokenPrivileges,'AdjustTokenPrivileges'
    89. end data
    90.  
    91. align 4
    92. hToken          dd ?
    93. tokenPriv       TOKEN_PRIVILEGES <>
    94. procEntry       PROCESSENTRY32 <>
    P.S. Я бы рекомендовал сперва разобраться в коде. :derisive:
     
  15. Semiono

    Semiono Member

    Публикаций:
    0
    Регистрация:
    27 ноя 2005
    Сообщения:
    774
    ыыы! все злыйе! =) Спасибо!! Конечно разберусь, было бы в чём! Ато сам придумывать я ещё не умею! :)
     
  16. Semiono

    Semiono Member

    Публикаций:
    0
    Регистрация:
    27 ноя 2005
    Сообщения:
    774
    ЗЫ
    procName db 'winlogon.exe',0
    )))
     
  17. Semiono

    Semiono Member

    Публикаций:
    0
    Регистрация:
    27 ноя 2005
    Сообщения:
    774
    Код (Text):
    1. include '%fasm%\win32ax.inc'
    2. ...
    3.                 invoke lstrcmpi,procEntry.szExeFile,[esp+8] ; < Error: operrand size not specified
    win32a.inc < так работает! но почему?
     
  18. l_inc

    l_inc New Member

    Публикаций:
    0
    Регистрация:
    29 сен 2005
    Сообщения:
    2.566
    Semiono
    Потому что win32a.inc раскрывает макрос invoke, используя мнемонику pushd, которая подразумевает, что операнд - двойное слово. А win32ax.inc использует мнемонику push. Соответственно необходимо явно указывать размер операнда:
    Код (Text):
    1. invoke lstrcmpi,procEntry.szExeFile,dword[esp+8]
    P.S. Лучше не использовать win32ax.inc. Макросы там сложнее и допускают больше наворотов, но разворачиваться они могут в довольно неоптимальный грубый код. Поэтому лучше к ним не привыкать.
     
  19. Semiono

    Semiono Member

    Публикаций:
    0
    Регистрация:
    27 ноя 2005
    Сообщения:
    774
    хотел использовать
    Код (Text):
    1. include '%fasm%\api\shell32.inc'
    оказалось там нету CommandLineToArgv
    теперь прицепил
    Код (Text):
    1. include '%fasm%\api\kernel32.inc'
    тоже самое, не исполняется код под наборчег
    Код (Text):
    1. import kernel32,OpenProcess,'OpenProcess',TerminateProcess,'TerminateProcess',\
    2. CloseHandle,'CloseHandle',lstrcmpi,'lstrcmpiW',CreateToolhelp32Snapshot,'CreateToolhelp32Snapshot',\
    3. Process32First,'Process32FirstW',Process32Next,'Process32NextW', GetCommandLine,'GetCommandLineW',\
    4. LocalFree,'LocalFree'
    чему нас тогда учат? в первом классе.. )))
     
  20. cppasm

    cppasm New Member

    Публикаций:
    0
    Регистрация:
    18 июл 2006
    Сообщения:
    923
    Нету такой функции. Есть CommandLineToArgvW.