Модификация таблицы экспорта модуля ntoskrnl.exe

Тема в разделе "WASM.NT.KERNEL", создана пользователем prus, 21 фев 2008.

  1. prus

    prus New Member

    Публикаций:
    0
    Регистрация:
    26 окт 2007
    Сообщения:
    92
    Приветствую!
    Хочу перехватывать вызовы NtCreateFile из Ring0. Хотел это сделать через подмену адреса в ntoskrnl.exe.
    Для этого нашел адрес модуля ntoskrnl.exe и адрес функции NtCreateFile в нем и подменил его на свой обработчик. Результата нету.
    Это мой косяк в реализации (код могу показать) или все-таки нужно подменять адрес в SSDT? Если так, то где можно посмотреть номара функций IoCreateFile, NtCreateFile, NtOpenFile и тп для XP, 2000 и т.д.?
     
  2. Freeman

    Freeman New Member

    Публикаций:
    0
    Регистрация:
    10 фев 2005
    Сообщения:
    1.385
    Адрес:
    Ukraine
    открыть ntdll.dll, посмотреть первую инструкцию Zw* функции. там будет mov eax,FUNCTION_NUMBER
     
  3. steelfactor

    steelfactor New Member

    Публикаций:
    0
    Регистрация:
    26 апр 2007
    Сообщения:
    501
  4. prus

    prus New Member

    Публикаций:
    0
    Регистрация:
    26 окт 2007
    Сообщения:
    92
    Спасиб ребят за инфу.
    Сделал перехват. Попробовал... При запуске файла на выполнение получил BSOD. Помогите плз понять причину.
    Вот дамп
    Код (Text):
    1. *******************************************************************************
    2. *                                                                             *
    3. *                        Bugcheck Analysis                                    *
    4. *                                                                             *
    5. *******************************************************************************
    6.  
    7. PAGE_FAULT_IN_NONPAGED_AREA (50)
    8. Invalid system memory was referenced.  This cannot be protected by try-except,
    9. it must be protected by a Probe.  Typically the address is just plain bad or it
    10. is pointing at freed memory.
    11. Arguments:
    12. Arg1: 8580d189, memory referenced.
    13. Arg2: 00000001, value 0 = read operation, 1 = write operation.
    14. Arg3: 80595452, If non-zero, the instruction address which referenced the bad memory
    15.     address.
    16. Arg4: 00000000, (reserved)
    17.  
    18. Debugging Details:
    19. ------------------
    20.  
    21.  
    22. PEB is paged out (Peb.Ldr = 7ffdf00c).  Type ".hh dbgerr001" for details
    23.  
    24. PEB is paged out (Peb.Ldr = 7ffdf00c).  Type ".hh dbgerr001" for details
    25.  
    26. WRITE_ADDRESS:  8580d189
    27.  
    28. FAULTING_IP:
    29. nt!NtAcceptConnectPort+e5
    30. 80595452 ff8d45a4508d    dec     dword ptr [ebp-72AF5BBBh]
    31.  
    32. MM_INTERNAL_CODE:  0
    33.  
    34. DEFAULT_BUCKET_ID:  CODE_CORRUPTION
    35.  
    36. BUGCHECK_STR:  0x50
    37.  
    38. PROCESS_NAME:  csrss.exe
    39.  
    40. TRAP_FRAME:  f8302c18 -- (.trap 0xfffffffff8302c18)
    41. ErrCode = 00000002
    42. eax=7fff0000 ebx=0069febc ecx=0000000b edx=0069fe98 esi=0069ff1c edi=f8302d28
    43. eip=80595452 esp=f8302c8c ebp=f8302d44 iopl=0         nv up ei ng nz na pe nc
    44. cs=0008  ss=0010  ds=0023  es=0023  fs=0030  gs=0000             efl=00010286
    45. nt!NtAcceptConnectPort+0xe5:
    46. 80595452 ff8d45a4508d    dec     dword ptr [ebp-72AF5BBBh] ss:0010:8580d189=????????
    47. Resetting default scope
    48.  
    49. MISALIGNED_IP:
    50. nt!NtAcceptConnectPort+e5
    51. 80595452 ff8d45a4508d    dec     dword ptr [ebp-72AF5BBBh]
    52.  
    53. LAST_CONTROL_TRANSFER:  from 8051c756 to 805266db
    54.  
    55. STACK_TEXT:  
    56. f8302bb4 8051c756 00000050 8580d189 00000001 nt!KeBugCheckEx+0x19
    57. f8302c00 804dcc5e 00000001 8580d189 00000000 nt!MmAccessFault+0x6cf
    58. f8302c00 80595452 00000001 8580d189 00000000 nt!KiTrap0E+0xb8
    59. f8302d44 804da140 0069fecc 00000025 0069ff04 nt!NtAcceptConnectPort+0xe5
    60. f8302d44 7ffe0304 0069fecc 00000025 0069ff04 nt!KiSystemService+0xc4
    61. 0069fed4 00000000 00000000 00000000 00000000 SharedUserData!SystemCallStub+0x4
    62.  
    63.  
    64. STACK_COMMAND:  kb
    65.  
    66. CHKIMG_EXTENSION: !chkimg -lo 50 -d !nt
    67.     804fee7b-804fee7f  5 bytes - nt!DebugPrint+1
    68.     [ 74 24 0c 8b 44:25 8c 46 5f f6 ]
    69.     8059543e-80595441  4 bytes - nt!NtAcceptConnectPort+d0
    70.     [ 03 0f 85 1d:93 e2 10 f6 ]
    71.     80636708-8063670a  3 bytes - nt!MiVerifierThunks (+0xa12ca)
    72.     [ 5c 6e 63:17 bf 4e ]
    73.     80636710-80636712  3 bytes - nt!MiVerifierThunks+8 (+0x08)
    74.     [ 40 6e 63:bc 28 51 ]
    75.     80636718-8063671a  3 bytes - nt!MiVerifierThunks+10 (+0x08)
    76.     [ 24 6e 63:da 28 51 ]
    77.     80636720-80636722  3 bytes - nt!MiVerifierThunks+18 (+0x08)
    78.     [ 04 6e 63:b0 cb 4e ]
    79.     80636728-8063672a  3 bytes - nt!MiVerifierThunks+20 (+0x08)
    80.     [ ec 6d 63:aa ca 4e ]
    81.     80636730-80636732  3 bytes - nt!MiVerifierThunks+28 (+0x08)
    82.     [ d8 6d 63:4e e4 4e ]
    83.     80636738-8063673a  3 bytes - nt!MiVerifierThunks+30 (+0x08)
    84.     [ bc 6d 63:0c 6c 5c ]
    85.     80636740-80636742  3 bytes - nt!MiVerifierThunks+38 (+0x08)
    86.     [ ac 6d 63:2f 9e 50 ]
    87.     80636748-8063674a  3 bytes - nt!MiVerifierThunks+40 (+0x08)
    88.     [ 98 6d 63:55 f0 4f ]
    89.     80636750-80636752  3 bytes - nt!MiVerifierThunks+48 (+0x08)
    90.     [ 78 6d 63:2a d0 4e ]
    91.     80636758-8063675a  3 bytes - nt!MiVerifierThunks+50 (+0x08)
    92.     [ 68 6d 63:ce e6 4e ]
    93.     80636760-80636762  3 bytes - nt!MiVerifierThunks+58 (+0x08)
    94.     [ 54 6d 63:a3 d7 4e ]
    95.     80636768-8063676a  3 bytes - nt!MiVerifierThunks+60 (+0x08)
    96.     [ 44 6d 63:5c 9f 50 ]
    97.     80636770-80636772  3 bytes - nt!MiVerifierThunks+68 (+0x08)
    98.     [ 30 6d 63:d4 95 6c ]
    99.     80636778-8063677a  3 bytes - nt!MiVerifierThunks+70 (+0x08)
    100.     [ 18 6d 63:30 96 6c ]
    101.     80636780-80636782  3 bytes - nt!MiVerifierThunks+78 (+0x08)
    102.     [ 04 6d 63:08 96 6c ]
    103.     80636788-8063678a  3 bytes - nt!MiVerifierThunks+80 (+0x08)
    104.     [ f8 6c 63:60 d3 6c ]
    105.     80636790-80636792  3 bytes - nt!MiVerifierThunks+88 (+0x08)
    106.     [ ec 6c 63:72 d3 6c ]
    107.     80636798-8063679a  3 bytes - nt!MiVerifierThunks+90 (+0x08)
    108.     [ d8 6c 63:7e d3 6c ]
    109.     806367a0-806367a2  3 bytes - nt!MiVerifierThunks+98 (+0x08)
    110.     [ c4 6c 63:90 d3 6c ]
    111.     806367a8-806367aa  3 bytes - nt!MiVerifierThunks+a0 (+0x08)
    112.     [ a4 6c 63:27 1f 51 ]
    113.     806367b0-806367b2  3 bytes - nt!MiVerifierThunks+a8 (+0x08)
    114.     [ 84 6c 63:2b 1f 51 ]
    115.     806367b8-806367ba  3 bytes - nt!MiVerifierThunks+b0 (+0x08)
    116.     [ 6c 6c 63:dc b8 4e ]
    117.     806367c0-806367c2  3 bytes - nt!MiVerifierThunks+b8 (+0x08)
    118.     [ 58 6c 63:22 62 4f ]
    119.     806367c8-806367ca  3 bytes - nt!MiVerifierThunks+c0 (+0x08)
    120.     [ 44 6c 63:14 62 4f ]
    121.     806367d0-806367d2  3 bytes - nt!MiVerifierThunks+c8 (+0x08)
    122.     [ 2c 6c 63:2b c8 4e ]
    123.     806367d8-806367da  3 bytes - nt!MiVerifierThunks+d0 (+0x08)
    124.     [ 20 6c 63:38 91 6c ]
    125.     806367e0-806367e2  3 bytes - nt!MiVerifierThunks+d8 (+0x08)
    126.     [ 08 6c 63:58 91 6c ]
    127.     806367e8-806367ea  3 bytes - nt!MiVerifierThunks+e0 (+0x08)
    128.     [ fc 6b 63:90 91 6c ]
    129.     806367f0-806367f2  3 bytes - nt!MiVerifierThunks+e8 (+0x08)
    130.     [ e8 6b 63:70 95 6c ]
    131.     806367f8-806367fa  3 bytes - nt!MiVerifierThunks+f0 (+0x08)
    132.     [ d4 6b 63:b0 95 6c ]
    133.     80636800-80636802  3 bytes - nt!MiVerifierThunks+f8 (+0x08)
    134.     [ c8 6b 63:bb c9 4e ]
    135.     80636808-8063680a  3 bytes - nt!MiVerifierThunks+100 (+0x08)
    136.     [ b8 6b 63:50 d8 4e ]
    137.     80636810-80636812  3 bytes - nt!MiVerifierThunks+108 (+0x08)
    138.     [ a4 6b 63:9d d7 4e ]
    139.     80636818-8063681a  3 bytes - nt!MiVerifierThunks+110 (+0x08)
    140.     [ 84 6b 63:74 52 4e ]
    141.     80636820-80636822  3 bytes - nt!MiVerifierThunks+118 (+0x08)
    142.     [ 64 6b 63:56 d8 4e ]
    143.     80636828-8063682a  3 bytes - nt!MiVerifierThunks+120 (+0x08)
    144.     [ 50 6b 63:dc 65 5b ]
    145.     80636830-80636832  3 bytes - nt!MiVerifierThunks+128 (+0x08)
    146.     [ 34 6b 63:d6 e0 6c ]
    147.     80636838-8063683a  3 bytes - nt!MiVerifierThunks+130 (+0x08)
    148.     [ 24 6b 63:a4 c0 56 ]
    149.     80636840-80636842  3 bytes - nt!MiVerifierThunks+138 (+0x08)
    150.     [ 04 6b 63:dc b9 6c ]
    151.     80636848-8063684a  3 bytes - nt!MiVerifierThunks+140 (+0x08)
    152.     [ e8 6a 63:ee e7 57 ]
    153.     80636850-80636852  3 bytes - nt!MiVerifierThunks+148 (+0x08)
    154.     [ d8 6a 63:ad ce 4e ]
    155.     80636858-8063685a  3 bytes - nt!MiVerifierThunks+150 (+0x08)
    156.     [ c4 6a 63:8b 1d 4e ]
    157.     80636860-80636862  3 bytes - nt!MiVerifierThunks+158 (+0x08)
    158.     [ b4 6a 63:4b c5 4e ]
    159.     80636868-8063686a  3 bytes - nt!MiVerifierThunks+160 (+0x08)
    160.     [ a0 6a 63:d2 92 4f ]
    161.     80636870-80636872  3 bytes - nt!MiVerifierThunks+168 (+0x08)
    162.     [ 88 6a 63:1a 1f 51 ]
    163.     80636878-8063687a  3 bytes - nt!MiVerifierThunks+170 (+0x08)
    164.     [ 78 6a 63:2e d6 6d ]
    165.     80636880-80636882  3 bytes - nt!MiVerifierThunks+178 (+0x08)
    166.     [ 68 6a 63:e0 c0 6c ]
    167.     80636888-8063688a  3 bytes - nt!MiVerifierThunks+180 (+0x08)
    168.     [ 50 6a 63:48 c1 6c ]
    169. WARNING: !chkimg output was truncated to 50 lines. Invoke !chkimg without '-lo [num_lines]' to view  entire output.
    170. 201 errors : !nt (804fee7b-8063690a)
    171.  
    172. MODULE_NAME: memory_corruption
    173.  
    174. IMAGE_NAME:  memory_corruption
    175.  
    176. FOLLOWUP_NAME:  memory_corruption
    177.  
    178. DEBUG_FLR_IMAGE_TIMESTAMP:  0
    179.  
    180. MEMORY_CORRUPTOR:  LARGE
    181.  
    182. FAILURE_BUCKET_ID:  MEMORY_CORRUPTION_LARGE
    183.  
    184. BUCKET_ID:  MEMORY_CORRUPTION_LARGE
    185.  
    186. Followup: memory_corruption
    187. ---------
     
  5. prus

    prus New Member

    Публикаций:
    0
    Регистрация:
    26 окт 2007
    Сообщения:
    92
    Разобрался вроде.
    Сделал перехват ZwCreateFile + MmCreateMdl и т.д.