它主要完成 :
初始化扫描引擎;
加载ksafevul.dll中的API函数, 创建CVulEngine中的IVulEnvironment 接口;
解发开始扫描的消息。
void CBeikeVulfixHandler::InitEnv()
{
if(!theEngine)
{
// 初始化扫描引擎
theEngine = new CVulEngine;
// 加载ksafevul.dll中的API函数, 创建CVulEngine中的IVulEnvironment 接口
theEngine->_InitFunctions();
m_WinInfo.Init();
//m_WinInfo64 = IsWin64();
}
// 解发开始扫描的消息
PostMessage( WMH_SCAN_START, 0, 0);
}
大家可以用VS2005打开 beikesafevul.sln


(2、2、1、1)首先编译BeikeUtils工程。
会出现以下报错:
1>d:\自己的经验总结\自己的经验总结\金山开源\oss\pcmanager\src\publish\common/registrywow.h(18) : error C2146: 语法错误 : 缺少“;”(在标识符“OpenKeyEx”的前面) 1>d:\自己的经验总结\自己的经验总结\金山开源\oss\pcmanager\src\publish\common/registrywow.h(18) : error 430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int 1>d:\自己的经验总结\自己的经验总结\金山开源\oss\pcmanager\src\publish\common/registrywow.h(19) : error 430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
解决方法请参考我的另一篇文章:(里面有同样的出错的处理)
金山卫士开源软件之旅(一) VS 2005环境下编译
(2、2、1、2) 其它的工程都顺利编译通过,只有两个工程ksafevul、VulfixLib出现报错:
envutils.h(428) : error C3861: “IsWin64”: 找不到标识符
它是用来判断系统是不是64位用的。
既然源码没有提供此函数,那么我们自己来实现吧:
考虑到调用到此函数的cpp文件都包含了BeikeUtils.h文件,我决定在BeikeUtils 中添加此函数体
BeikeUtils.h中添加
// 判断是不是64位的系统 // 返回值: TRUE 是64位系统;FALSE 不是64位系统 BOOL IsWin64();
BeikeUtils.cpp里添加
BOOL IsWin64()
{
#define IS_64BIT_OS (sizeof(void *) == 8)
return IS_64BIT_OS;
}
ksafevul工程编译通过后就生成了ksafevul.dll.这样大家就可以调试扫描漏洞与修复漏洞的过程了。
void CBeikeVulfixHandler::OnBkBtnScan()
{
if(m_firstInited)
{
// Clean downloaded files
BOOL bSave = BKSafeConfig::Get_Vulfix_SaveDownFile();
if( !bSave )
theEngine->m_fixLog.CleanFiles(FALSE, NULL);
m_firstInited = FALSE;
SetItemVisible(1015, !theEngine->IsSystemSupported());
}
// 把扫描结果列表清空
ResetListCtrl(m_wndListCtrlVul);
// 调用引擎起一线程开始扫描
if( theEngine->ScanVul( m_RefWin.m_hWnd ) )
{
// 界面处理
m_dwScanBeginTime = GetTickCount();
m_bScanStarted = FALSE;
m_nScanState = 0;
m_nTotalItem = 0;
m_nCurrentItem = 0;
_SetDisplayState(SCANSTATE_SCANNING);
_SetScanProgress( 0 );
m_RefWin.SetTimer(0, 200, NULL);
m_wndListCtrlVul.SetEmptyString(BkString::Get(IDS_VULFIX_5027));
m_RefWin.StartIconAnimate( IDC_IMG_VULFIX_SCAN_ANIMATION, IDC_PROGRESS_VULFIX_SCANNING, 300);
SetItemDWordAttribute(IDC_PROGRESS_VULFIX_SCANNING, "showpercent", 0);
}
}
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/ruanjian/article-38143-3.html
你马云说得有错吗
你一老大帝国
跟我有什么关系吗