BlackFeather'S Blog 我的技术小博 -- C/C++,Python,Golang

计算机病毒防火墙完整代码-VB+PowerBasic

 

如要转载或使用,请保留以下信

 

        
作者:BlackFeather
出处:
http://www.fenlog.com

 

这份代码十一的时候再VBGOOD发布了,当时设置了权限,帖子地址是:http://www.vbgood.com/viewthread.php?tid=87917&extra=page%3D1

这个程序的帖子:http://fenlog.com/post/30.html 

 

程序要正常运行,需要以下几个文件:
BFAntiVir.exe:  主程序,起控制和系统辅助作用。
VirMon.exe:    实时监控程序,受主程序控制。
ChangeState.Dll:动态链接库,给程序提供修改内存映射的功能。(在VB中操作比较容易崩溃。)
GlobalHook.Dll:实时监控核心,API HOOK并通知监控程序,给用户提示并根据用户选择作出相应处理。
COC8F0~1.ocx:皮肤控件
MSCOMCTL.OCX:VB中画界面用到的控件。

 

编译:
两个EXE分别是主程序文件夹和病毒防火墙实时监控程序文件夹中的工程,使用了Xtreme SuitePro ActiveX皮肤控件,安装这个控件后直接编译即可(控件下载地址:http://www.vbgood.com/viewthread.php?tid=85929&extra=page%3D1)。
两个DLL在文件夹DLL中,找名字相同,后缀为.bas的文件使用POWERBASIC直接编译即可(PowerBasic去百度吧,很多下载)。

 
 

注:
1、程序和代码稍有点不一样,本来是想改改效率更高,结果改完发现极为不稳定了(DLL与EXE通信的代码)。所以发出来原来比较稳定的这个吧。。。但是还是做好思想准备,还是经常会挂掉所有GUI程序(SetWindowsHookEx函数退出时出错,导致所有被挂钩的GUI程序崩溃)。
2、DLL用了几个比较敏感的函数,被很多杀软误报,请大家不要惊慌。

 

最后我还附上了两个文档,看看文档,这个程序的流程思路就大概明白了。

首先说明现在只是一个演示程序,只是简单的HOOK了几个函数作为演示而已。
隐藏文件/文件夹 功能的演示为c:\aaaa\bf.txt 前提是开启U盘病毒防御,就会隐藏
用的最通俗的SetWindowsHookEx函数,所以好多东西都HOOK不到。ring3下的HOOK确实没什么前途。。。以后转投驱动,前提是如果可能的话。。。
采用ring3下的全局钩子,HOOK了几个API,sendmessage发送消息返回用户的选择。DLL与主程序之间通信采用的是建立文件映射的方法,DLL里新建一个线程循环读取值的方法,虽然不是实时而且费系统资源,但是这是想不到其他好办法的办法,折中选了一个循环时间,感觉还可以,至少在我这里感觉不到有什么影响。程序不太稳定,我发现WIN2K3下退出的时候会引起被HOOK的程序崩溃,在我这里的虚拟机里是这样,别人那里不知道,还有就是有时候explorer.exe有时候会报错,原因都未知。有空了好好调戏一下。所以开程序的时候要多注意一下。其实也没有说的这么玄乎,因为我们小组的几个牛人测试的时候都没有出问题。
 

 

代码截图:

 

 

 

 

 

下载地址:

病毒防火墙-主动防御演示程序代码

 

 

2009年10月20日 | 发布:blackfeather | 分类:VB编程 | 评论:7

留言列表:

  • blackfeather 发布于 2010/7/29 20:47:51  回复
  • 你指的是这一段代码么?这一段if是经典的摘链算法 NtQueryDirectoryFile得到的文件和文件夹信息是一个链表 如果不想显示哪一个 就把那一个节点从链表中摘掉 你可以百度下就了解了

    IF LCASE$(TmpPath)="c:\aaaa\" AND LCASE$(TmpName)="bf.txt" THEN '隐藏文件演示 c:\aaaa\bf.txt
    'MSGBOX "A"
    IF (LastInfo) THEN
    IF (@FileInfo.NextEntryOffset) THEN
    @LastInfo.NextEntryOffset = @LastInfo.NextEntryOffset + @FileInfo.NextEntryOffset
    ELSE
    @LastInfo.NextEntryOffset = 0
    END IF
    END IF

    IF (@FileInfo.NextEntryOffset) THEN
    FileInfo = FileInfo + @FileInfo.NextEntryOffset
    ITERATE DO
    ELSE
    FileInfo = %NULL
    EXIT DO
    END IF
    END IF
    • 落魄 发布于 2010/7/29 21:58:09  回复
    • 谢谢!!学习了!
  • 落魄 发布于 2010/7/29 11:02:37  回复
  • 十分感谢,认真地学习了,有一个地方不明白。
    '阻止进程创建演示c:\aaaa\bf.exe
    这个IF语句的作用和下面的那个IF语句的作用各是什么,希望能回答一下。
  • tr 发布于 2010/3/9 12:17:31  回复
  • 牛人啊!谢谢了
  • hovidelphic 发布于 2010/1/28 22:21:42  回复
  • 很不错的东西
  • BF 发布于 2009/12/21 22:35:49  回复
  • $null这个东西你那里没有定义 你把这个写成""就好了 就是空字符串 我自己修改了INC文件加上的

    最近忙点东西 都没时间上来看看了 过几天忙完了 我把做的成果发出来
  • 多情 发布于 2009/12/19 21:32:53  回复
  • 兄弟,源码我下载了,但在bas编译成DLL的时候出了问题!!我把问题贴上来,你看看!!GlobalHook.bas 这个模块!

    PowerBASIC for Windows
    PB/Win Version 9.01
    Copyright (c) 1996-2009 PowerBasic Inc.
    Venice, Florida USA
    All Rights Reserved

    Error 460 in C:\DOCUMENTS AND SETTINGS\ADMINISTRATOR\桌面\病毒防火墙-主动防御演示程序代码\代码\BFANTIVIR\DLL\ENABLEPRIVILEGE.INC(13:027): Undefined equate
    Line 13: lp = LookupPrivilegeValue($null, "SeDebugPrivilege", tmpLuid)
    ==============================
    Compile failed at 21:34:15 on 2009-12-19

    是怎么回事??
  • 黑若 发布于 2009/11/18 17:32:00  回复
  • 好喜欢 不错 收下了 继续加油

发表留言: