用户登录  |  用户注册
首 页源码下载网络学院最新源码源码排行屏蔽广告
当前位置:新兴网络 > 源码下载 > VB源码 > 文件操作
VB API HOOK拦截Windows Explorer删除进程
  • 源码大小:309 KB
  • 推荐星级:
  • 更新时间:2014-01-02 05:15:00
  • 源码语言:简体中文
  • 授权方式:免费版
  • 联系方式:暂无联系方式
  • 官方主页:Home Page
  • 插件情况:
  • 运行环境:VB 6.0
  • 文件MD5:ee6eab5ef330469681b711eab4ebbbf4  [校验]
  • 相关Tags:删除进程  

源码下载简介

VB拦截Windows Explorer删除进程,内含API HOOK,源代码:倒霉蛋儿,程序有时候也会窗口勾挂失败!
  勾住了SHFileOperation等函数,DLL用Delphi写的C会的太少,查了半天才知道原来explorer是用SHFileOperation删除文件,经过测试很稳定,没有出现崩溃的情况,由于只勾住了SHFileOperation函数,所以别的程序要是调用DeleteFile删除文件,拦截不到,要是想拦截DeleteFile自己接着写吧。
  
  mod_Inject.bas类的注释摘录:
  Dim MyAddr As Long ‘执行远程线程代码的起始地址。这里等于LoadLibraryA的地址
  ‘dll文件路径
  MyDllFileLength = LenB(StrConv(MyDllFileName, vbFromUnicode)) + 1
   ‘这里把dll文件名从Unicode转换成Ansi,否则英文字母是2个字节。 _
  顺便说一下,学过C的应该知道字符串要以/0标志结尾,所以dll文件名长度要加上1个字节存放Chr(0)
  ‘得到进程的句柄
  在目标进程中申请分配一块空白内存区域。内存的起始地址保存在MyDllFileBuffer中。 _
  这块内存区域我们用来存放dll文件路径,并作为参数传递给LoadLibraryA。
  在分配出来的内存区域中写入dll路径径。注意第二个参数传递的是MyDllFileBuffer的内容, _
  而不是MyDllFileBuffer的内存地址?
  If MyReturn = 0 Then Inject = False
  MyAddr = GetProcAddress(GetModuleHandle("Kernel32"), "LoadLibraryA")
  ‘得到LoadLibraryA函数的起始地址。他的参数就是我们刚才写入的dll路径。但是LoadLibraryA本身是不知道参数在哪里的。 _
  接下来我们就用CreateRemoteThread函数告诉他参数放在哪里了? If MyAddr = 0 Then Inject = False
  MyResult = CreateRemoteThread(ProcessHandle, 0, 0, MyAddr, MyDllFileBuffer, 0, 0)
  好了,现在用CreateRemoteThread在目标进程创建一个线程,线程起始地址指向LoadLibraryA, _
  参数就是MyDllFileBuffer中保存的dll路径?
   If MyResult = 0 Then
   Inject = False
   Else
   Inject = True
   End If
   ‘接下来你可以使用WaitForSingleObject等待线程执行完毕。 _
   并用GetExitCodeThread得到线程的退出代码,用来判断时候正确执行了dll中的代码。
   CloseHandle MyResult
   CloseHandle ProcessHandle
   ‘扫地工作
  End Function

源码下载评论评论内容只代表网友观点,与本站立场无关!

   评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论