Помогите не сойти с ума EPROCESS.ImageFileName

Тема в разделе "WASM.WIN32", создана пользователем dead_body, 21 май 2005.

  1. dead_body

    dead_body wasm.ru

    Публикаций:
    0
    Регистрация:
    3 сен 2004
    Сообщения:
    603
    Адрес:
    Украина;г.Харьков;г.Н.Каховка
    Товарищи, не дайте свихнуться пожайлуста.

    Пишу:

    IOCTL_RENAME_PROCESS equ CTL_CODE(FILE_DEVICE_UNKNOWN, 807h, METHOD_BUFFERED,FILE_READ_ACCESS)

    ...

    invoke IoGetCurrentProcess

    mov peProcess,eax

    add eax,ImageNameOffset



    pushad

    invoke DbgPrint,eax;DebugView показует 'Process Explore'

    ;ну ясно там обрезка до 15 символов

    popad



    invoke memcpy,eax,$CTA0("Kobila"),7



    pushad

    mov ecx,peProcess

    add ecx,ImageNameOffset

    invoke DbgPrint,ecx ;DebugView показует 'Kobila' то есть всё Ок.

    popad

    mov status,STATUS_SUCCESS

    ...





    потом жму ctrl+alt+delete и получаю Process Explorer.exe

    это как? притом что недели две назад вроде всё работало.

    Помогите, а то скоро свихнуся сижу не могу понять в чём дело.

    Просто щас айса нету под рукой :dntknw:



    З.Ы.: а где можно достать структуру Eprocess для win200 SP 0,1,2,3,4 ;XP SP 0,1,2 ;win 2003 Server SP???

    то есть для каждого из сервис паков линейки win2000-2003 Server?
     
  2. Ms Rem

    Ms Rem New Member

    Публикаций:
    0
    Регистрация:
    17 апр 2005
    Сообщения:
    1.057
    Адрес:
    С планеты "Земля"
    Встречался я с такой фигней, если просто менять ImageName, то это не всегда работает, так как есть еще SE_AUDIT_PROCESS_CREATION_INFO.ImageFileName (это в XP, в 2000 нет).

    Чтобы корректно сменить имя процесса смотри мою статью "перехват api функций в windows nt (нулевое кольцо)". Там есть код на ассемблере для смены имени процесса под 2000 и XP. Также есть готовая Ring0 библиотека, где это все реализовано.



    Структуры EPROCESS для 2000 и XP смотри в атаче, от сервиспака они не зависят.

    [​IMG] _1906937506__EPROCESS.rar
     
  3. Four-F

    Four-F New Member

    Публикаций:
    0
    Регистрация:
    31 авг 2002
    Сообщения:
    1.237
  4. dead_body

    dead_body wasm.ru

    Публикаций:
    0
    Регистрация:
    3 сен 2004
    Сообщения:
    603
    Адрес:
    Украина;г.Харьков;г.Н.Каховка
    Four-F

    Ms Rem

    oткуда вы выдрали струскутры епроцесс? из каких pdb?





    it is good!

    Как я понял что если я определяю тип винды, то врубаю нужную епроцесс и все данные будут по нужным смещениям?



    Four-F

    можеш кинуть сразу структуру епроцесс для ХР в асмовском формате? а то я в делфийском(или какой приаттачил Ms Rem)

    не сильно понимаю.
     
  5. volodya

    volodya wasm.ru

    Публикаций:
    0
    Регистрация:
    22 апр 2003
    Сообщения:
    1.169
    ntoskrnl.pdb
     
  6. Four-F

    Four-F New Member

    Публикаций:
    0
    Регистрация:
    31 авг 2002
    Сообщения:
    1.237
    dead_body, в последнем KmdKit'е они, кажись, есть, но изволь...

    [​IMG] _506511134__include.rar
     
  7. dead_body

    dead_body wasm.ru

    Публикаций:
    0
    Регистрация:
    3 сен 2004
    Сообщения:
    603
    Адрес:
    Украина;г.Харьков;г.Н.Каховка
    всем огромное спасибо.
     
  8. dead_body

    dead_body wasm.ru

    Публикаций:
    0
    Регистрация:
    3 сен 2004
    Сообщения:
    603
    Адрес:
    Украина;г.Харьков;г.Н.Каховка
    вот, тут значит появилась ну совсем непонятная проблема:


    Код (Text):
    1.    .elseif [edi].Parameters.DeviceIoControl.IoControlCode == IOCTL_RENAME_PROCESS
    2.      mov status,STATUS_INVALID_PARAMETER
    3.      .if [edi].Parameters.DeviceIoControl.InputBufferLength >= 8
    4.       PROCESS_SET_INFORMATION equ 0200h
    5.       mov ecx,PsProcessType
    6.       mov ecx,[ecx]
    7.       mov ecx,[ecx]
    8.       mov eax,[esi].AssociatedIrp.SystemBuffer
    9.       push dword ptr [eax]
    10.       pop peProcess
    11.       invoke ObReferenceObjectByPointer,peProcess,PROCESS_SET_INFORMATION,ecx,UserM ode
    12.       .if eax == STATUS_SUCCESS
    13.        invoke ObDereferenceObject,peProcess
    14.        mov status,STATUS_UNSUCCESSFUL
    15.        mov eax,[esi].AssociatedIrp.SystemBuffer
    16.        mov ecx,peProcess
    17.        add ecx,ImageNameOffset
    18.        invoke memcpy,ecx,dword ptr [eax+4],15
    19.        .if g_dwWinVer == w_XP
    20.          mov ecx,peProcess
    21.          mov ecx,[ecx+01f4h]
    22.          test ecx,ecx
    23.          jz @End
    24.          push ecx
    25.          xor edx,edx
    26.          mov dx,word ptr [ecx]
    27.          push edx
    28.          mov ecx,[ecx+4]
    29.          test edx,edx
    30.          jz @EndP8
    31.          test ecx,ecx
    32.          jz @EndP8
    33.          invoke memcpy,addr buffer_4096,ecx,edx
    34.          lea eax,buffer_4096
    35.          pop ecx
    36.          add eax,ecx
    37.          inc eax
    38. @@:      dec eax
    39.          cmp byte ptr [eax-1],'\'
    40.          jnz @B
    41.          mov word ptr [eax],0
    42.          mov edx,[esi].AssociatedIrp.SystemBuffer
    43.          mov edx,[edx+4]
    44.          lea eax,buffer_4096
    45.          xor ecx,ecx
    46.          dec eax
    47. @@:      inc eax
    48.          cmp word ptr [eax],cx
    49.          jnz @B
    50.          push edx
    51.          dec edx
    52. @@:      inc edx
    53.          cmp byte ptr [edx],cl
    54.          jnz @B
    55.          sub edx,[esp]
    56.          mov ecx,edx
    57.          pop edx
    58.          push ebx
    59. @@:      mov byte ptr [eax],0
    60.          inc eax
    61.          mov bl,byte ptr [edx]
    62.          mov byte ptr [eax],bl
    63.          inc eax
    64.          inc edx
    65.          loop @B
    66.          mov word ptr [eax],0
    67.          pop ebx
    68.          mov edx,[esp]
    69.          invoke RtlInitUnicodeString,edx,addr buffer_4096
    70.          pop edx
    71.          invoke DbgPrint,$CTA0("%ws"),edx
    72.        .endif
    73.          jmp @End
    74. @EndP8:  add esp,8
    75. @End:    mov status,STATUS_SUCCESS
    76.       .endif
    77.      .endif




    этот код, вместо того что бы переименовать прочто урезает имя, но DbgPrint то показует:

    \Device\HarddiskVolume1\radasm\Masm\Projects\Process Explorer\lapux

    а taskmanager показует Proce

    Это вообщето что? меняю уже два поля, может ещё где то надо поменять?