у кого есть описание\параметры ZwCreateUserProcess ?

Тема в разделе "WASM.RESEARCH", создана пользователем dead_body, 9 июл 2007.

  1. dead_body

    dead_body wasm.ru

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

    Прогуглился , прояндексился,прорамблелился - 0.
     
  2. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    у кетайчегов есть немного.
    http://bbs.driverdevelop.com/simple/index.php?t98480.html
    Здесь его хук, правда только один параметр арсписан.
    http://sourceforge.net/project/showfiles.php?group_id=122629
     
  3. tylerdurden

    tylerdurden New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2004
    Сообщения:
    322
    Я сам нарыл, все что надо, ClientID и проч.
    DWORD newNtCreateUserProcess(PVOID pvP1,PVOID pvP2,PVOID pvP3,PVOID pvP4,PVOID pvP5,PVOID pvP6,PVOID pvP7,PVOID pvP8,PVOID pvP9,PVOID pvP10,PPROCESS_UNKNOWN ppuUnknown)

    typedef struct{
    ULONG Length;
    ULONG Unknown1;
    ULONG Unknown2;
    PWSTR pwsImageFileName;
    ULONG Unknown4;
    ULONG Unknown5;
    ULONG Unknown6;
    PCLIENT_ID pcidClient;
    ULONG Unknown8;
    ULONG Unknown9;
    ULONG Unknown10;
    ULONG Unknown11;
    ULONG Unknown12;
    ULONG Unknown13;
    ULONG Unknown14;
    ULONG Unknown15;
    ULONG Unknown16;
    }PROCESS_UNKNOWN, *PPROCESS_UNKNOWN;
     
  4. dead_body

    dead_body wasm.ru

    Публикаций:
    0
    Регистрация:
    3 сен 2004
    Сообщения:
    603
    Адрес:
    Украина;г.Харьков;г.Н.Каховка
    что то я вьехать немогу...
    китайцы пишут:
    Код (Text):
    1. NTSTATUS NTAPI NtCreateUserProcess(
    2.    PHANDLE ProcessHandle,
    3.    ULONG_PTR Parameter1,
    4.    ULONG_PTR Parameter2,
    5.    ULONG_PTR Parameter3,
    6.    ULONG_PTR ProcessSecurityDescriptor,
    7.    ULONG_PTR ThreadSecurityDescriptor,
    8.    ULONG_PTR Parameter6,
    9.    ULONG_PTR Parameter7,
    10.    PRTL_USER_PROCESS_PARAMETERS ProcessParameters,
    11.    ULONG_PTR Parameter9,
    12.    ULONG_PTR Parameter10
    13.    );
    11 входных параметров.

    Из той проги, что n0name дал ссылку:
    Код (Text):
    1. NTSTATUS Hook_NtCreateUserProcess (PHANDLE ProcessHandle, PVOID arg2, PVOID arg3, PVOID arg4,  PVOID arg5, PVOID arg6, PVOID arg7, PVOID arg8,  PVOID arg9, PVOID arg10, PVOID arg11, PVOID arg12)
    12 параметров.

    tylerdurden
    17? параметров?

    теперь смотрю в отладчике:
    Код (Text):
    1. retn 2Ch
    2C\4 = B насколько я помню.
    то есть 11 параметров.

    *пошел курить проблему*
     
  5. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    угу, мне тоже кажется что параметров 11.
     
  6. dead_body

    dead_body wasm.ru

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

    Vova_B New Member

    Публикаций:
    0
    Регистрация:
    27 май 2008
    Сообщения:
    1
    ну и что? кто ещё что нарыл? что тема умерла?
     
  8. dead_body

    dead_body wasm.ru

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

    sambd New Member

    Публикаций:
    0
    Регистрация:
    14 дек 2007
    Сообщения:
    60
    Никто случайно не разобрался с этой ф-цией?
    да и вообще виста не совсем правильная ось ... сделали блин все через одно место)))
     
  10. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    6.0.6000.16386, такого сервиса нет.
    6.1.6801.0, тоже нет. Где вы его нашли вобще ???
     
  11. _basmp_

    _basmp_ New Member

    Публикаций:
    0
    Регистрация:
    10 июл 2005
    Сообщения:
    2.939
    Clerk
    vista ntdll. 11 параметров. номер 17fh.
     
  12. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    _basmp_
    Ага точно, чегото я мошинально в ядре смотрел :lol:
     
  13. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    Вобщем RtlCreateUserProcess() юзает неэкспортируемую процедуру(пусть будет RtlCreateUserProcessEx), на которую две ссылки в ntdll из RtlCreateUserProcess() и RtlCloneUserProcess(). Первая известна. Прототип RtlCreateUserProcessEx:
    Код (Text):
    1. NTSTATUS
    2. RtlCreateUserProcessEx(
    3.     IN PUNICODE_STRING ImagePath OPTIONAL,
    4.     IN OUT PRTL_USER_PROCESS_PARAMETERS ProcessParameters OPTIONAL,
    5.     IN PSECURITY_DESCRIPTOR ProcessSecurityDescriptor OPTIONAL,
    6.     IN PSECURITY_DESCRIPTOR ThreadSecurityDescriptor OPTIONAL,
    7.     IN HANDLE ParentProcess OPTIONAL,
    8.     IN ULONG InheritHandle, ;Original "IN BOOLEAN InheritHandle"
    9.     IN BOOLEAN Unknown1,    ;1, ???
    10.     IN HANDLE DebugPort OPTIONAL,
    11.     IN HANDLE ExceptionPort OPTIONAL,
    12.     OUT PRTL_USER_PROCESS_INFORMATION ProcessInformation
    13.     );
    В этой функции копируются параметры и вызывается сервис.
    В ядре RVA_NtCreateUserProcess(6.0.6000.16386) = 0x210E79, большой кодес, без живого ядра долго реверсить придётсо, ну его..
    Видимо первый параметр - указатель на структуру, ту которая передаётся в RtlCreateUserProcess(), но без первого поля:
    Код (Text):
    1. RTL_USER_PROCESS_INFORMATION2 struct
    2. Process         HANDLE <>
    3. Thread          HANDLE <>
    4. ClientId        CLIENT_ID <>
    5. ImageInformation    SECTION_IMAGE_INFORMATION <>
    6. RTL_USER_PROCESS_INFORMATION2 ends
    sambd
    Удачи..
     
  14. sambd

    sambd New Member

    Публикаций:
    0
    Регистрация:
    14 дек 2007
    Сообщения:
    60
    угу пасиба .. буду реверсить, у них скоко ритуальных приседай при создании процеса что просто п***ц ...
    Ушел дебажыть ....
     
  15. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    Неприсидай потом, короче хз что, я и сам не понялд
     
  16. sambd

    sambd New Member

    Публикаций:
    0
    Регистрация:
    14 дек 2007
    Сообщения:
    60
    Код (Text):
    1. так теперь более новее))
    2.  
    3. signed int __cdecl NtCreateUserProcess(PHANDLE hProcess, unsigned int a2, int a3, int a4, int a5, int a6, int a7, int a8, RTL_USER_PROCESS_PARAMETERS *lpvUserProcessParameters, int a10, int a11)
    4. {
    5.   char v11; // dl@1
    6.   int Param5; // ebx@1
    7.   int v13; // esi@1
    8.   int _hProcess; // eax@4
    9.   int v15; // ecx@6
    10.   int v16; // ebx@13
    11.   int v17; // ebx@14
    12.   signed int v18; // edi@17
    13.   signed int result; // eax@20
    14.   signed int v20; // ebx@25
    15.   signed int v21; // ST2C_4@38
    16.   int *v22; // ST30_4@38
    17.   int v23; // ST34_4@38
    18.   signed int current_eprocess3; // edi@54
    19.   signed int v25; // ebx@69
    20.   signed int v26; // eax@71
    21.   int v28; // eax@105
    22.   int cureenet_eprocess; // eax@1
    23.   signed int v30; // eax@25
    24.   NTSTATUS v31_status; // eax@27
    25.   NTSTATUS v32_status; // eax@34
    26.   NTSTATUS v33_status; // eax@40
    27.   NTSTATUS _section_result; // eax@42
    28.   NTSTATUS Ob_result; // eax@44
    29.   signed int v36; // eax@52
    30.   signed int v37; // eax@64
    31.   int v38; // eax@66
    32.   signed int v39; // eax@81
    33.   PHANDLE hProcess; // [sp+11Ch] [bp-47Ch]@1
    34.   unsigned int Param2; // [sp+128h] [bp-470h]@1
    35.   int Param5_1; // [sp+110h] [bp-488h]@1
    36.   int Param6; // [sp+108h] [bp-490h]@1
    37.   RTL_USER_PROCESS_PARAMETERS *ProcessParameters; // [sp+130h] [bp-468h]@1
    38.   int Param10; // [sp+F8h] [bp-4A0h]@1
    39.   int _some_struct; // [sp+12Ch] [bp-46Ch]@1
    40.   int v53; // [sp+10h] [bp-588h]@1
    41.   int v54; // [sp+14h] [bp-584h]@1
    42.   int v55; // [sp+18h] [bp-580h]@1
    43.   int v56; // [sp+1Ch] [bp-57Ch]@1
    44.   int v57; // [sp+20h] [bp-578h]@1
    45.   int v58; // [sp+150h] [bp-448h]@1
    46.   char v59; // [sp+154h] [bp-444h]@1
    47.   signed int current_eprocess2; // [sp+144h] [bp-454h]@1
    48.   int var_eprocess; // [sp+13Ch] [bp-45Ch]@1
    49.   int hProcessNew; // [sp+148h] [bp-450h]@1
    50.   int v63; // [sp+570h] [bp-28h]@3
    51.   char v64; // [sp+574h] [bp-24h]@3
    52.   CPPEH_RECORD ms_exc; // [sp+580h] [bp-18h]@3
    53.   int a13; // [sp+140h] [bp-458h]@17
    54.   int a3; // [sp+2Ch] [bp-56Ch]@21
    55.   HANDLE Handle; // [sp+74h] [bp-524h]@27
    56.   PVOID Object; // [sp+118h] [bp-480h]@27
    57.   int hObject; // [sp+138h] [bp-460h]@27
    58.   PVOID v71; // [sp+78h] [bp-520h]@28
    59.   char v72; // [sp+31h] [bp-567h]@30 //712 bytes allacate from stak
    60.   OBJECT_ATTRIBUTES ObjectAttributes; // [sp+E0h] [bp-4B8h]@34
    61.   char ObjectName_cmd_line; // [sp+ACh] [bp-4ECh]@34
    62.   HANDLE FileHandle; // [sp+88h] [bp-510h]@34
    63.   int DesiredAccess; // [sp+84h] [bp-514h]@34
    64.   struct _IO_STATUS_BLOCK IoStatusBlock; // [sp+24h] [bp-574h]@34
    65.   int v78; // [sp+104h] [bp-494h]@40
    66.   int v79; // [sp+8Ch] [bp-50Ch]@40
    67.   HANDLE SectionHandle; // [sp+90h] [bp-508h]@42
    68.   int SectionHandleObject; // [sp+FCh] [bp-49Ch]@44
    69.   int SectionHandleObject1; // [sp+98h] [bp-500h]@44
    70.   unsigned __int8 v83; // [sp+30h] [bp-568h]@51
    71.   char v84; // [sp+137h] [bp-461h]@54
    72.   signed int v85; // [sp+200h] [bp-398h]@65
    73.   void *v86; // [sp+80h] [bp-518h]@66
    74.   int v87; // [sp+10Ch] [bp-48Ch]@66
    75.   int hSourceProcess; // [sp+14Ch] [bp-44Ch]@66
    76.   int v89; // [sp+44h] [bp-554h]@68
    77.   int v90; // [sp+4Ch] [bp-54Ch]@69
    78.   int v91; // [sp+124h] [bp-474h]@81
    79.   int v92; // [sp+48h] [bp-550h]@81
    80.   int a9; // [sp+50h] [bp-548h]@81
    81.   int a12; // [sp+120h] [bp-478h]@81
    82.   int a14; // [sp+41Ch] [bp-17Ch]@81
    83.   void *v96; // [sp+7Ch] [bp-51Ch]@98
    84.   int v97; // [sp+4CCh] [bp-CCh]@98
    85.   int v98; // [sp+38h] [bp-560h]@98
    86.   int v99; // [sp+34h] [bp-564h]@98
    87.   void *v100; // [sp+3Ch] [bp-55Ch]@106
    88.   void *hNewProcessHandle; // [sp+578h] [bp-20h]@108
    89.   int v102; // [sp+4C8h] [bp-D0h]@108
    90.  
    91.   hProcess = hProcess;
    92.   Param2 = a2;
    93.   Param5 = a5;
    94.   Param5_1 = a5;
    95.   Param6 = a6;
    96.   ProcessParameters = lpvUserProcessParameters;
    97.   Param10 = a10;
    98.   _some_struct = a11;
    99.   v13 = 0;
    100.   v53 = 0;
    101.   v54 = 0;
    102.   v55 = 0;
    103.   v56 = 0;
    104.   v57 = 0;
    105.   v58 = 0;
    106.   memset(&v59, 0, 712);
    107.   cureenet_eprocess = *MK_FP(__FS__, 292);
    108.   current_eprocess2 = *MK_FP(__FS__, 292);
    109.   var_eprocess = *(_DWORD *)(cureenet_eprocess + 72);
    110.   v11 = *(_BYTE *)(cureenet_eprocess + 231);
    111.   LOBYTE(hProcessNew) = *(_BYTE *)(cureenet_eprocess + 231);
    112.   if ( a7 & 0xFFFFFF38 || a8 & 0xFFFFFFFE )
    113.   {
    114.     result = 0xC000000Du;
    115.   }
    116.   else
    117.   {
    118.     v63 = 0;
    119.     v64 = v11;
    120.     ms_exc.disabled = 0;
    121.     if ( v11 )
    122.     {
    123.       _hProcess = (int)hProcess;
    124.       if ( (unsigned int)hProcess >= MmUserProbeAddress )
    125.         _hProcess = MmUserProbeAddress;
    126.       *(_DWORD *)_hProcess = *(_DWORD *)_hProcess;
    127.       v15 = Param2;
    128.       if ( Param2 >= MmUserProbeAddress )
    129.         v15 = MmUserProbeAddress;
    130.       *(_DWORD *)v15 = *(_DWORD *)v15;
    131.     }
    132.     if ( Param5 )
    133.     {
    134.       if ( v11 )
    135.       {
    136.         if ( Param5 & 3 )
    137.         {
    138.           ExRaiseDatatypeMisalignment();
    139.           __asm { int     3               ; Trap to Debugger }
    140.         }
    141.       }
    142.       v16 = *(_DWORD *)(Param5 + 12);
    143.       if ( v11 )
    144.         v17 = v16 & 0x5F2;
    145.       else
    146.         v17 = v16 & 0x107F2;
    147.       v63 = v17;
    148.     }
    149.     ms_exc.disabled = -2;
    150.     a13 = a7 & 0x40;
    151.     v18 = 2048;
    152.     if ( !(a7 & 0x40) && *(_DWORD *)(var_eprocess + 548) & 0x800 && v11 )
    153.       return 0xC00000F5u;
    154.     memset(&a3, 0, 180);
    155.     if ( !_some_struct || (result = sub_600827((int *)_some_struct, hProcessNew, 0, (int)&a3), result >= 0) )
    156.     {
    157.       if ( a3 & 0x800 && !(a7 & 4) )
    158.         goto LABEL_114;
    159.       v30 = sub_5CB95B(hProcessNew, &a3);
    160.       v20 = v30;
    161.       if ( v30 >= 0 )
    162.       {
    163.         if ( !(a3 & 1) )
    164.         {
    165.           hObject = var_eprocess;
    166.           goto LABEL_30;
    167.         }
    168.         v31_status = ObReferenceObjectByHandle(Handle, 0x80u, PsProcessType, hProcessNew, &Object, 0);
    169.         hObject = (int)Object;
    170.         v20 = v31_status;
    171.         if ( v31_status >= 0 )
    172.         {
    173.           v71 = Object;
    174. LABEL_30:
    175.           if ( (v72 & 0xC) != 4 || hObject == var_eprocess && var_eprocess != PsInitialSystemProcess )
    176.           {
    177.             if ( a3 & 0x20 )
    178.             {
    179.               ObjectAttributes.Length = 24;
    180.               ObjectAttributes.RootDirectory = 0;
    181.               ObjectAttributes.Attributes = ((-((_BYTE)hProcessNew != 1) & 0xFFFFFC00) + 1024) | 0x240;
    182.               ObjectAttributes.ObjectName = (PUNICODE_STRING)&ObjectName_cmd_line;
    183.               ObjectAttributes.SecurityDescriptor = 0;
    184.               ObjectAttributes.SecurityQualityOfService = 0;
    185.               v32_status = ZwOpenFile(
    186.                              &FileHandle,
    187.                              DesiredAccess | 0x100020,
    188.                              &ObjectAttributes,
    189.                              &IoStatusBlock,
    190.                              5u,
    191.                              0x60u);
    192.               v20 = v32_status;
    193.               if ( v32_status < 0 )
    194.               {
    195.                 if ( DesiredAccess )
    196.                   v20 = ZwOpenFile(&FileHandle, 0x100020u, &ObjectAttributes, &IoStatusBlock, 5u, 0x60u);
    197.                 if ( v20 < 0 )
    198.                 {
    199.                   FileHandle = 0;
    200.                   v23 = 0;
    201.                   v22 = &a3;
    202.                   v21 = 1;
    203. LABEL_39:
    204.                   sub_5C95AF(v21, v22, v23);
    205.                   goto LABEL_115;
    206.                 }
    207.               }
    208.               v33_status = ObReferenceObjectByHandle(FileHandle, 0x100020u, IoFileObjectType, 0, (PVOID *)&v78, 0);
    209.               v79 = v78;
    210.               v20 = v33_status;
    211.               if ( v33_status < 0 )
    212.               {
    213.                 v79 = 0;
    214.                 goto LABEL_115;
    215.               }
    216.               ObjectAttributes.ObjectName = 0;
    217.               _section_result = ZwCreateSection(
    218.                                   &SectionHandle,
    219.                                   0xF001Fu,
    220.                                   &ObjectAttributes,
    221.                                   0,
    222.                                   0x10u,
    223.                                   (-(a13 != 0) & 0x1000000) + 0x1000000,
    224.                                   FileHandle);
    225.               v20 = _section_result;
    226.               v23 = 0;
    227.               if ( _section_result < 0 )
    228.               {
    229.                 SectionHandle = 0;
    230.                 v22 = &a3;
    231.                 v21 = 2;
    232.                 goto LABEL_39;
    233.               }
    234.               Ob_result = ObReferenceObjectByHandle(
    235.                             SectionHandle,
    236.                             8u,
    237.                             MmSectionObjectType,
    238.                             0,
    239.                             (PVOID *)&SectionHandleObject,
    240.                             0);
    241.               SectionHandleObject1 = SectionHandleObject;
    242.               v20 = Ob_result;
    243.               if ( Ob_result < 0 )
    244.               {
    245.                 SectionHandleObject1 = 0;
    246.                 goto LABEL_115;
    247.               }
    248.               v18 = 2048;
    249.             }
    250.             if ( SectionHandleObject1 )
    251.             {
    252.               if ( !(v18 & *(_DWORD *)(var_eprocess + 548)) )
    253.               {
    254.                 if ( a13 )
    255.                 {
    256.                   if ( (_BYTE)hProcessNew )
    257.                     v83 |= 8u;
    258.                 }
    259.               }
    260.               v36 = sub_5C9A13(hProcessNew, ProcessParameters, (int)&a3);
    261.               v20 = v36;
    262.               if ( v36 < 0 )
    263.               {
    264.                 v83 &= 0xFDu;
    265.                 goto LABEL_115;
    266.               }
    267.               a13 = (int)&v84;
    268.               current_eprocess3 = current_eprocess2;
    269. LABEL_66:
    270.               v38 = sub_5C6A0D(
    271.                       hObject,
    272.                       hProcessNew,
    273.                       Param5_1,
    274.                       SectionHandleObject1,
    275.                       v86,
    276.                       a7,
    277.                       (int)&a3,
    278.                       (int)&v87,
    279.                       (int)&hSourceProcess);
    280.               v20 = v38;
    281.               if ( v38 >= 0 )
    282.               {
    283.                 if ( SectionHandleObject1 )
    284.                   sub_5FFE52(v89, *(_DWORD *)(hSourceProcess + 392));
    285.                 ObfReferenceObject(hSourceProcess);
    286.                 v25 = v90;
    287.                 if ( (unsigned int)v90 < 0x40000 )
    288.                   v25 = 262144;
    289.                 current_eprocess2 = 0;
    290.                 v26 = 0;
    291.                 if ( a8 & 1 )
    292.                   v26 = 1;
    293.                 if ( a8 & 2 )
    294.                   v26 |= 2u;
    295.                 if ( a8 & 4 )
    296.                   v26 |= 4u;
    297.                 if ( a8 & 8 )
    298.                   v26 |= 8u;
    299.                 if ( v87 )
    300.                 {
    301.                   current_eprocess2 = 2;
    302.                   v26 |= 0x20u;
    303.                 }
    304.                 v91 = v26 | 0x10;
    305.                 v39 = PspCreateThread_5fee32(
    306.                         hSourceProcess,
    307.                         (POBJECT_ATTRIBUTES)Param6,
    308.                         hProcessNew,
    309.                         (int)&v58,
    310.                         (int)&v53,
    311.                         0,
    312.                         0,
    313.                         v92,
    314.                         a9,
    315.                         v25,
    316.                         (int)&v91,
    317.                         (int)&a12,
    318.                         a13,
    319.                         (int)&a14);
    320.                 v20 = v39;
    321.                 if ( v39 >= 0 )
    322.                 {
    323.                   if ( (_BYTE)hProcessNew == 1 )
    324.                   {
    325.                     if ( !(*(_DWORD *)(var_eprocess + 548) & 0x800) )
    326.                     {
    327.                       if ( *(_DWORD *)(hSourceProcess + 548) & 0x800 )
    328.                       {
    329.                         if ( a3 & 0x2000000 )
    330.                           a3 = a3 & 0xFDFFFFFF | 0x101801;
    331.                         if ( a4 & 0x2000000 )
    332.                           a4 = a4 & 0xFDFFFFFF | 0x100C02;
    333.                       }
    334.                     }
    335.                   }
    336.                   current_eprocess2 = sub_5C7E82(hObject, a3, a7, 0, v96, current_eprocess2, (int)&v97);
    337.                   v20 = sub_5FF71B(a12, hSourceProcess, (int)&v53, (int)&v91, a4, a13, (int)&a3, (int)&a14, v98, v99);
    338.                   ++*(_WORD *)(current_eprocess3 + 128);
    339.                   if ( !*(_WORD *)(current_eprocess3 + 128) )
    340.                   {
    341.                     if ( *(_DWORD *)(current_eprocess3 + 56) != current_eprocess3 + 56 )
    342.                     {
    343.                       if ( !*(_WORD *)(current_eprocess3 + 130) )
    344.                         KiCheckForKernelApcDelivery();
    345.                     }
    346.                   }
    347.                   if ( current_eprocess2 >= 0 )
    348.                   {
    349.                     if ( v20 >= 0 )
    350.                     {
    351.                       v28 = sub_5FFDC8(hSourceProcess, PsProcessType);
    352.                       v20 = v28;
    353.                       if ( v28 >= 0 )
    354.                       {
    355.                         if ( v100 )
    356.                         {
    357.                           memcpy(v100, &v89, 0x30u);
    358.                           v13 = 0;
    359.                         }
    360.                         *hProcess = hNewProcessHandle;
    361.                         *(_DWORD *)Param2 = v102;
    362.                         ms_exc.disabled = -2;
    363.                         if ( v28 >= v13 )
    364.                           v20 = sub_5C95AF(6, &a3, hSourceProcess);
    365.                       }
    366.                     }
    367.                     SeDeleteAccessState(&v97);
    368.                     if ( v20 < v13 )
    369.                       sub_694D71(v20);
    370.                   }
    371.                   else
    372.                   {
    373.                     sub_694B1C();
    374.                     v20 = current_eprocess2;
    375.                   }
    376.                   ObfDereferenceObject(a12);
    377.                 }
    378.                 else
    379.                 {
    380.                   _EAX = -1;
    381.                   _EDX = hSourceProcess + 128;
    382.                   __asm { lock xadd [edx], eax }
    383.                   if ( _EAX & 2 )
    384.                   {
    385.                     if ( !(_EAX & 4) )
    386.                       ExfTryToWakePushLock();
    387.                   }
    388.                   ++*(_WORD *)(current_eprocess3 + 128);
    389.                   if ( !*(_WORD *)(current_eprocess3 + 128) )
    390.                   {
    391.                     if ( *(_DWORD *)(current_eprocess3 + 56) != current_eprocess3 + 56 )
    392.                     {
    393.                       if ( !*(_WORD *)(current_eprocess3 + 130) )
    394.                         KiCheckForKernelApcDelivery();
    395.                     }
    396.                   }
    397.                   if ( *(_DWORD *)(hSourceProcess + 220) )
    398.                     sub_694B1C();
    399.                 }
    400.                 ObfDereferenceObject(hSourceProcess);
    401.               }
    402.               goto LABEL_115;
    403.             }
    404.             if ( hObject == var_eprocess
    405.               && (_BYTE)hProcessNew
    406.               && !ProcessParameters
    407.               && !(v72 & 0xC)
    408.               && !(a3 & 0x80)
    409.               && !(v83 & 0x10) )
    410.             {
    411.               v83 &= 0xFDu;
    412.               if ( !(v18 & *(_DWORD *)(hObject + 548)) && a13 )
    413.               {
    414.                 v20 = 0xC0000022u;
    415.                 goto LABEL_115;
    416.               }
    417.               v58 = 65559;
    418.               current_eprocess3 = current_eprocess2;
    419.               v37 = sub_5FFEAE(current_eprocess2, (int)&v58, 0, 1, 1);
    420.               v20 = v37;
    421.               if ( v37 < 0 )
    422.                 goto LABEL_115;
    423.               v85 = 297;
    424.               a13 = 0;
    425.               goto LABEL_66;
    426.             }
    427.           }
    428. LABEL_114:
    429.           v20 = 0xC000000Du;
    430.           goto LABEL_115;
    431.         }
    432.       }
    433. LABEL_115:
    434.       sub_600E14((int)&a3);
    435.       return v20;
    436.     }
    437.   }
    438.   return result;
    439. }
    вот пока что нарыто с помощью ИДЫ и хрени к ней)))
    нрод нужна помощь, смогу залить .idc ядра версия
    Код (Text):
    1. Windows Server 2008 Kernel Version 6001 (Service Pack 1) MP (1 procs) Free x86 compatible
    2. Product: WinNt, suite: TerminalServer SingleUserTS
    3. Built by: 6001.18000.x86fre.longhorn_rtm.080118-1840
    4. Kernel base = 0x81812000 PsLoadedModuleList = 0x8191f930
     
  17. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    Иду не юзоем, что есть .idc ?
     
  18. sambd

    sambd New Member

    Публикаций:
    0
    Регистрация:
    14 дек 2007
    Сообщения:
    60
    .idc база от IDA с отреверсеным файлом

    а что юзаем? может и я заюзаю .... а то у меня токо ИДА и WinDBG
    и виста под виртуалкой ... ядро дебажить там жесть ... бряку не поставишь
    токо ида спасает а плане просмотра
     
  19. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    sambd
    Не у всех такой ресурс есть.. мозг, олю как лучший дизассемблер и асмэдит как лучший редактор.