killvxk
论坛版主
论坛版主
  • 注册日期2005-10-03
  • 最后登录2014-04-14
  • 粉丝3
  • 关注1
  • 积分1082分
  • 威望2003点
  • 贡献值0点
  • 好评度1693点
  • 原创分2分
  • 专家分0分
阅读:3089回复:19

快过年了,放段irpHook的代码~

楼主#
更多 发布于:2007-02-13 18:46
  NTSTATUS FASTCALL
NewpIofCallDriver(
  IN PDEVICE_OBJECT DeviceObject,
  IN OUT PIRP Irp
  )
{
    NTSTATUS stat;
    DbgPrint("Hacked Great!");
                //Code Deleted
    __asm
    {
        mov ecx,DeviceObject
        mov edx,Irp
        Call old_piofcalldriver
        mov stat,eax
    }
    return stat;
}
NTSTATUS DriverIoControl(
    IN PDEVICE_OBJECT DeviceObject,
    IN PIRP Irp)
{
    PIO_STACK_LOCATION pisl;
    NTSTATUS ns = STATUS_UNSUCCESSFUL;
    ULONG BuffSize, DataSize;
    PVOID pBuff, pData,pInout;
    KIRQL OldIrql;
    ULONG i;
    pisl = IoGetCurrentIrpStackLocation (Irp);

    BuffSize = pisl->Parameters.DeviceIoControl.OutputBufferLength;

    pBuff = Irp->AssociatedIrp.SystemBuffer;

    Irp->IoStatus.Information = 0;
    switch(pisl->Parameters.DeviceIoControl.IoControlCode)
    {
    case IOCTL_DISABLE:
        {
                                 //Code Deleted
            ns = STATUS_SUCCESS;
            break;
        }
    case IOCTL_ENABLE:
        {
                                //Code Deleted
            ns = STATUS_SUCCESS;
            break;
        }
    }  

    Irp->IoStatus.Status = ns;
    IoCompleteRequest(Irp, IO_NO_INCREMENT);
    return ns;
}

NTSTATUS DriverCreateClose(
    IN PDEVICE_OBJECT DeviceObject,
    IN PIRP Irp)
{
    Irp->IoStatus.Information = 0;
    Irp->IoStatus.Status = STATUS_SUCCESS;
    IoCompleteRequest(Irp, IO_NO_INCREMENT);
    return STATUS_SUCCESS;
    
}

VOID DriverUnload(IN PDRIVER_OBJECT DriverObject)
{
    IoDeleteSymbolicLink(&SymbolicLinkName);
    IoDeleteDevice(deviceObject);
}
NTSTATUS DriverClose(
    IN PDEVICE_OBJECT DeviceObject,
    IN PIRP Irp)
{
    return DriverCreateClose(DeviceObject,Irp);
}
NTSTATUS IoComplete(
    IN PDEVICE_OBJECT DeviceObject,
    IN PIRP Irp)
{
    IoCompleteRequest(Irp,IO_NO_INCREMENT);
    return STATUS_SUCCESS;

}

void HookpIofCallDriver()
{
    KIRQL oldIrql;
    ULONG addr = (ULONG)IofCallDriver;
    __asm
    {
        mov eax,addr
        mov esi,[eax+2]
        mov eax,[esi]
        mov old_piofcalldriver,eax
    }
    oldIrql = KeRaiseIrqlToDpcLevel();
    __asm{
        mov eax,cr0
        mov oData,eax
        and eax,0xffffffff
        mov cr0,eax
        mov eax,addr
        mov esi,[eax+2]
        mov dword ptr [esi],offset NewpIofCallDriver
        mov eax,oData
        mov cr0,eax
    }
    KeLowerIrql(oldIrql);
    return ;
}
NTSTATUS DriverEntry(IN PDRIVER_OBJECT  DriverObject,
                     IN PUNICODE_STRING RegistryPath)
{
    NTSTATUS status;    
    PDRIVER_DISPATCH *ppdd;
    ULONG i;
    PCWSTR dDeviceName       = L"\\Device\\irphook";
    PCWSTR dSymbolicLinkName = L"\\DosDevices\\irphook";
    
    RtlInitUnicodeString(&DeviceName,       dDeviceName);
    RtlInitUnicodeString(&SymbolicLinkName, dSymbolicLinkName);
    status = IoCreateDevice(DriverObject, 0, &DeviceName, FILE_DEVICE_UNKNOWN, 0, TRUE, &deviceObject);
    if (!NT_SUCCESS(status)) return status;
    status = IoCreateSymbolicLink(&SymbolicLinkName, &DeviceName);
#ifdef DEBUG
    DriverObject->DriverUnload = DriverUnload;
#endif
    DriverObject->DriverUnload  =0;
    ppdd = DriverObject->MajorFunction;
    for(i =0;i<=IRP_MJ_MAXIMUM_FUNCTION;i++)
        ppdd = IoComplete;
        
    ppdd [IRP_MJ_CREATE] = DriverCreateClose;
    ppdd [IRP_MJ_DEVICE_CONTROL ] = DriverIoControl;    
    g_drvobj = DriverObject;
    HookpIofCallDriver();
    return status;
}

