我正在编写一个c ++程序,它将输入作为exe文件加密,加密它(只是xoring)并将加密的exe作为资源添加到另一个exe(存根)。
存根解密exe并保存它。问题是解密的exe不会运行。字节是相同的,我可以在PE编辑器中打开解密的exe,但它不会运行。
有什么建议吗?
答案 0 :(得分:4)
如果原始.EXE和解密的.EXE 确实相同,并假设解密的可执行文件是扩展名为.EXE的Windows .EXE文件(如您所指的.exe和PE格式似乎表明),这可能意味着您偶然发现了某种安全功能。
您的计划的行为是single-stage malware dropper的行为。如果解密文件不实际上是恶意的,则无关紧要:系统无法知道它;它看到一个可执行文件创建另一个可执行文件并尝试执行它,并将其标记为"不执行此操作,永远" (例如通过DisallowRun。还有其他方法)。
也有可能(而且,不要误解,但更可能)你实际上做错了什么:扩展名不是.EXE,文件不是< em>完全相同(您是否检查了原始和解密文件的MD5 / SHA校验和?),您尝试在文件仍处于打开状态时运行该文件...
尝试查看事件查看器和/或防病毒软件日志(如果有),看看这是否可以解决问题。这是您自己的开发机器,并且您是否拥有检查策略的完全管理员权限,以防万一?另外,检查并报告错误状态和/或尝试执行时可能收到的任何错误消息。