要使用一个没有头文件以及lib库的dll,十分麻烦 ,你得去取得导出函数的地址,
如果是C导出还好说,但如果是C++导出,就麻烦了,因为有类指针的存在,去取得导出类的所有函数地址,以及类的结构,那是相当地麻烦,所以我就写了这么一个工具来解决这个问题,
目前此工具不是十分完美,只能跟据导出表信息,生成相应的头文件,以及lib导入库,
在生成C++头文件时,对虚函数表没有处理,
还有,生成的C++类,不可能有类成员变量,所以C++类的大小就不确定 了,你需要自己去逆向,解决类大小 的问题。
注意C语言导出时,没有类型说明 ,只有函数名字,你需要自己去解决这个问题。
关键性技术说明
要想生成lib,至少需要有一个def文件,然后使用link.exe来让def生成lib,link.exe必须要能访问,如果不能访问,请增加到path环境变量中来,如果是安装vs系列,直接就能访问,测试方法,打开cmd,输入 link.exe 如果能运行,就ok啦。
link /LIB /DEF:C:\a.def /OUT:C:\b.lib
另一个生成lib的思路,就是你必须要有头文件,然后实现所有函数,建一个dll工程,取一个和原dll相同的名字,然后生成,就生成了lib啦。但是这个方法比较麻烦 。
本系统采用上一种方案
至于生成头文件嘛,这个就算个人算法问题啦,代码比较乱,这部分代码就不贴出来啦。自己看源代码吧。
生成的头文件以及lib放在dll同目录下面
附件 81119
附件 81120
附件 81121
附件 81122
附件 81123
附件 81124
如果是C导出还好说,但如果是C++导出,就麻烦了,因为有类指针的存在,去取得导出类的所有函数地址,以及类的结构,那是相当地麻烦,所以我就写了这么一个工具来解决这个问题,
目前此工具不是十分完美,只能跟据导出表信息,生成相应的头文件,以及lib导入库,
在生成C++头文件时,对虚函数表没有处理,
还有,生成的C++类,不可能有类成员变量,所以C++类的大小就不确定 了,你需要自己去逆向,解决类大小 的问题。
注意C语言导出时,没有类型说明 ,只有函数名字,你需要自己去解决这个问题。
关键性技术说明
要想生成lib,至少需要有一个def文件,然后使用link.exe来让def生成lib,link.exe必须要能访问,如果不能访问,请增加到path环境变量中来,如果是安装vs系列,直接就能访问,测试方法,打开cmd,输入 link.exe 如果能运行,就ok啦。
link /LIB /DEF:C:\a.def /OUT:C:\b.lib
另一个生成lib的思路,就是你必须要有头文件,然后实现所有函数,建一个dll工程,取一个和原dll相同的名字,然后生成,就生成了lib啦。但是这个方法比较麻烦 。
本系统采用上一种方案
至于生成头文件嘛,这个就算个人算法问题啦,代码比较乱,这部分代码就不贴出来啦。自己看源代码吧。
生成的头文件以及lib放在dll同目录下面
附件 81119
附件 81120
附件 81121
附件 81122
附件 81123
附件 81124