NtCreateProcess

Тема в разделе "WASM.BEGINNERS", создана пользователем Kukulov, 13 янв 2012.

  1. Kukulov

    Kukulov New Member

    Публикаций:
    0
    Регистрация:
    13 янв 2012
    Сообщения:
    9
    Добрый день.
    Уважаемые участники форума, подскажите пожалуйста по работе с апишкой NtCreateProcess.
    Возвращается ошибка c0000033

    Код (Text):
    1. format PE GUI
    2. entry _start
    3. include 'D:\FASM\INCLUDE\win32ax.inc'
    4. include 'D:\FASM\INCLUDE\\encoding\win1251.inc'
    5.  
    6. section '.data' data readable writeable
    7. struct UNICODE_STRING
    8.     Length        dw ?
    9.     MaximumLength    dw ?
    10.     Buffer        dd ?
    11. ends
    12.  
    13. struct OBJECT_ATTRIBUTES
    14.     Length        dd ?
    15.     RootDirectory    dd ?
    16.     ObjectName    dd ?
    17.     Attributes    dd ?
    18.     SD        dd ?
    19.     SQOS        dd ?
    20. ends
    21.  
    22. iosb    dd 2 dup (0)
    23.  
    24. hFile    dd ?
    25. tmpEnd   dd ?
    26. fn    UNICODE_STRING      ?
    27. attr    OBJECT_ATTRIBUTES ?
    28.  
    29. ;FileName dw '\','?','?','\','d',':','\','a','.','e','x','e', 0
    30. FileName dw '\','D','e','v','i','c','e','\','H','a','r','d','d','i','s','k','V','o','l','u','m','e','3','\','a','.','e','x','e', 0
    31. FileNameEnd:
    32.  
    33.  
    34.  
    35. debugRet dd ?
    36. exeptionRet dd ?
    37.  
    38. section '.code' code readable executable
    39. _start:
    40.  
    41. mov [attr.Length],        sizeof.OBJECT_ATTRIBUTES
    42. mov [attr.RootDirectory],    0
    43. mov [attr.ObjectName],        fn
    44. mov [attr.Attributes],        0
    45. mov [attr.SD],            0
    46. mov [attr.SQOS],        0
    47.  
    48. mov [fn.Length], FileNameEnd - FileName - 2
    49. mov [fn.MaximumLength], FileNameEnd - FileName
    50. mov [fn.Buffer], FileName
    51.  
    52. testx:
    53.  
    54. invoke NtCreateProcess,hFile,PROCESS_ALL_ACCESS,attr,-1,0,0,0,0
    55. ret
    56.  
    57. section '.idata' import data readable
    58.  
    59. library ntdll,'ntdll.dll',kernel32,'KERNEL32.DLL'
    60. import    ntdll, NtCreateFile, 'NtCreateFile', NtWriteFile, 'NtWriteFile',NtCreateProcess,'NtCreateProcess'
    61. import  kernel32,GetCurrentProcess,'GetCurrentProcess', WriteFile,'WriteFile',ExitProcess,       'ExitProcess' , GetModuleHandle ,'GetModuleHandleA',strcat,'lstrcat'
     
  2. 984259h

    984259h New Member

    Публикаций:
    0
    Регистрация:
    25 авг 2007
    Сообщения:
    194
    Kukulov
    0xC0000033 STATUS_OBJECT_NAME_INVALID
     
  3. 984259h

    984259h New Member

    Публикаций:
    0
    Регистрация:
    25 авг 2007
    Сообщения:
    194
    в начале строки должно быть
    \??\.....
     
  4. DEEP

    DEEP Андрей

    Публикаций:
    0
    Регистрация:
    27 апр 2008
    Сообщения:
    491
    Адрес:
    г. Владимир
    И ещё:
    не думаю, что двойной слэш здесь уместен.
     
  5. Kukulov

    Kukulov New Member

    Публикаций:
    0
    Регистрация:
    13 янв 2012
    Сообщения:
    9
    это при условии что файил будет в дос виде,т.е. : d:\a.exe, тогда ставится \??\
    но если путь в нативном виде "\Device\Harddiskvolume3\" то \??\ ни к чему.
    так что тут все верно.
    дальше, дело в том что при тех же данных
    fn UNICODE_STRING ?
    attr OBJECT_ATTRIBUTES ?
    NtCreateFile работает отлично, даже точнее, создается файл через NtCreateFile, затем туда пишутся данные, закрывается хендл. всё отлично, но запуск через NtCreateProcess возвращает c0000033 , хотя путь валидный.
    в чем может быть дело ?
     
  6. Malfoy

    Malfoy New Member

    Публикаций:
    0
    Регистрация:
    2 янв 2012
    Сообщения:
    698
    Это имя обьекта, а не имя файла :lol:
    Процесс из секции создаётся.
     
  7. Kukulov

    Kukulov New Member

    Публикаций:
    0
    Регистрация:
    13 янв 2012
    Сообщения:
    9
    Запустить какое то приложение по использую нативный путь как можно?
     
  8. Malfoy

    Malfoy New Member

    Публикаций:
    0
    Регистрация:
    2 янв 2012
    Сообщения:
    698
    RtlCreateUserProcess().