最近遇到的一个问题,有些老师讲课的时候,喜欢把我们的机子锁定,于是我就想写个程序屏蔽该功能。那个进程基本上没什么保护机制,远程注入等都能成功进行,但是拦截BlockInput函数的时候,却不能成功
我使用的方法是替换该进程输入节...
在网上找资料的时候,遇到一个网页,说BlockInput不能在ring3下进行拦截..
那网页不能打开,看都是看的网页快照,讲得也比较模棱两可,有没有高手知道原理的,讲解一下,谢谢了!我知道就我的那个问题可能插入DLL然后在DLL中调用BlockInput(FALSE)就有可能解决...但是,那进程是持续性调用该函数的,我总不能那样做吧...而且我特别想知道为什么不能在ring3下拦截BlockInput函数....谢谢了!!

解决方案 »

  1.   

    你能够确定那个程序不停调用 BlockInput ? 那就在他动态调用的地方直接nop掉就行咯,在你的进程中写个动态补丁
      

  2.   

    呵呵,mengde007说的我当然也知道,我提倡自由嘛...那样做,就接收不到信息了,我的意思是废除一个功能而已,不影响教学的情况下做到自由控制自己的计算机。关于 lvyinghong 说的:如果不是不停调用BlockInput那就只能是设置底层的HOOK了...
    我也想过拦截该API啊,就是不行我才发帖子想知道原理的...难道...在BlockInput内部是设置底层的HOOK?...
      

  3.   

    没有研究过blockinput是不是可以 hook。不过 你直接 把 调用blockinput的  代码  注释掉啊,把他调用的代码改为nop 也算一种办法吧 。比如他以前事 
    push 1
    call  blockinput只要你找到他调用的地方,就可以把它改成  
    nop
    nop
    这样啊,不就行了吗。  
      

  4.   

    我怎么能改它里面的代码?我做的只是插入一个DLL到它的进程空间,修改它输入节的BlockInput对应的地址而已,要是像你说的那样能修改源码,就不需要这样麻烦了!
      

  5.   

    他的意思是用OD跟踪找到调用BlockInput的地方,用NOP代替之。至于修改exe文件,可以在UltraEdit中进行。如果没有针对整个PE文件做过MD5之类的校验检查的话,这样的方法就一劳永逸了。
      

  6.   


    BlockInput()在2k/XP等系统中,直接用CTRL+ALT+DeL就能解了吧,如果这样能解,没必要弄这么麻烦。
      

  7.   


    对,先用OD或者IDA找到调用的地方,修改在运行时用读写内存的办法修改也可以的了
      

  8.   

    没用的...有还原卡。。不能每次都修改吧...而且我主要是想知道 为什么 BlockInput 不能被拦截。
      

  9.   

    声明:本贴重点讨论的是BlockInput为什么不能在ring3下进行拦截...