本帖最后由 cjxdn 于 2017-4-15 15:11 编辑
用vbs脚本生成大漠5.1423易语言免注册调用模块 兼容多线程 破/解收费功能
http://www.52pojie.cn/thread-599550-1-1.html
(出处: 吾爱破/解论坛)
1.照搬大漠函数,方便对照大漠接口说明编写代码
2.破/解收费功能,不是什么秘密了
3.动态调用dmreg.dll创建对象,不注册插件
4.兼容多线程,不需要初始化COM和反初始化
5.模块总大小1.25 MB,大漠本身1.11 MB,DmReg48.0 KB,绿色纯净,不知道为什么别人的模块2M,3M加了什么东西。
--------------------------------------------------------------IDA文件
--------------------------------------------------------------脚本部分
- DM_IDL = 读文本内容("C:\Users\Administrator\Desktop\dm5_1423.IDL")
- DM_IDL_Arr = Split(DM_IDL, "HRESULT")
- DM_IDL_Arr_L = UBound(DM_IDL_Arr)
-
- Call 删除文件("c:\dm5_1423.txt", 1)
- Call 创建文件("c:\dm5_1423.txt")
-
- 版本 = ".版本 2" & vblf
- TracePrint "开始生成:" & Now
- For i = 1 To DM_IDL_Arr_L
- 返回值部分 = Split(Split(DM_IDL_Arr(i), "[out, retval] ")(1), "* ret")(0)
- 子程序 = Replace(Split(DM_IDL_Arr(i), "(")(0)," ","")
- 返回值 = iif(返回值部分 = "long", "整数型", "文本型")
- 调用方法 = iif(返回值 = "整数型", "返回(dm.数值方法 (“" & 子程序 & "”, ", "返回(dm.文本方法 (“" & 子程序 & "”, ")
- 子程序 = ".子程序 " & 子程序 & ", " & 返回值 & ", 公开" & vblf
- 参数部分 = Split(Split(DM_IDL_Arr(i), "(")(1), "[out, retval]")(0)
- 参数部分 = Replace(参数部分,"[in] long ","整数型[ DISCUZ_CODE_0 ]quot;)
- 参数部分 = Replace(参数部分, "[in] BSTR ", "文本型[ DISCUZ_CODE_0 ]quot;)
- 参数部分 = Replace(参数部分,"[in] single ","小数型[ DISCUZ_CODE_0 ]quot;)
- 参数部分 = Replace(参数部分, "[in] double ", "双精度小数型[ DISCUZ_CODE_0 ]quot;)
- 参数部分 = Replace(参数部分, "[out] VARIANT* ", "参考$整数型[ DISCUZ_CODE_0 ]quot;)
- 参数部分 = Replace(参数部分, "[in, out] VARIANT* ", "参考$整数型[ DISCUZ_CODE_0 ]quot;) //通常是没显式声明
- //参数部分 = Replace(参数部分, "[out] VARIANT* ", "参考$变体型[ DISCUZ_CODE_0 ]quot;)
- //参数部分 = Replace(参数部分, "[in, out] VARIANT* ", "参考$变体型[ DISCUZ_CODE_0 ]quot;) //通常是没显式声明
- 参数部分 = Replace(参数部分," ","")
- 参数部分s = Split(参数部分, ",")
- 参数部分数量 = UBound(参数部分s)
- 参数 = ""
- 传入参数 = ""
- For l = 0 To 参数部分数量 - 1
- 单个参数s = Split(参数部分s(l), "[ DISCUZ_CODE_0 ]quot;)
- 单个参数s_s = UBound(单个参数s)
- tmp = ""
- tmp = 单个参数s(单个参数s_s)
- 传入参数 = 传入参数 & tmp & ", "
- 单个参数s(单个参数s_s) = 单个参数s(0)
- 单个参数s(0) = tmp
- 参数部分s(l) = Join(单个参数s,"[ DISCUZ_CODE_0 ]quot;)
- 参数部分s(l) = ".参数 " & Replace(参数部分s(l), "[ DISCUZ_CODE_0 ]quot;, ", ")
- 参数部分s(l) = Replace(参数部分s(l),vbcrlf,"")
- 参数 = 参数 & 参数部分s(l) & vblf
- Next
- If 传入参数 <> "" Then
- 传入参数 = Left(传入参数, Len(传入参数) - 2)
- End If
- 传入参数 = 传入参数 & "))"
- Call 写文本内容("c:\dm5_1423.txt", 版本 & 子程序 & 参数 & 调用方法 & 传入参数)
- Next
- TracePrint "生成完毕:" & Now
-
- Function iif(val1, val2, val3)
- If val1 Then
- iif = val2
- Else
- iif = val3
- End If
- End Function
-
- Sub 创建文件(文件名)
- Set fso = CreateObject("Scripting.FileSystemObject")
- Set myfile = fso.CreateTextFile(文件名)
- Set myfile = Nothing
- Set fso = Nothing
- End Sub
-
- Sub 删除文件(文件名, 是否删除只读文件)
- Set fso = CreateObject("Scripting.FileSystemObject")
- fso.deletefile 文件名, 是否删除只读文件
- Set fso = Nothing
- End Sub
-
- Function 读文本内容(文件名)
- Set fso = CreateObject("Scripting.FileSystemObject")
- If fso.FileExists(文件名) Then
- Set myfile = fso.openTextFile(文件名, 1)
- 读文本内容 = myfile.ReadAll
- myfile.close
- Set myfile = Nothing
- End If
- Set fso = Nothing
- End Function
-
- Sub 写文本内容(文件名, 写入文本)
- Set fso = CreateObject("Scripting.FileSystemObject")
- If fso.FileExists(文件名) Then
- Set myfile = fso.openTextFile(文件名, 8, True)
- myfile.WriteLine 写入文本
- myfile.close
- Set myfile = Nothing
- End If
- Set fso = Nothing
- End Sub
复制代码
--------------------------------------------------------------生成完毕
--------------------------------------------------------------去复制出来
--------------------------------------------------------------粘贴到大漠类型库并编写创建对象的几个函数就完成了
--------------------------------------------------------------成品下载
dll释放路径
默认释放到应用数据目录\dm_soft
如果木有就释放到临时目录\dm_soft
如果也木有就释放到程序目录\plugin
这个TC能用吗
有人能转成TC使用吗
|