
以上是全文转载的
===============================
顺便提醒一下,目前网上的"VB反编译精灵",80%以上带病毒,100%带插件,如要安装,请仔细检查,最好是用虚拟机,还有开系统还原
研究到大半夜得出结论是VB做不到这一点,具体原因入下:VB可以写出标准DLL,用一些特殊的插件或者自己编写一些小工具可以做到这一点,百度上我也回答过,验证是可行的,你写的注入代码除了我前面提到过的那一点之外,也都是正确的,但是VB确实每次都会让目标进程崩溃,用IDA查了一下,发现总是死在这个函数里vbaSetSystemError ,在CSDN上查了一下,这个函数是VB编译时候自动加上的,它会检查每次调用API的返回值,但是因为我们是在DLL内部掉API,VB本身设计时没考虑这一点,所以到这个函数里头,它就崩溃了,而我们也没办法阻止我们自己的代码调用这个函数,所以这个只能说是VB自身的问题,确实没办法用VB做线程钩子,只能用VC去做。
查了一下,如何去掉这个函数网上也提了一些说法,不过整体上感觉过于复杂,不值得使用,其中主要的手段就是修改汇编指令,把这个函数从内存里改掉,这个办法通用性差,不值得使用,别的方法就不太有效了。
所以最后总结下来VB就是不支持这么做,没有办法了
============================
Private Declare Function CallNextHookEx Lib "user32" (ByVal hhook As Long, ByVal ncode As Long, ByVal wParam As Long, lParam As Any) As Long
这个API是从API浏览器上拷贝下来的吧?这么干是不行的。。
必须这样:
Private Declare Function CallNextHookEx Lib "user32" (ByVal hhook As Long, ByVal ncode As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
你代码里没有callnexthook,这样恐怕不行吧
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)