最新喜欢:

hljwbhljwb
没有战争就没有进步 X3工作组 为您提供最好的军火
killvxk
论坛版主
论坛版主
  • 注册日期2005-10-03
  • 最后登录2014-04-14
  • 粉丝3
  • 关注1
  • 积分1082分
  • 威望2003点
  • 贡献值0点
  • 好评度1693点
  • 原创分2分
  • 专家分0分
沙发#
发布于:2007-02-13 18:47
完整代码就免了吧~哈哈,Bin更不放了~
没有战争就没有进步 X3工作组 为您提供最好的军火
WQXNETQIQI
驱动大牛
驱动大牛
  • 注册日期2006-06-12
  • 最后登录2010-10-26
  • 粉丝0
  • 关注0
  • 积分13分
  • 威望1076点
  • 贡献值0点
  • 好评度895点
  • 原创分1分
  • 专家分0分
板凳#
发布于:2007-02-13 19:48
呜啦啦。。。传说中的Hook IoCallDriver~~
驱动开发者 呵呵
killvxk
论坛版主
论坛版主
  • 注册日期2005-10-03
  • 最后登录2014-04-14
  • 粉丝3
  • 关注1
  • 积分1082分
  • 威望2003点
  • 贡献值0点
  • 好评度1693点
  • 原创分2分
  • 专家分0分
地板#
发布于:2007-02-13 20:07
2k/nt/xp上可以用~但是Windows 2003需要另外方法~
没有战争就没有进步 X3工作组 为您提供最好的军火
baiyuanfan
驱动小牛
驱动小牛
  • 注册日期2004-11-23
  • 最后登录2007-06-21
  • 粉丝0
  • 关注0
  • 积分320分
  • 威望38点
  • 贡献值0点
  • 好评度20点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2007-02-13 20:20
呵呵,大家情人节快乐拉
各类后门,木马,Exp,0day
xyzreg
驱动小牛
驱动小牛
  • 注册日期2005-06-20
  • 最后登录2009-12-06
  • 粉丝0
  • 关注0
  • 积分294分
  • 威望173点
  • 贡献值0点
  • 好评度164点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2007-02-13 23:13
hook IofCallDriver以前这个版里有人发过,只不过论坛数据丢失了~
killvxk
论坛版主
论坛版主
  • 注册日期2005-10-03
  • 最后登录2014-04-14
  • 粉丝3
  • 关注1
  • 积分1082分
  • 威望2003点
  • 贡献值0点
  • 好评度1693点
  • 原创分2分
  • 专家分0分
6楼#
发布于:2007-02-13 23:36
引用第5楼xyzreg2007-02-13 23:13发表的“”:
hook IofCallDriver以前这个版里有人发过,只不过论坛数据丢失了~

他那个hook太恶心~忍不住的恶心
没有战争就没有进步 X3工作组 为您提供最好的军火
wowocock
VIP专家组
VIP专家组
  • 注册日期2002-04-08
  • 最后登录2016-01-09
  • 粉丝16
  • 关注2
  • 积分601分
  • 威望1651点
  • 贡献值1点
  • 好评度1227点
  • 原创分1分
  • 专家分0分
