VBGood网站全文搜索 Google

搜索VBGood全站网页(全文搜索)

VB爱好者乐园(VBGood)

 找回密码
 立即注册
搜索
查看: 651|回复: 4

[求助] VB 如何连接 LIB 实现编译呢?(技巧区给垃圾霸占了!!)

[复制链接]
发表于 2017-3-30 16:49:03 | 显示全部楼层 |阅读模式
由于今日技巧区给垃圾贴霸占了,所有只能在这求助呢。!!

由于今日需要用到VMP 后来发现必须静态编译它的 LIB 才能使用 VMProtectGetCurrentHWID (静态编译后 再加壳才能使用。)

我用  1996大神的 VBAux 汇编DLL插件 LINK 了 这个LIB 但好像 也不能用。

以下是VB的

    Dim nSize As Long
    Dim strtmp() As Byte
    Dim ptrtmp As String
   
    nSize = VMProtectGetCurrentHWID(nSize, 0)
   
    ReDim strtmp(nSize - 2) As Byte

    Call VMProtectGetCurrentHWID(VarPtr(strtmp(0)), nSize)
   
    MsgBox StrConv(strtmp, vbUnicode)


以下是 查看 易语言的代码。

.版本 2

.DLL命令 VMP_取硬件标识, 整数型, "VMProtectSDK32.lib", "_VMProtectGetCurrentHWID@8", 公开, 功能:取当前电脑的硬件识别码,如果HWID参数为空,nSize为0,则返回储存硬件识别码所需要的空间大小。
    .参数 HWID, 文本型, 传址, 接收硬件识别码。
    .参数 nSize, 整数型, , HWID的大小。


.版本 2

.子程序 _按钮1_被单击, , , 取硬件码
.局部变量 长度, 整数型
.局部变量 标识, 文本型

长度 = VMP_取硬件标识 (标识, 0)
标识 = 取空白文本 (长度)
VMP_取硬件标识 (标识, 长度)
编辑框1.内容 = 到文本 (标识)


Lib.rar (29.74 KB, 下载次数: 18)
 楼主| 发表于 2017-3-31 11:12:25 | 显示全部楼层
结贴,使用高级版本的vmp 就可以了。。。
回复 支持 反对

使用道具 举报

发表于 2017-3-31 12:59:48 | 显示全部楼层
VB编译调用静态库的方法有两个,一个是先用VC写一个DLL把Lib带进去再调用之(动态编译),还有一种办法是先写空函数(但是原型要完整),放在模块里。接着卡住VB编译过程中的链接过程,把编译出的中间文件提取出来,替换空函数所带模块对应的中间文件,然后再连接起来即可(静态编译)。
静态编译的方法是这样的:
简单说,模块AMOD里的函数ABCD,在C++中其实就是AMOD类的ABCD方法。
所以呢,还是得用VC创建一个工程(控制台工程),写一个类,类名和模块名相同,类里面也要有一个方法和VB的函数名相同。但这个空函数要写成裸函数,这个裸函数要直接jmp到静态库里函数。方法是烦了点,但是不需要再带DLL了
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-4-14 18:01:54 | 显示全部楼层
TangPtr 发表于 2017-3-31 12:59
VB编译调用静态库的方法有两个,一个是先用VC写一个DLL把Lib带进去再调用之(动态编译),还有一种办法是先 ...

感谢回答。最新版本已经可以不用自己去编译lib了,加壳的时候它会自动加入。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-4-14 18:02:11 | 显示全部楼层
TangPtr 发表于 2017-3-31 12:59
VB编译调用静态库的方法有两个,一个是先用VC写一个DLL把Lib带进去再调用之(动态编译),还有一种办法是先 ...

感谢回答。最新版本已经可以不用自己去编译lib了,加壳的时候它会自动加入。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

文字版|手机版|小黑屋|VBGood  

GMT+8, 2017-8-19 15:20

VB爱好者乐园(VBGood)
快速回复 返回顶部 返回列表