关于C++程序的保护
请教可以在C++编译器生成代码时随机打乱某个特定函数(或者整个程序)的汇编码。可以做到吗?需要怎么做呢?貌似见过有人的DELPHI代码中有:VMProtectBegin的...
请教可以在C++编译器生成代码时随机打乱某个特定函数(或者整个程序)的汇编码。可以做到吗?需要怎么做呢?
貌似见过有人的DELPHI代码中有:VMProtect Begin的字样,这是虚拟机加密某个特定区域吗?VC++中有没有类似的保护东东呢?
另:我不需要生成完成后再加壳的保护方式,因为许多壳在程序运行后自动解壳,解完原来的汇编就出来了。至于VMP壳从网上找了貌似效果不理想。而且,一个共享区段也消失了导致运行不正常。
我的意思是对单独某个区域(或者函数)进行虚拟机加密。这种情况我确实见到过哦。另外说壳。我的意思是保护汇编不被查看。壳的话。程序运行必然会在内存中自动解壳。别人等待解壳完毕再附加或者通过内存查看工具就可以看到汇编码。这不需要脱壳就能做到。也自然不用考虑IAT。我希望别人看不到汇编码(看到的是虚拟机“伪指令”)。穿山甲和VMP确实很强大。也能达到一定要求。但是不论通过穿山甲还是VMP加壳后我的PE文件中的一个共享区段就被弄没掉了(不知道是不是我设置问题?)。导致程序无法正常运行。不知道有没有解决办法呢? 展开
貌似见过有人的DELPHI代码中有:VMProtect Begin的字样,这是虚拟机加密某个特定区域吗?VC++中有没有类似的保护东东呢?
另:我不需要生成完成后再加壳的保护方式,因为许多壳在程序运行后自动解壳,解完原来的汇编就出来了。至于VMP壳从网上找了貌似效果不理想。而且,一个共享区段也消失了导致运行不正常。
我的意思是对单独某个区域(或者函数)进行虚拟机加密。这种情况我确实见到过哦。另外说壳。我的意思是保护汇编不被查看。壳的话。程序运行必然会在内存中自动解壳。别人等待解壳完毕再附加或者通过内存查看工具就可以看到汇编码。这不需要脱壳就能做到。也自然不用考虑IAT。我希望别人看不到汇编码(看到的是虚拟机“伪指令”)。穿山甲和VMP确实很强大。也能达到一定要求。但是不论通过穿山甲还是VMP加壳后我的PE文件中的一个共享区段就被弄没掉了(不知道是不是我设置问题?)。导致程序无法正常运行。不知道有没有解决办法呢? 展开
展开全部
你说的不可能,肯定是必须先生成后保护的,不然如何保证程序的正确性。脱壳没你想那么简单,脱壳是在内存中进行的,对IAT做一些处理,即使他把内存DUMP出来也很难去修复IAT,并且现在壳有些具备加密的功能导致整个单向了,再加上反调试的手段,很难得到你的汇编。
好用的壳很多,ASProtect Armadillo EXECryptor Themida
更强的 VMProtect,这个要脱下来非常麻烦,都涉及虚拟机的机制了。
RE:哦,原来你是这个意思,我理解错了,就是只保护一段代码了,那只有用虚拟机的机制了,VMPROTECT经常用来做核心代码的保护,已经非常成熟了,至今没听到过你说的问题,应该是设置的问题,具体只能详见VMPROTECT的使用手册了。
好用的壳很多,ASProtect Armadillo EXECryptor Themida
更强的 VMProtect,这个要脱下来非常麻烦,都涉及虚拟机的机制了。
RE:哦,原来你是这个意思,我理解错了,就是只保护一段代码了,那只有用虚拟机的机制了,VMPROTECT经常用来做核心代码的保护,已经非常成熟了,至今没听到过你说的问题,应该是设置的问题,具体只能详见VMPROTECT的使用手册了。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询