能力值:
( LV2,RANK:10 )
2 楼
ULONG NtFuntion1 ;->NtGdiGetPixel
ULONG NtFuntion2 ;->NtUserSendInput
ULONG NtFuntion3 ;->NtUserCallNextHookEx
ULONG NtFuntion4 ;->NtUserPostMessage
ULONG NtFuntion5 ;->NtUserTranslateMessage
ULONG NtFuntion6 ;->NtUserMapVirtualKeyEx
补充int1proxyproc还有2个计数。分别记录r0和r3层引起的int1 异常。
对应的index是
win2k:
0BBh,1E1h,137h,1CBh,224h,1BAh
winxp:
0BFh,1F6h,141h,1DBh,239h,1CAh
win2k3:
0BEh,1F4h,140h,1DAh,235h,1C9h
winvista:
0C6h,20Dh,14Bh,1F1h,251h,1DDh
能力值:
(RANK:650 )
3 楼
上面两个
不是我马甲
能力值:
( LV4,RANK:50 )
4 楼
此帖应改名为sh连载
能力值:
( LV13,RANK:410 )
5 楼
sh系列
能力值:
( LV4,RANK:50 )
6 楼
sh0000 shaaaa shbbbb shjjjj shpppp shzzzz sh....
能力值:
( LV2,RANK:10 )
7 楼
要放就放全啦,遮遮掩掩干什么呢?
传说中的XDva..... ?
能力值:
(RANK:650 )
8 楼
PUNICODE_STRING NTDeviceName="\\Device\\DeviceName";
PUNICODE_STRING DosDeviceName="\\DosDevices\\DosDeviceName";
这样写是不对的
能力值:
( LV13,RANK:410 )
9 楼
等待lz连载
UNICODE_STRING是个结构。不能这样写。或者把帖子标题改成伪码。
难道是故意的。。。?
能力值:
( LV2,RANK:10 )
10 楼
嗯 看来楼主还没有把代码编译一下
能力值:
( LV4,RANK:50 )
11 楼
//这里用到的几个全局变量和结构定义
typedef struct HookStruct
{
ULONG Index;
ULONG Original_Fun_Addr;
ULONG Hook_Fun_Addr;
}SSDTHook;
VOID UnHookNtkrSSDT(INT Index,PVOID OriginalAdd,PVOID HookAddr);
BOOLEN UnknowFlag1;
BOOLEN ReSendKeyFlag;
NTSTATUS DrvDispatch(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
{
PIO_STACK_LOCATION irpStack;
PVOID ioBuffer;
ULONG inputBufferLength;
ULONG outputBufferLength;
ULONG ControlCode;
NTSTATUS ntStatus;
Irp->IoStatus.Status = STATUS_SUCCESS;
Irp->IoStatus.Information = 0;
// 获取当前irp当前栈空间
irpStack = IoGetCurrentIrpStackLocation(Irp); // Get the pointer to the input/output buffer and it's length
inputBufferLength = irpStack->Parameters.DeviceIoControl.InputBufferLength;
outputBufferLength = irpStack->Parameters.DeviceIoControl.OutputBufferLength;
// ....
switch(irpStack->MajorFunction)
{
case IRP_MJ_CLOSE:
{
if(* pSystemServiceDeorTable->ServiceTableBase != NULL)
{
UnHookNtkrSSDT(NtkrSSDT_HOOK[0].Index,NtOpenProcess_Hook);
..
..
..
};
if(* (pSystemServiceDeorTable+0x10) != NULL) //这里貌似有问题 米有用Shadow? 在我的电脑上是0x0O0O0O
{
UnHookWin32KSSDT(Win32KSSDT_HOOK[0].Index, NtGdiGetPixel_Hook);
..
..
}
if(UnknowFlag1) UnknowFlagw1 = false;
if(ReSendKeyFlag)
_asm
{
cli
push 0FEh ; Value
push 64h ; Port
call ds:WRITE_PORT_UCHAR ; 重发键盘按键到i8042 Output寄存器
hlt //这里这个HLT难道不会死掉??请大家指教一下
}
break;
}
case IRP_MJ_DEVICE_CONTROL:
{
ControlCode = irpStack->Parameters.DeviceIoControl.IoControlCode;
switch (ControlCode&0x03)
{ // ioctl开始过滤,其实也没做别的什么,就是根据不同模式选择与APP交互用的Buffer
case METHOD_NEITHER:
ioBuffer = Irp->UserBuffer;
break;
default:
ioBuffer = Irp->AssociatedIrp.SystemBuffer;
break;
}
ntStatus = DirverDispatch (Irp,FileObject,1,Irp->AssociatedIrp.SystemBuffer,
inputBufferLength,ioBuffer,outputBufferLength,ControlCode,
PVOID pIO_STATUS_BLOCK,DeviceObject);
return nStatus;
}
case IRP_MJ_CLEANUP:
{
ntStatus = STATUS_SUCCESS;
break;
}
default:
ntStatus = STATUS_INVALID_DEVICE_REQUEST;
Irp->IoStatus.Status = ntStatus;
}
//没有错误的操作,返回状态
IoCompleteRequest(Irp, IO_NO_INCREMENT);
return ntStatus;
}
能力值:
( LV2,RANK:10 )
12 楼
果然是XDva.....
向0x64端口写0xFE 本来就是“GameOver”的
能力值:
( LV4,RANK:50 )
13 楼
明白!谢谢
好个"GameOver"
能力值:
( LV13,RANK:410 )
14 楼
关注,建议加精
能力值:
( LV4,RANK:50 )
15 楼
这个反XX的代码真粗劣...
游戏厂商胆子也蛮大的...
能力值:
( LV4,RANK:50 )
16 楼
楼主故意的??
能力值:
( LV4,RANK:50 )
17 楼
居然米人关注..汗 没有发IoControl的动力了
能力值:
( LV13,RANK:410 )
18 楼
可能因为太简单了。发NP的肯定有人
能力值:
( LV2,RANK:85 )
19 楼
我关注哟。
这个是NP的驱动部分吧?
能力值:
( LV13,RANK:410 )
20 楼
是Np早就100楼了。
能力值:
( LV2,RANK:85 )
21 楼
那是什么?
能力值:
( LV13,RANK:410 )
22 楼
不是NP不是HS
能力值:
( LV4,RANK:50 )
23 楼
是传说中的某某某
能力值:
( LV12,RANK:760 )
24 楼
被逆了
能力值:
( LV2,RANK:10 )
25 楼
支持楼主~^_^