CSafe开发日志

以下是CSafe开发日志:

2024.1.10
1. 取消了图形界面,打算转型为控制台操作,是否取消隐藏窗口功能改日再议

2024.1.11
1. 将KillProcess函数由只杀死寻找到的目标程序改为杀死进程列表中所有进程名与目标进程相同的程序
2. 将已经在白名单中的文件取消日志输出

2024.1.12
1. 添加将输出到控制台的程序日志根据时间保存到文件的功能
2. 添加当检测到病毒时在程序日志窗口输出文件特征码的功能
3. 将特征码计算函数的是否直接输出文件目录的功能砍掉,改为直接通过文件名是否成功打开的方式自动决定返回值
4. 将WindowsAPI启动杀毒线程的功能改为用C++thread函数启动
5. 重构杀毒引擎功能,将实时遍历进程杀毒改为只对刚刚启动的程序进行检查,平均CPU功耗降至重构前0.03%以下,峰值CPU功耗降至重构前0.2%以下,反应速度以及杀毒效率大幅提高
6. n处细微改动,优化操作体验

2024.1.14
1. 全面重构CSafe代码,重建CSafe项目源文件,将项目正式由"C盾"重命名为"CSafe",原代码文件结构与重构后代码文件结构如下:

源代码文件结构:
根目录
|----C盾.dev    //项目文件
|----main.cpp   //主源码文件
|----C盾.ico    //图标
|----C盾.exe    //杀软主程序
|----Header     //头文件文件夹
|    |----Log.h                  //日志头文件
|    |----DeleteVirus.h          //删除病毒头文件(文件处理等)
|    |----ElseFunctions.h        //其他函数的头文件(启动项等)
|    |----ExecuseDestoryProcess.h//杀除进程函数的头文件
|    |----GetPower.h             //提权函数的头文件
|    |----PrintScreen.h          //截图函数的头文件(脑子抽抽了?)
|    |----SHA256.h               //计算SHA-256文件特征码的头文件
|
|----Data
|    |----VirusLibrary.libdat    //病毒库文件
|    |----WhiteList.VirusDat     //白名单文件
|    |----VirusPath              //病毒文件隔离文件夹
|    |    |----[Empty]           //VirusPath为空
|
|----[End]

重构后代码文件结构:
根目录
|----CSafe.dev  //项目文件
|----main.cpp   //主源码文件
|----CSafe.ico  //图标
|----CSafe.exe  //杀软主程序
|----Header     //头文件文件夹
|    |----AllFunction.h        //所有基础功能性头文件汇总(即包含Function文件夹中的所有头文件)
|    |----AllHead.h            //项目中使用到的所有头文件的汇总(系统头文件,包括WindowsAPI、C++STL等)
|    |----AllVariable          //项目中使用到的所有全局变量汇总
|    |----Initialization.h     //初始化函数包含头文件
|    |----MainAntivirusEngine.h//主杀毒引擎头文件
|    |----MainUI.h             //主界面头文件
|    |----RiskLevel.h          //所有危险等级的宏定义头文件
|    |----VirusHandle.h        //病毒处理UI头文件
|    |----Function             //基础功能性头文件文件夹
|    |    |----Log.h                  //日志功能头文件
|    |    |----Authority.h            //提权头文件
|    |    |----ElseFunctions.h        //杂项函数头文件(启动项、关机、控制台专控函数等)
|    |    |----FileHandle.h           //文件处理头文件(删除、锁定、隔离等)
|    |    |----GetProcessInformation.h//进程信息获取头文件(进程源路径/全路径、获取PID码等)
|    |    |----GetSHA256.h            //SHA-256文件特征码计算头文件
|    |    |----HandleProcess.h        //进程处理头文件(结束、挂起等)
|    |
|    |----AntivirusEngine      //杀毒引擎实现文件夹
|    |    |----BDAE.h          //BDAE子杀毒引擎,也就是主力杀毒引擎实现头文件
|    |    |----RAE.h           //RAE子杀毒引擎实现头文件
|    |    |----EngineHeadFile  //杀毒引擎实现所用到的级别处于基础和高级实现之间的头文件(包括BDAE所用到的检测进程根目录是否有隐藏文件、进程是否有管理员权限和RAE所用到的一系列功能实现函数所包含头文件)
|    |    |    |----BDAE.h     //BDAE子杀毒引擎所用到的函数包含头文件
|    |    |    |----RAE.h      //RAE子杀毒引擎所用到的函数包含头文件
|
|----Data                      //程序执行时所用数据
|    |----VirusLibrary.csdata  //病毒库文件
|    |----WhiteList.VirusDat   //白名单文件
|    |----VirusPath            //病毒文件隔离文件夹
|    |    |----[Empty]         //VirusPath为空
|
|----Log                       //日志存放头文件
|    |----[Empty]              //Log为空
|
|----[End]

