c++ dll注册 细节问题

怀疑一个dll被恶意加了时间锁
现象:2017年2月1日之后程序出现异常

经过分析是一个dll(类似ocx功能),无论是注册Regsvr32 还是通过TSTCON32.EXE进行加载改dll,一个程序关键注册表被修改,这个注册表和该dll没有任何关系

dll的部分源码:
STDAPI DllRegisterServer(void)
{
// registers object, typelib and all interfaces in typelib
return _Module.RegisterServer(TRUE);
}
BOOL WINAPI DllMain(HINSTANCE hInstance, DWORD dwReason, LPVOID /*lpReserved*/)
{
if (dwReason == DLL_PROCESS_ATTACH)
{
_Module.Init(ObjectMap, hInstance, &LIBID_UICHANNELLib);
DisableThreadLibraryCalls(hInstance);
}
else if (dwReason == DLL_PROCESS_DETACH)
_Module.Term();
return TRUE; // ok
}
搜索整个dll的源码也没有修改注册表相关操作,也没有对时间2017-2-1的判断。

大神给点思路。

c++

3个回答

先用reg monitor查看具体是谁修改了注册表。
还可以看看dll工程中的rgs文件,他也会修改注册表

wangyangyangcumt
wangyangyangcumt 还有时间点2017年2月1日。应该有几行代码才对。
3 年多之前 回复

13226,15:13:10,regsvr32.exe/2608,ZwSetValueKey,SUCCESS,HKEY_LOCAL_MACHINE\SOFTWARE\XFS\SERVICE_PROVIDERS\ZKRPTR300KS80T,ValueName:Vendor_name Data:"Foxcon",

就是这被修改为错误的内容Foxcon。

.Rgs文件的的全部内容:
HKCR
{
UIChannel.UIChannelCtl.1 = s 'UIChannelCtl Class'
{
CLSID = s '{0A33DE45-E949-4440-A686-5FC5C59633D2}'
}
UIChannel.UIChannelCtl = s 'UIChannelCtl Class'
{
CLSID = s '{0A33DE45-E949-4440-A686-5FC5C59633D2}'
CurVer = s 'UIChannel.UIChannelCtl.1'
}
NoRemove CLSID
{
ForceRemove {0A33DE45-E949-4440-A686-5FC5C59633D2} = s 'UIChannelCtl Class'
{
ProgID = s 'UIChannel.UIChannelCtl.1'
VersionIndependentProgID = s 'UIChannel.UIChannelCtl'
ForceRemove 'Programmable'
InprocServer32 = s '%MODULE%'
{
val ThreadingModel = s 'Apartment'
}
ForceRemove 'Control'
ForceRemove 'Insertable'
ForceRemove 'ToolboxBitmap32' = s '%MODULE%, 101'
'MiscStatus' = s '0'
{
'1' = s '132497'
}
'TypeLib' = s '{66E293FE-B6F6-4B42-B765-F9C041793E91}'
'Version' = s '1.0'
}
}
}

最终确认是这个dll 调用了其他dll,注册的时候其他dll执行时间锁。
还是要认真呀

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问