下载了VB6.0企业版,总是在下载完了之后,在对话框上填完内容,开始下载突然就未响应,下了好几个网站都一样,该怎么办?谢谢
https://msdn.itellyou.cn/
从这里下载
【相关推荐】
那么具体调用是哪个函数呢,这个说起来比较复杂,需要懂得一些COM组件的原理。这里把我找到的一个源代码贴上来,这样讲起来比较容易。代码来自微软的.Net源码,其中有个叫做AxHost的类,专门用来封装OCX控件。让控件可以放置在Form中进行设计。其中最关键的初始化代码如下:
private void CreateWithLicense(string license, Guid clsid) {
if (license != null) {
try {
Debug.WriteLineIf(AxHTraceSwitch.TraceVerbose, "Creating object with license: " +
clsid.ToString());
UnsafeNativeMethods.IClassFactory2 icf2 = UnsafeNativeMethods.CoGetClassObject(ref clsid,
INPROC_SERVER, 0, ref icf2_Guid);
if (icf2 != null) {
Debug.WriteLineIf(AxHTraceSwitch.TraceVerbose, "\tClassFactory" + (icf2 !=
null).ToString());
//最关键的调用,CreateInstanceLic
icf2.CreateInstanceLic(null, null, ref NativeMethods.ActiveX.IID_IUnknown, license,
out instance);
Debug.WriteLineIf(AxHTraceSwitch.TraceVerbose, "\t" + (instance != null).ToString());
}
}
catch (Exception t) {
Debug.WriteLineIf(AxHTraceSwitch.TraceVerbose, "Failed to create with license: " +
t.ToString());
}
}
if (instance == null) {
CreateWithoutLicense(clsid);
}
}
代码中,最关键的调用就是CreateInstanceLic,这个函数是COM组件标准函数,隶属于lCassFactory接口下。感兴趣可以翻翻msdn文档。IDE也好,你自己写代码调用也好,首先需要调用的就是这个函数,这个函数有个返回值,就是instance。如果你传入的lic字符串不合法,你就只能得到null。换言之,你想初始化一个OCX控件,你首先需要调用CreateInstanceLic,然后才能得到实例。所以说所有的合法性判定,license校验都在这个函数里面。
那机智的你肯定在想,可否反编译干他!答:我帮你试试。下图是反编译vb6的OCX文件,你会发现连个鬼都找不到,IDA加载后只能看到不几个函数:
之所以会这样,主要因为VB6大部分功能是委托给MSVBVM60.dll去处理的,很多标准功能都是在这个dll内部实现的。所以如果想找到CreateInstanceLic,你必须去反编译MSVBVM60.dll。而这个dll本身比较复杂,是c++和汇编语言编写的混血儿,其实我以前也研究过一段时间,发现真的非常难。很多国外的大牛也在研究后做了很多工作,比如编写idc文件给IDA分析使用,我觉得这个非常好用,配合vb反编译程序,简直超爽。还有人专门整理了历史过程中发行MSVBVM60.dll的所有版本,这看似好像挺无聊的,但是他解决了一个很大的问题,就是符号文件。我们下面聊聊符号文件。
下载我亲自上传的,肯定可用
https://download.csdn.net/download/caozhy/9752916
留下 email 可以发给你。