能力值:
( LV12,RANK:230 )
|
-
-
2 楼
那不算什么乱码吧,只不过IDA没有识别成代码而已,你在那个位置c一下,强制解释成代码。
|
能力值:
( LV4,RANK:50 )
|
-
-
3 楼
感谢答复。看此行
jmp near ptr 3A6E8h
跳转地址不对呀,程序中没此地址呀?不知道为何?还请指点。
|
能力值:
(RANK:570 )
|
-
-
4 楼
请确认程序没有加壳之类的
|
能力值:
( LV4,RANK:50 )
|
-
-
5 楼
版主请问一下,加壳是对整个文件还是可以对部分呢?我这个是个sys,从ida分析来看,入口driverentry分析的都没错,如创建设备IoCreateDevice,建立符号连接IoCreateSymbolicLink,然后就到了上面的代码了。
|
能力值:
( LV12,RANK:230 )
|
-
-
6 楼
不是太清楚你的上下文。
你在动态调试中查看一下这些代码,就是说加载sys之后看看这些代码显示成什么样了,
那个时候重定位都处理完了。
|
能力值:
( LV4,RANK:50 )
|
-
-
7 楼
入口代码如下:
public start
INIT:000184DE start proc far
INIT:000184DE
INIT:000184DE var_4C = dword ptr -4Ch
INIT:000184DE var_30 = dword ptr -30h
INIT:000184DE SymbolicLinkName= UNICODE_STRING ptr -1Ch
INIT:000184DE DestinationString= UNICODE_STRING ptr -0Ch
INIT:000184DE DeviceObject = dword ptr -4
INIT:000184DE
INIT:000184DE push ebp
INIT:000184DF mov ebp, esp
INIT:000184E1 sub esp, 30h
INIT:000184E4 push ebx
INIT:000184E5 push esi
INIT:000184E6 push edi
INIT:000184E7 push offset SourceString ; "\\Device\\hackc"
INIT:000184EC lea eax, [ebp+DestinationString]
INIT:000184EF push eax ; DestinationString
INIT:000184F0 call ds:RtlInitUnicodeString
INIT:000184F6 push offset aDosdevicesDump ; "\\DosDevices\\hackc"
INIT:000184FB lea ecx, [ebp+SymbolicLinkName]
INIT:000184FE push ecx ; DestinationString
INIT:000184FF call ds:RtlInitUnicodeString
INIT:00018505 lea edx, [ebp+DeviceObject]
INIT:00018508 push edx ; DeviceObject
INIT:00018509 push 0 ; Exclusive
INIT:0001850B push 100h ; DeviceCharacteristics
INIT:00018510 push 8402h ; DeviceType
INIT:00018515 lea eax, [ebp+DestinationString]
INIT:00018518 push eax ; DeviceName
INIT:00018519 push 444h ; DeviceExtensionSize
INIT:0001851E mov ecx, [ebp+8]
INIT:00018521 push ecx ; DriverObject
INIT:00018522 call ds:IoCreateDevice
INIT:00018528 mov [ebp+var_30], eax
INIT:0001852B cmp [ebp+var_30], 0
INIT:0001852F jl short loc_1857A
INIT:00018531 lea edx, [ebp+DestinationString]
INIT:00018534 push edx ; DeviceName
INIT:00018535 lea eax, [ebp+SymbolicLinkName]
INIT:00018538 push eax ; SymbolicLinkName
INIT:00018539 call ds:IoCreateSymbolicLink
INIT:0001853F mov [ebp+var_30], eax
INIT:00018542 mov ecx, [ebp+8]
INIT:00018545 mov dword ptr [ecx+70h], offset sub_15340
INIT:0001854C mov edx, [ebp+8]
INIT:0001854F mov eax, [ebp+8]
INIT:00018552 mov ecx, [eax+70h]
INIT:00018555 mov [edx+40h], ecx
INIT:00018558 mov edx, [ebp+8]
INIT:0001855B mov eax, [ebp+8]
INIT:0001855E mov ecx, [eax+40h]
INIT:00018561 mov [edx+38h], ecx
INIT:00018564 mov edx, [ebp+8]
INIT:00018567 mov eax, [ebp+8]
INIT:0001856A mov ecx, [eax+38h]
INIT:0001856D mov [edx+78h], ecx
INIT:00018570 mov edx, [ebp+8]
INIT:00018573 mov dword ptr [edx+34h], offset sub_15430
INIT:0001857A
INIT:0001857A loc_1857A: ; CODE XREF: start+51j
INIT:0001857A cmp [ebp+var_30], 0
INIT:0001857E jge short loc_185A2
INIT:00018580 cmp [ebp+DeviceObject], 0
INIT:00018584
INIT:00018584 loc_18584: ; CODE XREF: start+100j
INIT:00018584 jz short loc_18590
INIT:00018586 mov eax, [ebp+DeviceObject]
INIT:00018589 push eax ; DeviceObject
INIT:0001858A call ds:IoDeleteDevice
INIT:00018590
INIT:00018590 loc_18590: ; CODE XREF: start:loc_18584j
INIT:00018590 lea ecx, [ebp+SymbolicLinkName]
INIT:00018593 push ecx ; SymbolicLinkName
INIT:00018594 call ds:IoDeleteSymbolicLink
INIT:0001859A mov eax, [ebp+var_30]
INIT:0001859D jmp loc_188D9
INIT:000185A2 ; ---------------------------------------------------------------------------
INIT:000185A2
INIT:000185A2 loc_185A2: ; CODE XREF: start+A0j
INIT:000185A2 push 2000h ; NumberOfBytes
INIT:000185A7 call ds:MmAllocateNonCachedMemory
INIT:000185AD mov dword_168C0, eax
INIT:000185B2 cmp dword_168C0, 0
INIT:000185B9 jnz short loc_185C5
INIT:000185BB mov eax, 0C000009Ah
INIT:000185C0 jmp loc_188D9
INIT:000185C5 ; ---------------------------------------------------------------------------
INIT:000185C5
INIT:000185C5 loc_185C5: ; CODE XREF: start+DBj
INIT:000185C5 jmp near ptr 3A6E8h
INIT:000185C5 ; ---------------------------------------------------------------------------
INIT:000185CA db 3Bh
INIT:000185CB db 0FFh ; OFF32 SEGDEF [0,B009D5FF]
INIT:000185CC db 0D5h
INIT:000185CD db 9
INIT:000185CE db 0B0h
INIT:000185CF db 0E9h ; ?
INIT:000185D0 db 3Ch
INIT:000185D1 db 0AAh ; ?
请看INIT:000185B9 jnz short loc_185C5
和
jmp near ptr 3A6E8h。
有没有好的办法把某个驱动运行时dump下来?该sys防调试的。
|
能力值:
(RANK:570 )
|
-
-
8 楼
有ANTI DEBUG
有ANTI DUMP也就不奇怪了
还有,此驱动入口连反调试代码都没有,为什么不能调试?
是不是别的驱动在保护?如果是这样,你就得在负责保护的驱动入手了
|
能力值:
( LV2,RANK:10 )
|
-
-
9 楼
都是高手,利害呀。
|
能力值:
( LV12,RANK:230 )
|
-
-
10 楼
你给这些IDA的静态显示做什么,我让你动态调试中查看,你猫叫了个咪咪又贴了一遍问题,无语中。
还有你怎么知道它反调试的?如果反调试,那就动用VMware或qemu的硬件调试功能吧,这样省
事些。VMware支持gdb调试接口,对于Guest来说,这相当于硬件调试器。
就算反调试,你从DriverEntry直接开始调,它也反?你就说你怎么动态调的吧,你怎么发现它反
调试的吧。
|