kingdee金蝶ocx插件VB调用问题

在使用金蝶ocx控件的时候VB6提示该部件的许可证信息没有找到,在设计环境中,没有合适的许可证使用该功能。

还以为和原来一样 vb6OCX许可证算法分析https://landv.cn/p/f225098e.html 结果发现是用MFC开发的ocx。经过静态调试、调试都没有发现有什么问题。

image-20240527154720375

image-20240527154824593

然后用MFC创建了一个ocx控件。原来只是简单的校验,在用ida静态反编译中也找到了这部分。

运行时许可证打上勾。

image-20240527155943240

1
2
3
4
5
6
7
8
9
10
11
12
13
// 授权字符串

static const TCHAR _szLicFileName[] = _T("MFCActiveXControl1.lic");
static const WCHAR _szLicString[] = L"Copyright (c) 2024 P R C";

// CMFCActiveXControl1Ctrl::CMFCActiveXControl1CtrlFactory::VerifyUserLicense -
// 检查是否存在用户许可证

BOOL CMFCActiveXControl1Ctrl::CMFCActiveXControl1CtrlFactory::VerifyUserLicense()
{
return AfxVerifyLicFile(AfxGetInstanceHandle(), _szLicFileName,
_szLicString);
}

image-20240527155241415

只需要定位字符AfxVerifyLicFile,不知道x64dbg 抽什么疯,跳转起来挺麻烦的。中间分析过程就不说了。就直接说最后的方法吧。

image-20240527155556338

也就这个位置,这就简单了,直接搜索字符串吧。

image-20240527155645581

image-20240527155717162

_szLicFileName是变化的,_szLicString是固定的。也就是Copyright (c) 1998 KingDee每次只需要找到KDSpread.lic.lic搜索

最后在ocx控件的同一目录创建lic文件。再从vb6中拖住就能显示了

image-20240527160107547

image-20240527160137588

A .net OLE/COM viewer and inspector to merge functionality of OleView and Test Container

https://github.com/landv/oleviewdotnet

image-20240527160600360