HalMakeBeep ВSOD

Тема в разделе "WASM.X64", создана пользователем Treant, 26 май 2010.

  1. Treant

    Treant Member

    Публикаций:
    0
    Регистрация:
    24 май 2009
    Сообщения:
    248
  2. lhc645

    lhc645 New Member

    Публикаций:
    0
    Регистрация:
    9 авг 2009
    Сообщения:
    106
    Treant

    Крешдамп залейте хотя бы.
     
  3. Treant

    Treant Member

    Публикаций:
    0
    Регистрация:
    24 май 2009
    Сообщения:
    248
    Скачал примеры 64 разрядных драйверов на FASM'e
    Первый драйвер пикающий динамиком через порты отлично работает.
    Запустил второй - пропиликало и синий экран.
    Ну я немного поправил его т.к там STATUS_SUCCESS возвращался, чтобы он запускался несколько раз но это на BSOD ни как не влияет (всмысле он и так был).
    Не понимаю вообще откуда он берется весь драйвер уже выполнился и BSOD с моим кодом выхода.
    Вот код драйвера:
    Код (Text):
    1. ; the most simple win64 "driver" with IMPORT section for call API
    2. ; when started (use start_drv.exe) it produce a beep
    3. ; it can't be stopped because it hasn't implemented procedure for stop
    4. ; so if you want to use it again, you must reboot win64
    5.  
    6. format PE64 native 5.02 at 10000h
    7. entry start
    8. align 512
    9. section '.text' code readable executable notpageable
    10.  
    11. start:
    12. ; rcx=pDriverObject rdx=pDriverPath
    13.  
    14.         mov     ecx, 620h
    15.         call    qword [HalMakeBeep]
    16.         mov     rcx, 20000000h
    17.         wait_rcx:
    18.          loop wait_rcx
    19.          xor     ecx,ecx
    20.         call    qword [HalMakeBeep]
    21.         mov eax, 0C0000182h ;STATUS_DEVICE_CONFIGURATION_ERROR
    22.         ;xor     eax,eax                 ; success exit code
    23.         ret
    24.  
    25.  
    26. section '.rdata' readable notpageable
    27.  
    28. data 12
    29.  
    30. ImportLookup:
    31. HalMakeBeep             dq      rva szHalmakebeep
    32.                         dq      0
    33.  
    34. end data
    35.  
    36.  
    37. section 'INIT' data import readable notpageable
    38.  dd      rva ImportAddress,0,0,rva szHal_dll,rva ImportLookup
    39.  dd      0,0,0,0,0
    40.  
    41. ImportAddress           dq      rva szHalmakebeep
    42.                         dq      0
    43.  
    44. szHalmakebeep           dw      0
    45.                         db      'HalMakeBeep',0
    46.  
    47. szHal_dll db 'HAL.dll',0
    случайно отправил....
     
  4. EFiR

    EFiR New Member

    Публикаций:
    0
    Регистрация:
    1 фев 2010
    Сообщения:
    28
    регистры общего назначения какие-то портишь
     
  5. Treant

    Treant Member

    Публикаций:
    0
    Регистрация:
    24 май 2009
    Сообщения:
    248
    Дамп:
    Код (Text):
    1. KMODE_EXCEPTION_NOT_HANDLED (1e)
    2. This is a very common bugcheck.  Usually the exception address pinpoints
    3. the driver/function that caused the problem.  Always note this address
    4. as well as the link date of the driver/image that contains this address.
    5. Arguments:
    6. Arg1: ffffffffc0000005, The exception code that was not handled
    7. Arg2: fffffa8001a9f063, The address that the exception occurred at
    8. Arg3: 0000000000000001, Parameter 0 of the exception
    9. Arg4: 00000000c0000182, Parameter 1 of the exception
    10.  
    11. Debugging Details:
    12. ------------------
    13.  
    14.  
    15. EXCEPTION_CODE: (NTSTATUS) 0xc0000005 - <Unable to get error code text>
    16.  
    17. FAULTING_IP:
    18. +0
    19. fffffa80`01a9f063 0100            add     dword ptr [rax],eax
    20.  
    21. EXCEPTION_PARAMETER1:  0000000000000001
    22.  
    23. EXCEPTION_PARAMETER2:  00000000c0000182
    24.  
    25. WRITE_ADDRESS: GetPointerFromAddress: unable to read from fffff80002cf10e0
    26.  00000000c0000182
    27.  
    28. CUSTOMER_CRASH_COUNT:  1
    29.  
    30. DEFAULT_BUCKET_ID:  VISTA_DRIVER_FAULT
    31.  
    32. BUGCHECK_STR:  0x1E
    33.  
    34. PROCESS_NAME:  System
    35.  
    36. CURRENT_IRQL:  0
    37.  
    38. EXCEPTION_RECORD:  fffff880031e9758 -- (.exr 0xfffff880031e9758)
    39. ExceptionAddress: fffffa8001a9f063
    40.    ExceptionCode: c0000005 (Access violation)
    41.   ExceptionFlags: 00000000
    42. NumberParameters: 2
    43.    Parameter[0]: 0000000000000001
    44.    Parameter[1]: 00000000c0000182
    45. Attempt to write to address 00000000c0000182
    46.  
    47. TRAP_FRAME:  fffff880031e9800 -- (.trap 0xfffff880031e9800)
    48. NOTE: The trap frame does not contain all registers.
    49. Some register values may be zeroed or incorrect.
    50. rax=00000000c0000182 rbx=0000000000000000 rcx=fffff80002a2e3e8
    51. rdx=0000000000000061 rsi=0000000000000000 rdi=0000000000000000
    52. rip=fffffa8001a9f063 rsp=fffff880031e9998 rbp=0000000000000000
    53.  r8=fffff88003100100  r9=fffffa8001904000 r10=fffffa80021c28e0
    54. r11=00000000021c28e0 r12=0000000000000000 r13=0000000000000000
    55. r14=0000000000000000 r15=0000000000000000
    56. iopl=0         nv up ei ng nz na po nc
    57. fffffa80`01a9f063 0100            add     dword ptr [rax],eax ds:6939:00000000`c0000182=????????
    58. Resetting default scope
    59.  
    60. LAST_CONTROL_TRANSFER:  from fffff80002af4e79 to fffff80002ab6900
    61.  
    62. STACK_TEXT:  
    63. fffff880`031e8f88 fffff800`02af4e79 : 00000000`0000001e ffffffff`c0000005 fffffa80`01a9f063 00000000`00000001 : nt!KeBugCheckEx
    64. fffff880`031e8f90 fffff800`02ab5f42 : fffff880`031e9758 fffffa80`01a9f060 fffff880`031e9800 fffffa80`01b45000 : nt!KiDispatchException+0x1b9
    65. fffff880`031e9620 fffff800`02ab4aba : 00000000`00000001 00000000`c0000182 fffffa80`01b45000 fffffa80`01a9f060 : nt!KiExceptionDispatch+0xc2
    66. fffff880`031e9800 fffffa80`01a9f063 : 00000000`c0000182 fffffa80`01b45000 fffffa80`01a9f060 00000000`00000000 : nt!KiPageFault+0x23a
    67. fffff880`031e9998 00000000`c0000182 : fffffa80`01b45000 fffffa80`01a9f060 00000000`00000000 00000000`000007ff : 0xfffffa80`01a9f063
    68. fffff880`031e99a0 fffffa80`01b45000 : fffffa80`01a9f060 00000000`00000000 00000000`000007ff fffff880`031e9af8 : 0xc0000182
    69. fffff880`031e99a8 fffffa80`01a9f060 : 00000000`00000000 00000000`000007ff fffff880`031e9af8 00000000`00000000 : 0xfffffa80`01b45000
    70. fffff880`031e99b0 00000000`00000000 : 00000000`000007ff fffff880`031e9af8 00000000`00000000 00000000`00000000 : 0xfffffa80`01a9f060
    71.  
    72.  
    73. STACK_COMMAND:  kb
    74.  
    75. FOLLOWUP_IP:
    76. nt!KiDispatchException+1b9
    77. fffff800`02af4e79 cc              int     3
    78.  
    79. SYMBOL_STACK_INDEX:  1
    80.  
    81. SYMBOL_NAME:  nt!KiDispatchException+1b9
    82.  
    83. FOLLOWUP_NAME:  MachineOwner
    84.  
    85. MODULE_NAME: nt
    86.  
    87. IMAGE_NAME:  ntkrnlmp.exe
    88.  
    89. DEBUG_FLR_IMAGE_TIMESTAMP:  4b88cff0
    90.  
    91. FAILURE_BUCKET_ID:  X64_0x1E_nt!KiDispatchException+1b9
    92.  
    93. BUCKET_ID:  X64_0x1E_nt!KiDispatchException+1b9
    94.  
    95. Followup: MachineOwner
    96. ---------
     
  6. lhc645

    lhc645 New Member

    Публикаций:
    0
    Регистрация:
    9 авг 2009
    Сообщения:
    106
    Попробуйте так

    Код (Text):
    1. sub rsp,20h
    2. call    qword [HalMakeBeep]
    3. add rsp,20h
     
  7. Treant

    Treant Member

    Публикаций:
    0
    Регистрация:
    24 май 2009
    Сообщения:
    248
    lhc645
    Спасибо, помогло
     
  8. lhc645

    lhc645 New Member

    Публикаций:
    0
    Регистрация:
    9 авг 2009
    Сообщения:
    106
    Treant

    В msdn об этом написано чуть подробнее

    Место для хранения 4 регисров должно быть выделено.

    На рисунках все наглядно видно.

    http://msdn.microsoft.com/en-us/library/ew5tede7(v=VS.80).aspx