确定exe文件是否已被压缩(由RRUZ编写)的功能非常好,除了我发现代码有问题。如果调用函数IsUPXCompressed,则尝试运行upx,UPX无法保存它修改的文件。在函数中没有正确共享权限的东西。我已经测试了几个小时。如果我不调用该方法,那么UPX可以毫无问题地编写文件。如果你调用它然后尝试运行UPX它将不会保存文件。尝试写入文件时,UPX报告IOException权限被拒绝错误。
任何人都可以在代码中发现可能导致此问题的错误吗?
我再次发布此消息是因为24小时后似乎没有人在其原始位置看到我的帖子:Method to determine if an exe file has been compressed with UPX
感谢您
答案 0 :(得分:1)
@ RRUZ的code不会关闭文件映射或用于创建它的文件句柄。
在代码中for ...循环结束后,添加以下 two 三行:
UnmapViewOfFile(pBaseAddress);
CloseHandle(hFileMap);
CloseHandle(hFile);
无需首先测试它们,因为如果打开句柄的函数调用之一未成功,则先前的代码退出。 (可能应该尝试最终保护两个开场电话,但是我会把它留给RRUZ来纠正他原来的帖子。)