7楼#
发布于:2007-02-14 09:32
2K3和VISTA下用同样的处理即可,不过64BIT下的不知道该如何做......
花开了,然后又会凋零,星星是璀璨的,可那光芒也会消失。在这样 一瞬间,人降生了,笑者,哭着,战斗,伤害,喜悦,悲伤憎恶,爱。一切都只是刹那间的邂逅,而最后都要归入死亡的永眠
killvxk
论坛版主
论坛版主
  • 注册日期2005-10-03
  • 最后登录2014-04-14
  • 粉丝3
  • 关注1
  • 积分1082分
  • 威望2003点
  • 贡献值0点
  • 好评度1693点
  • 原创分2分
  • 专家分0分
8楼#
发布于:2007-02-14 11:58
引用第7楼wowocock2007-02-14 09:32发表的“”:
2K3和VISTA下用同样的处理即可,不过64BIT下的不知道该如何做......


pIofCallDriver的位置不是那么容易取得的阿~
没有战争就没有进步 X3工作组 为您提供最好的军火
wowocock
VIP专家组
VIP专家组
  • 注册日期2002-04-08
  • 最后登录2016-01-09
  • 粉丝16
  • 关注2
  • 积分601分
  • 威望1651点
  • 贡献值1点
  • 好评度1227点
  • 原创分1分
  • 专家分0分
9楼#
发布于:2007-02-14 12:23
很容易,再说32位下还有什么不能搞定的,相对64BIT,感觉32位下的都好办.....
花开了,然后又会凋零,星星是璀璨的,可那光芒也会消失。在这样 一瞬间,人降生了,笑者,哭着,战斗,伤害,喜悦,悲伤憎恶,爱。一切都只是刹那间的邂逅,而最后都要归入死亡的永眠
killvxk
论坛版主
论坛版主
  • 注册日期2005-10-03
  • 最后登录2014-04-14
  • 粉丝3
  • 关注1
  • 积分1082分
  • 威望2003点
  • 贡献值0点
  • 好评度1693点
  • 原创分2分
  • 专家分0分
10楼#
发布于:2007-02-14 12:56
贴个正式通用版的代码:
void HookInWin2003()
{
    kernelbase=(DWORD)getkmod("ntoskrnl.exe");
    if(kernelbase==0)
    {
        kernelbase=(DWORD)getkmod("ntkrnlmp.exe");
        if(kernelbase)DbgPrint("ntkrnlmp multi-processor type kernel detected.\n");
    }
    if(kernelbase==0)
    {
        kernelbase=(DWORD)getkmod("ntkrnlpa.exe");
        if(kernelbase)DbgPrint("ntkrnlpa PAE type kernel detected.\n");
    }
    if(kernelbase==0)
    {
        kernelbase=(DWORD)getkmod("ntkrpamp.exe");
        if(kernelbase)DbgPrint("ntkrpamp multi-processor & PAE type kernel detected.\n");
    }
    if(kernelbase==0) return ;
    hkIoCallDriver = kdetourex((UCHAR*)searchkexport(kernelbase,(DWORD)&("IoCallDriver")),(UCHAR*)HackIoCallDriver);
    if(!hkIoCallDriver) return;
    hkPoCallDriver = kdetourex((UCHAR*)searchkexport(kernelbase,(DWORD)&("PoCallDriver")),(UCHAR*)HackPoCallDriver);
    if(!hkPoCallDriver) return;
    hkIofCallDriver = kdetourex_savreg((UCHAR*)searchkexport(kernelbase,(DWORD)&("IofCallDriver")),(UCHAR*)HackpIofCallDriver);//savreg不改变寄存器,嘿嘿~
    return ;
}

//Bin也贴上来了,不过精简过了——这样子谁要想用,得自己逆向嘿嘿~
附件名称/大小 下载次数 最后更新
irphook.rar (5KB)  91 2007-02-14 12:59
没有战争就没有进步 X3工作组 为您提供最好的军火
guaiguaiguan
驱动中牛
驱动中牛
  • 注册日期2003-10-11
  • 最后登录2011-01-12
  • 粉丝0
  • 关注0
  • 积分14分
  • 威望556点
  • 贡献值0点
  • 好评度490点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2007-02-14 15:46