2. 再次重构杀毒引擎,正式应用依据病毒危险等级执行对应行为,动态分析病毒风险的杀毒策略,将危险等级输出到日志,并且在提示窗中输出危险等级(此前一直是直接由单独的项目判定风险,风险等级不叠加,现在撤销单独项目对病毒执行操作的权限,转为返回危险等级,由主引擎执行操作),再次大幅提升检测准确性与安全性



2024.1.30
1. 添加命令gethash,功能获取指定文件SHA-256
2. 添加命令lockfile,功能锁定指定文件直到退出CSafe
3. 添加命令addvirus,功能向病毒库记录一个文件
4. 实现命令scan和dscan
5. 修复关闭/开启杀毒引擎时会因为多线程同时写入/读取同一个变量导致操作失败的bug(互斥量解决)
6. 添加删除白名单项目、添加病毒库记录的功能(函数实现,未公开指令)
7. 添加扫描指定文件和扫描指定目录的功能(函数实现,未公开指令)
8. 为实现功能7、8,添加Function头文件FolderHandle.h
9. 技术层实现BDAE引擎的启动项检测(源代码可在HeadFile/AntivirusEngine/EngineHeadFile/BDAE.h查看)
10. 将杀毒引擎查杀延迟从无延迟改为延迟3秒(从而更好地观察病毒行为,请放心,从它运行的一刻起就在我们的掌控之下)
11. 更改文件SHA-256的哈希算法

2024.1.31
1. 微调初始化部分,日志输出更加完整
2. 实现BDAE引擎检测项启动项检测
3. 实现BDAE引擎检测项IEFO映像劫持检测
4. 将程序启动后的多引擎行为分析从整合在主线程中运行改为了由单独线程整合运行
5. 关闭读写加速(开启会有很多奇奇怪怪的bug)
6. 将原本的启动项名称"Cdun"改为"CSafe"

2024.2.21
额……好吧,我想我有必要发泄一下自己的情绪
我居然没tm的意识到1.30日的时候最终完成出来的杀软没法杀毒
导致问题越积越多……
现在恢复到了1.30号的一个Unknown备份
该备份相较1.30日的11条功能,情况如下:

前两条已实现

第三条有bug

*第四条实现scan(错误)

dscan未实现

第五条未实现,待定解决方案改为通过volatile关键字实现

第六条由于与第三条问题相同,故有bug

第七条……我是若只,第七条已实现,已公开指令为scan

第8条实现

第9-11条均未实现

更正,第4条两条指令均未实现,scan扫描处理未明确

总结:
未完成条目:
第4、5条、第9-11条未完成

有bug条目:
第三条、第6条


今日结果:
修复第三条、第六条的bug


2024.3.16-17

1. 重构杀毒软件的杀毒引擎,将其单独隔离出来作为一个杀毒引擎,保留了原集成版杀毒引擎的所有功能
2. 添加一项判断条件:程序本身隐藏,等级五级
当前目录结构:
CSafeAntivirusEngine // 根文件夹,根文件夹内的两个.h头文件为接口封装头文件
|
|----MainAntivirusEngine.h // 主头文件,包括调用API等封装
|----MainAntivirusEngineHeadFile.h // 主头文件所用到的功能性头文件(如获取新启动的进程等函数)
|----AntivirusEngine // 杀毒引擎的主目录
|    |
|    |----TOProtect.h // TOProtect子引擎的主头文件实现
|    |----LSProtect.h // LSProtect子引擎的实现
|    |----EngineHeadFile // 杀毒引擎用到的功能性头文件
|    |    |
|    |    |----SHA256.h // SHA-256文件特征计算模块
|    |    |----TOProtect.h // TOProtect用到的一些功能性函数(如获取注册表启动项等)

共3个文件夹及子文件夹(包括根文件夹),6个文件,合计1289行代码,不含SHA-256计算部分共584行

CSafe正式复活!!哭死啊啊啊啊啊啊啊啊QAQ 3个月了终于搞定了QwQ
3.16,正好该两周年庆了,我就说吗,CSafe周年庆怎么可以没有大更新啊23333


2024.3.19
发布CSafeAE24.3.19,
对头文件、函数命名等做了微调,main改为CSafe。
为AntivirusEngine/TOProtect.h中的TOProtect函数添加了更详细的注释

2024.3.20
1. 给CSafeAntivirusEngine_Choke()函数加了35ms循环,降低CPU使用率。
CSafe响应时间表:
最坏情况:150-200ms
最好情况:64ms
平均情况:70-80ms
平均情况出现率:62%左右
最好情况出现率:20%左右
最坏情况出现率:18%左右
百毫秒响应率理论数据81%,实际有希望达到91%

2. 给CSafe病毒库添加了60个病毒,大部分是远古经典


2024.3.21
1. 文档勘误。
2. 添加了一个小条件:当LSProtect检测到目标文件是病毒时,直接返回22000级特殊风险等级,代表确认病毒。