今天用pb decompiler,即pb反编译大师处理一个旧项目,反编译时提示缺少一个pbd,结果搜索之后发现有个同名的dll,用utraedit查看,是pb编译后的dll。就奇了怪了。
而且直接运行exe,并不提示缺少什么,后面搜索源码,发现用了setlibrarylsit函数。列表中包含这个***.dll,我才知道,这个函数支持这三种格式的添加,dll,pbl,pbd。
其实之前我看一个客户调试时,将改了的pbl直接改名为pbd放进去主项目运行的。也是一绝。因为pbl内部含有pbd的所有要素。
那怎么实现的编程时是pbl,后面又是编译的dll,而主要文件又是dll呢。
那就是在工程中,单独点右键编译这个pbl为dll即可。然后主项目启动时,setlibrarylist加载即可。
这种的方式一般用于项目代码的管制,比如授权部分,不会轻易给普通开发人员。会给他们一个pbd加入项目中开发。
那如何反编译呢。因为反编译无法直接加载这个dll。
方法就是单独写一个项目test,而且有test.pbl和***.pbl,***和dll同名。编译整个项目生产exe和dll,然后拷贝那个dll覆盖进来。再用pb decompiler,即pb反编译大师去反编译这个dll导出为pbl源码即可。