找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 158|回复: 0

禁用 OpenProcess打开进程 驱动代码

[复制链接]

210

主题

371

回帖

0

积分

管理员

积分
0
发表于 2013-10-11 16:15:52 | 显示全部楼层 |阅读模式
[bgcolor=#ffffff]可以通用in line Hook 或者SSDTHOOK 转到自己的函数[/bgcolor]


[bgcolor=#ffffff]__declspec(naked)  [/bgcolor]
[bgcolor=#ffffff]void asmmyNtOpenProcess(void)[/bgcolor]
[bgcolor=#ffffff]{[/bgcolor]


[bgcolor=#ffffff]  __asm[/bgcolor]
[bgcolor=#ffffff]  {        [/bgcolor]
[bgcolor=#ffffff]      push ebp[/bgcolor]
[bgcolor=#ffffff]      mov ebp,esp[/bgcolor]

[bgcolor=#ffffff]      mov eax,[ebp+0x14][/bgcolor]
[bgcolor=#ffffff]      mov eax,[eax][/bgcolor]
[bgcolor=#ffffff]      cmp eax,mypid //mypid是需要保护的进程id,全局变量,可以在前边赋值[/bgcolor]
[bgcolor=#ffffff]      jnz end[/bgcolor]

[bgcolor=#ffffff]      pop ebp[/bgcolor]
[bgcolor=#ffffff]      mov eax,0[/bgcolor]
[bgcolor=#ffffff]      ret 0x10[/bgcolor]

[bgcolor=#ffffff]end:[/bgcolor]

[bgcolor=#ffffff]    //正常调用 正常进程句柄[/bgcolor]
[bgcolor=#ffffff]          push [ebp+0x14][/bgcolor]
[bgcolor=#ffffff]          push [ebp+0x10][/bgcolor]
[bgcolor=#ffffff]          push [ebp+0x0c][/bgcolor]
[bgcolor=#ffffff]          push [ebp+0x8]          [/bgcolor]
[bgcolor=#ffffff]          call oldNtOpenProcess    [/bgcolor]
[bgcolor=#ffffff]          pop ebp[/bgcolor]
[bgcolor=#ffffff]          ret 0x10[/bgcolor]

[bgcolor=#ffffff]    }[/bgcolor]

[bgcolor=#ffffff]//SSDT HOOK[/bgcolor]
[bgcolor=#ffffff]NTSTATUS DriverEntry(PDRIVER_OBJECT pDriverObj, PUNICODE_STRING pRegistryString)[/bgcolor]
[bgcolor=#ffffff]{[/bgcolor]
[bgcolor=#ffffff]    [/bgcolor]

[bgcolor=#ffffff]     [/bgcolor]
[bgcolor=#ffffff]    pDriverObj->DriverUnload=DDK_Unload; [/bgcolor]
[bgcolor=#ffffff]     KdPrint(("我的第一个驱动载入 %x \n",KeServiceDescriptorTable));//// [/bgcolor]
[bgcolor=#ffffff]    int*  pssdtTable =(int*)KeServiceDescriptorTable->ServiceTableBase;[/bgcolor]
[bgcolor=#ffffff]    char*  pargTable =(char*)KeServiceDescriptorTable->aramTableBase;[/bgcolor]
[bgcolor=#ffffff]//     int i;[/bgcolor]
[bgcolor=#ffffff]//       for ( i=0;i<22;i++)[/bgcolor]
[bgcolor=#ffffff]//       {      int t=*(pargTable +i);[/bgcolor]
[bgcolor=#ffffff]//             KdPrint((" SSDT[%d]= %x ,%x \n",i,pssdtTable), t );[/bgcolor]
[bgcolor=#ffffff]//     }[/bgcolor]

[bgcolor=#ffffff]      //ssdt hook[/bgcolor]
[bgcolor=#ffffff]      [/bgcolor]
[bgcolor=#ffffff]   KdPrint(("NtOpenProcss 地址=%X \n",myNtOpenProcess));[/bgcolor]
[bgcolor=#ffffff]   //保存原有的NtOpenProcess地址到oldNtOpenProcess变量里[/bgcolor]
[bgcolor=#ffffff]   oldNtOpenProcess=pssdtTable[122];[/bgcolor]
[bgcolor=#ffffff]   //SSDT HOOK [/bgcolor]
[bgcolor=#ffffff]   pssdtTable[122]=(int)&asmmyNtOpenProcess;[/bgcolor]

[bgcolor=#ffffff]   KdPrint(("pssdtTable[122] =%X \n",pssdtTable[122]));[/bgcolor]
[bgcolor=#ffffff]    //加入hook代码[/bgcolor]
[bgcolor=#ffffff]    // 请视情况返回DriverEntry例程执行结果[/bgcolor]
[bgcolor=#ffffff]     return STATUS_SUCCESS;[/bgcolor]
[bgcolor=#ffffff]    // return STATUS_DEVICE_CONFIGURATION_ERROR; 参数不正确[/bgcolor]
[bgcolor=#ffffff]    // return STATUS_SUCCESS;[/bgcolor]
[bgcolor=#ffffff]}[/bgcolor]
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

果子博客
扫码关注微信公众号

Archiver|手机版|小黑屋|风叶林

GMT+8, 2026-2-2 01:30 , Processed in 0.115590 second(s), 20 queries .

Powered by 风叶林

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表