公司一个驱动项目需要用VMP来加密一些关键的地方。
用2600和7200版本的DDK都测试过,创建一个Driver工程,在里面添加了VMProtectDDK.h,
并把VMProtectDDK32.lib和VMProtectDDK32.sys也一同复制到了工程目录下,
甚至VC里设定的DDK的Inlucde的目录,库文件目录等等都复制了上述两个文件。
正常编译这个空的Driver工程,能编译过能装载。
但是一旦加入了
VMProtectBegin(__FILE__);
就报
错误 1 error LNK2019: unresolved external symbol _VMProtectBegin@4 referenced in function "void __stdcall MyInit(void)" (?MyInit@@YGXXZ) driver1.obj
甚至我用IDA看过了VMProtectDDK32.sys之后,自己写了一个类似的SYS,并导出所有VMProtectDDK32.sys导出的函数,最后
自己建了一个Win32 static library工程,生成对应lib,并修改了VMProtectDDK.h里面对lib的引用后,编译的时候依旧报同样的错误。
论坛上有人问过同样的问题...但是没有说到底解决了木有....
网上也搜了一大遍,完全木有相关的答案...
有没有成功用过vmp来加密驱动的前辈,求解救
******************************************************
谢谢alazif和sidyhe的热心回答~
问题解决啦,我来总结一下。
驱动加VMP报Unresolved extern symbol,就在sources文件里加一句
TARGETLIBS=VMProtectDDK32.lib
lib名改成对应位数系统的
顺带附上驱动生成map的方法:
sources里加入
LINKER_FLAGS =$(LINKER_FLAGS) -map -merge:PAGECONST=PAGE
我发现把-merge:PAGECONST=PAGE 去掉也能生成map,所以不知道这一句是不是多余的
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课