V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
pppwaw
V2EX  ›  程序员

问一点关于 Hook 的问题

  •  1
     
  •   pppwaw · 2020-05-15 18:15:05 +08:00 · 1821 次点击
    这是一个创建于 1663 天前的主题,其中的信息可能已经有所发展或是发生改变。

    从未接触过驱动开发

    现在是想自己实现一个驱动,来对 NtOpenProcess 这些 API 进行 Hook,从而进行防病毒之类的操作

    目前了解到的 Hook 模式有SSDT HookInfinityHook

    有以下问题:

    • 根据了解,Windows 在 8 开始加入了PatchGuard来阻止 SSDT 的 Hook,也就是说目前无法进行 SSDT Hook 了?
    • 根据了解,SSDTHook 的替代方案 InfinityHook 只能 Hook R3 的 API 而不能 Hook R0 的,这个说法是真的吗?如果是真的,那有什么办法进行 R0API 的 Hook 呢?
    • 以及,有没有一些案例让我等小白能理解两种 Hook 从而开发自己的 Hook

    恳请 dalao 们不吝赐教

    PS:

    • 使用系统是 Win10
    • 会 Python 开发,会一点 C++开发,但是没有深入去研究过 Windows 底层
    第 1 条附言  ·  2020-05-15 20:28:36 +08:00
    给一下相关的资料也可以,国外资料勉强也可以
    2 条回复    2020-05-16 08:30:14 +08:00
    fakevam
        1
    fakevam  
       2020-05-15 22:17:35 +08:00
    win7 x64 就有 patch guard 了,绕过 PG 的方案有很多,但是出一个死一个
    一定要做内核防护的话,内核提供了很多 callback,可以驱动注入去做 callback 检测,但是点比较少,比如 object callback

    另外,还有一条万能的路,走虚拟化,在 host 上 hook vm,参考 360 他们的做法

    当然,你可以把 PG 关掉,这个方案搜一把就一大堆了
    pppwaw
        2
    pppwaw  
    OP
       2020-05-16 08:30:14 +08:00
    @fakevam emmm dalao 能给份相关的资料么,不强求绕过 PG
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5768 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 21ms · UTC 02:50 · PVG 10:50 · LAX 18:50 · JFK 21:50
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.