把  kdetourex、searchkexport kdetourex_savreg放出来让大家见识一下,前面hook的通用方法谁都存了一大堆。大过年的,谁都想乐呵乐呵,idapro又不是电视,已经懒得看了。C代码比汇编看着舒服。
不过还得谢谢楼主,做了一件利国利民,功在当代,利在千秋的大好事。应该大力弘扬楼主“特别能吃苦”、“特别能战斗”、”特别能攻关““特别能奉献”的驱动开发精神。
killvxk
论坛版主
论坛版主
  • 注册日期2005-10-03
  • 最后登录2014-04-14
  • 粉丝3
  • 关注1
  • 积分1082分
  • 威望2003点
  • 贡献值0点
  • 好评度1693点
  • 原创分2分
  • 专家分0分
12楼#
发布于:2007-02-14 16:32
idapro和电视机差不多吧~
没有战争就没有进步 X3工作组 为您提供最好的军火
xikug
驱动小牛
驱动小牛
  • 注册日期2001-09-25
  • 最后登录2013-09-27
  • 粉丝1
  • 关注0
  • 积分1001分
  • 威望169点
  • 贡献值0点
  • 好评度168点
  • 原创分1分
  • 专家分0分
13楼#
发布于:2007-02-14 17:07
逆都不用逆,直接把汇编扣出来,内嵌到自己的代码里面。。。
http://www.debugman.com
killvxk
论坛版主
论坛版主
  • 注册日期2005-10-03
  • 最后登录2014-04-14
  • 粉丝3
  • 关注1
  • 积分1082分
  • 威望2003点
  • 贡献值0点
  • 好评度1693点
  • 原创分2分
  • 专家分0分
14楼#
发布于:2007-02-14 17:18
引用第13楼xikug2007-02-14 17:07发表的“”:
逆都不用逆,直接把汇编扣出来,内嵌到自己的代码里面。。。


....大邪恶~
没有战争就没有进步 X3工作组 为您提供最好的军火
wowocock
VIP专家组
VIP专家组
  • 注册日期2002-04-08
  • 最后登录2016-01-09
  • 粉丝16
  • 关注2
  • 积分601分
  • 威望1651点
  • 贡献值1点
  • 好评度1227点
  • 原创分1分
  • 专家分0分
15楼#
发布于:2007-02-14 22:29
引用第12楼killvxk2007-02-14 16:32发表的“”:
idapro和电视机差不多吧~

经典.....
花开了,然后又会凋零,星星是璀璨的,可那光芒也会消失。在这样 一瞬间,人降生了,笑者,哭着,战斗,伤害,喜悦,悲伤憎恶,爱。一切都只是刹那间的邂逅,而最后都要归入死亡的永眠
doskey
论坛版主
论坛版主
  • 注册日期2004-12-08
  • 最后登录2016-04-05
  • 粉丝0
  • 关注0
  • 积分1000分
  • 威望302点
  • 贡献值0点
  • 好评度300点
  • 原创分0分
  • 专家分0分
16楼#
发布于:2007-02-15 13:34
引用第13楼xikug2007-02-14 17:07发表的“”:
逆都不用逆,直接把汇编扣出来,内嵌到自己的代码里面。。。


 
WQXNETQIQI
驱动大牛
驱动大牛
  • 注册日期2006-06-12
  • 最后登录2010-10-26
  • 粉丝0
  • 关注0
  • 积分13分
  • 威望1076点
  • 贡献值0点
  • 好评度895点
  • 原创分1分
  • 专家分0分
17楼#
发布于:2007-02-15 17:05
叫楼上的逆了就跟看电视机一样
驱动开发者 呵呵
killvxk
论坛版主
论坛版主
  • 注册日期2005-10-03
  • 最后登录2014-04-14
  • 粉丝3
  • 关注1
  • 积分1082分
  • 威望2003点
  • 贡献值0点
  • 好评度1693点
  • 原创分2分
  • 专家分0分
18楼#
发布于:2007-02-16 08:58
准备好刀子,看准MJ,xyzreg,wowocock,cardmagic,doskey准备放血~
没有战争就没有进步 X3工作组 为您提供最好的军火
rhettxie
驱动牛犊
驱动牛犊
  • 注册日期2004-10-27
  • 最后登录2010-02-04
  • 粉丝0
  • 关注0
  • 积分3分
  • 威望65点
  • 贡献值0点
  • 好评度59点
  • 原创分0分
  • 专家分0分
19楼#
发布于:2007-02-28 10:38
pIofCallDriver 的地址在 2003 下咋取 ?
静水流深
游客

返回顶部