EXE文件被病毒感染清除-[E原码]
================
凝逸.修复感染EXE1.0 http://hi.baidu.com/503165656/blog/item/70f672da2d095edab6fd4892.html
凝逸.修复感染EXE1 是参照 EXE文件被病毒感染清除-[E原码] 改写的
=========
.版本 2
.支持库 EThread
.支持库 eAPI
.支持库 edroptarget
.程序集 窗口程序集1
.程序集变量 停止退出, 逻辑型
.程序集变量 感染数, 整数型
.程序集变量 清除失败数, 整数型
.程序集变量 清除成功数, 整数型
.程序集变量 病毒头文件, 字节集
.程序集变量 病毒原型文件, 字节集
.程序集变量 病毒长度, 整数型
.子程序 _按钮1_被单击
编辑框1.内容 = “”
启动线程 (&子程序1, )
.子程序 子程序1
.局部变量 I, 整数型
停止退出 = 假
按钮1.禁止 = 真
标签3.标题 = “找到被感染文件共 ” + 到文本 (感染数) + “ 个”
.计次循环首 (取驱动器数量 (1), I)
寻找 (字符 (I + 66) + “:”, “*.EXE”)
.计次循环尾 ()
按钮1.禁止 = 假
标签1.标题 = “成功清除 ” + 到文本 (清除成功数) + “ 个, 清除失败 ” + 到文本 (清除失败数) + “ 个”
.如果真 (感染数 > 0)
创建目录 (取运行目录 () + “\历使记录”)
写到文件 (取运行目录 () + “\历使记录\” + 到文本 (取现行时间 ()) + “.TXT”, 到字节集 (到文本 (取现行时间 ()) + #换行符 + #换行符 + 编辑框1.内容 + #换行符 + #换行符 + “找到被感染文件共 ” + 到文本 (感染数) + “ 个, 成功清除 ” + 到文本 (清除成功数) + “ 个, 清除失败 ” + 到文本 (清除失败数) + “ 个”))
.如果真结束
信息框 (“ 清除完成! ” + #换行符 + #换行符 + “ 成功清除 ” + 到文本 (清除成功数) + “ 个, ”, 0, )
.子程序 寻找
.参数 目录, 文本型
.参数 文件名, 文本型
.局部变量 文件名2, 文本型
.如果真 (停止退出)
返回 ()
.如果真结束
.如果真 (取文本右边 (目录, 1) ≠ “\”)
目录 = 目录 + “\”
.如果真结束
文件名2 = 寻找文件 (目录 + 文件名, 32)
.判断循环首 (文件名2 ≠ “”)
.如果真 (文件名2 ≠ “.” 或 文件名2 ≠ “..”)
标签1.标题 = 目录 + 文件名2
病毒处理 (目录 + 文件名2)
.如果真结束
文件名2 = 寻找文件 (, )
处理事件 ()
.如果真 (停止退出)
返回 ()
.如果真结束
.判断循环尾 ()
文件名2 = 寻找文件 (目录 + “*.*”, #子目录)
.判断循环首 (文件名2 ≠ “”)
.如果真 (文件名2 ≠ “.” 且 文件名2 ≠ “..”)
标签1.标题 = 目录 + 文件名2
寻找 (目录 + 文件名2, 文件名)
.如果真结束
文件名2 = 寻找文件 (, #子目录)
.判断循环尾 ()
.子程序 病毒处理
.参数 路径, 文本型
.局部变量 A1, 字节集
.局部变量 文件号, 整数型
文件号 = 打开文件 (路径, , )
移到文件首 (文件号)
A1 = 读入字节集 (文件号, 病毒长度)
.如果真 (A1 = 病毒原型文件)
感染数 = 感染数 + 1
标签3.标题 = “找到被感染文件共 ” + 到文本 (感染数) + “ 个”
移到文件首 (文件号)
.如果真 (病毒长度 = 取文件长度 (文件号))
关闭文件 (文件号)
.如果 (删除文件 (路径))
编辑框1.加入文本 (“删除文件成功 ” + 路径 + #换行符)
清除成功数 = 清除成功数 + 1
.否则
编辑框1.加入文本 (“删除文件失败” + 路径 + #换行符)
清除失败数 = 清除失败数 + 1
.如果结束
返回 ()
.如果真结束
.如果 (删除数据 (文件号, 病毒长度))
编辑框1.加入文本 (“清除成功 ” + 路径 + #换行符)
清除成功数 = 清除成功数 + 1
.否则
编辑框1.加入文本 (“清除失败 ” + 路径 + #换行符)
清除失败数 = 清除失败数 + 1
.如果结束
.如果真结束
关闭文件 (文件号)
.子程序 _按钮2_被单击
停止退出 = 真
.子程序 __启动窗口_首次激活
拖放对象1.注册拖放控件 (编辑框1.取窗口句柄 ())
.子程序 _拖放对象1_得到文件
.参数 接收到的文件路径, 文本型
病毒处理 (接收到的文件路径)
.子程序 _按钮3_被单击
' 通用对话框1.文件名 = 取运行目录 () + “\病毒原型文件头\1”
.如果真 (通用对话框1.打开 () = 假)
返回 ()
.如果真结束
编辑框2.内容 = 通用对话框1.文件名
病毒原型文件 = 读入文件 (通用对话框1.文件名)
病毒长度 = 取字节集长度 (病毒原型文件)
.子程序 _按钮4_被单击
载入 (窗口1, _启动窗口, 真)
.子程序 __启动窗口_创建完毕
通用对话框1.初始目录 = 取运行目录 ()
=============
.版本 2
.程序集 窗口程序集2
.子程序 _按钮3_被单击
.如果真 (通用对话框1.打开 () = 假)
返回 ()
.如果真结束
编辑框1.内容 = 通用对话框1.文件名
.子程序 _按钮2_被单击
.如果真 (通用对话框1.打开 () = 假)
返回 ()
.如果真结束
编辑框2.内容 = 通用对话框1.文件名
.子程序 _按钮1_被单击
.局部变量 A, 字节集
.局部变量 B, 字节集
.局部变量 A1, 整数型
.局部变量 B1, 整数型
.局部变量 C, 整数型
.局部变量 目录, 文本型
.局部变量 文件名, 文本型
' 如果真 (C = 1)
.如果真 (文件是否存在 (编辑框1.内容) = 假)
信息框 (“ 已知被感染的文件 不存在 ”, 0, )
返回 ()
.如果真结束
.如果真 (文件是否存在 (编辑框2.内容) = 假)
信息框 (“ 已知未感染的文件 不存在 ”, 0, )
返回 ()
.如果真结束
A = 读入文件 (编辑框1.内容)
A1 = 取字节集长度 (A)
B = 读入文件 (编辑框2.内容)
B1 = 取字节集长度 (B)
编辑框3.加入文本 (“文件大小对比!” + #换行符)
.如果 (B1 > A1)
编辑框3.加入文本 (“错误!被感染的文件 比 未感染的文件 还小” + #换行符)
返回 ()
.否则
编辑框3.加入文本 (“被感染的文件 比 未感染的文件 大 ” + 到文本 (A1 - B1) + “字节” + #换行符)
.如果结束
编辑框3.加入文本 (“寻找未感染的文件!” + #换行符)
C = 寻找字节集 (A, B, )
.如果 (C = -1)
编辑框3.加入文本 (“错误!在被感染的文件中,找不到未感染的文件” + #换行符)
返回 ()
.否则
编辑框3.加入文本 (“在被感染的文件中已找不到未感染的文件” + #换行符)
编辑框3.加入文本 (“位置 ” + 到文本 (C) + #换行符)
.如果 (C + B1 - 1 = A1)
编辑框3.加入文本 (“在文件的最尾面” + #换行符)
.否则
.如果 (C = 1)
编辑框3.加入文本 (“在文件的前面” + #换行符)
.否则
编辑框3.加入文本 (“在文件的中间” + #换行符)
.如果结束
返回 ()
.如果结束
.如果结束
编辑框3.加入文本 (“病毒文件头分析写出” + #换行符)
目录 = 取运行目录 () + “\病毒原型文件头”
创建目录 (目录)
文件名 = 取文本右边 (编辑框1.内容, 取文本长度 (编辑框1.内容) - 倒找文本 (编辑框1.内容, “\”, , 假))
A = 取字节集左边 (A, C - 1)
.如果 (写到文件 (目录 + “\” + 文件名 + “.BD”, A))
编辑框3.加入文本 (“写出病毒文件头成功!” + #换行符)
编辑框3.加入文本 (“路径 ” + 目录 + “\” + 文件名 + “.BD” + #换行符)
_启动窗口.通用对话框1.文件名 = 目录 + “\” + 文件名 + “.BD”
.否则
编辑框3.加入文本 (“写出病毒文件头失败!” + #换行符)
.如果结束
[ 本帖最后由 qqq000@qq.com 于 2007-4-23 08:59 编辑 ] |