在 Immunity 中加载驱动程序

逆向工程 视窗 免疫调试器 司机
2021-07-08 11:36:27

这听起来很奇怪,我意识到您通常使用 WinDbg 来调试驱动程序,但我正在阅读Gray Hat Python并指出:

要对此进行测试,请尝试将驱动程序加载C:\WINDOWS\System32\beep.sys到 Immunity Debugger 中。加载后,使用调试器PyShell并输入以下代码:

我想知道这是否可能。我只是尝试beep.sys在 Immunity 中加载,但它找不到入口点并且似乎没有加载

1个回答

编辑我没有意识到你在要求免疫答案是简单的 ollydbg 1.10 这个概念在免疫方面应该是相似的

你需要编辑 IMAGE_SUBSYSTEMIMAGE_SUBSYSTEM_NATIVEIMAGE_SUBSYSTEM_WINDOWS_GUI_CUI

ollydbg 现在将能够加载驱动程序(从 hal 等导入将无法解析,但如果您执行 alt+e(可执行窗口)选择 beep.sys 右键单击​​跟随条目,您可以看到正确的反汇编

很明显,您是在 vm 或一次性配置中保存的系统驱动程序备份副本上进行实验,而不是修改原件和破坏操作系统以导致故障和烧毁您的机器

open ollydbg alone and use view file to modify subsystem charecteristics to cons
ole or gui instead of native 0000012C    0300        DW 0003              ;  Sub
system = IMAGE_SUBSYSTEM_WINDOWS_CUI

C:\>
C:\>fc /b c:\WINDOWS\system32\drivers\beep.sys c:\myollymodbeep.sys
Comparing files C:\WINDOWS\SYSTEM32\DRIVERS\beep.sys and C:\MYOLLYMODBEEP.SYS
0000012C: 01 03

C:\>"f:\odbg110\OLLYDBG.EXE" c:\myollymodbeep.sys

解除beep.sys

0001066C >PUSH    EBP
0001066D  MOV     EBP, ESP
0001066F  SUB     ESP, 0C
00010672  PUSH    EBX
00010673  PUSH    EDI
00010674  PUSH    myollymo.00010652                ;  UNICODE "\Device\Beep"
00010679  LEA     EAX, DWORD PTR SS:[EBP-C]
0001067C  PUSH    EAX
0001067D  CALL    NEAR DWORD PTR DS:[<&ntoskrnl.Rt>;  ntoskrnl.RtlInitUnicodeString
00010683  MOV     EDI, DWORD PTR SS:[EBP+8]
00010686  LEA     EAX, DWORD PTR SS:[EBP-4]
00010689  PUSH    EAX                              ; /*DeviceObject = 001B1EB4
0001068A  XOR     EBX, EBX                         ; |
0001068C  PUSH    EBX                              ; |Exclusive = 7FFD7000
0001068D  PUSH    100                              ; |DeviceCharacteristics = 100
00010692  PUSH    1                                ; |DeviceType = 1
00010694  LEA     EAX, DWORD PTR SS:[EBP-C]        ; |
00010697  PUSH    EAX                              ; |DeviceName = "????"
00010698  PUSH    58                               ; |ULONG DeviceExtensionSize = 58
0001069A  PUSH    EDI                              ; |DriverObject = 001B1EB4
0001069B  CALL    NEAR DWORD PTR DS:[<&ntoskrnl.Io>; \IoCreateDevice