【问题标题】:Decrypted exe wont run解密的exe无法运行
【发布时间】:2014-03-24 11:15:27
【问题描述】:

我正在编写一个 c++ 程序,它将输入作为 exe 文件,对其进行加密(只是异或)并将加密的 exe 作为资源添加到另一个 exe(存根)。

存根解密 exe 并保存。问题是解密后的 exe 无法运行。字节相同,我可以在 PE 编辑器中打开解密的 exe,但它不会运行。

有什么建议吗?

【问题讨论】:

  • 您是否在保存的文件上设置了可执行标志?
  • @JoachimPileborg PE 编辑器建议这是 Windows,因此没有可执行标志
  • 错误信息是什么?
  • 您好,感谢您的回复。我没有错误代码,因为它无法运行。
  • 如何设置可执行标志?

标签: c++ encryption stub


【解决方案1】:

如果原始 .EXE 和解密后的 .EXE真的相同,并假设解密后的可执行文件是带有 .EXE 扩展名的 Windows .EXE 文件(如您所指的 .exe 和PE 格式似乎表明),这可能意味着您偶然发现了某种安全功能。

您的程序的行为是single-stage malware dropper 的行为。解密文件是否不是实际上是恶意的并不重要:系统无法知道它;它看到一个可执行文件创建另一个可执行文件并尝试执行它,并将其标记为“永远不要执行这个”(例如通过DisallowRun。还有其他方法)。

也有可能(不要误会,但更有可能)您实际上做错了什么:扩展名不是 .EXE,文件不是 完全相同(您检查过原始文件和解密文件的 MD5/SHA 校验和吗?),您尝试在文件仍处于打开状态以供写入时运行文件...

请尝试查看事件查看器和/或防病毒软件日志(如果有),看看这是否能有所启发。这是您自己的开发机器吗?您是否有完整的管理员权限来检查策略,以防万一?此外,检查并报告错误状态和/或您在尝试执行时可能收到的任何错误消息。

【讨论】:

  • 非常感谢。 md5 校验和不同,我不知道为什么。如果我分解原始和解密,asm 它是非常不同的,不知道为什么。 AV 保护已关闭。
  • 嗯...你有没有先检查明显的事情?您确定您正在使用 same 键进行异或运算,并且在保存到新的可执行文件和创建新文件时都是如此?您是否使用逐步调试器检查实际读取和写入的字节是否符合您的预期? (对不起,如果我听起来很傲慢,但事实是,你没有提供太多关于你如何进行的信息 - 更不用说 为什么 - 所以我只能提出最明显的事情)。
  • 是的,也许我找到了问题所在。我正在训练从带有 char* 的 exe 中读取二进制文件...我尝试修复
  • 谢谢大家。这个问题很简单。我忘了以二进制模式打开文件……我傻了。
猜你喜欢
  • 2012-04-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-09-22
  • 2013-10-18
  • 1970-01-01
  • 2014-02-20
  • 1970-01-01
相关资源
最近更新 更多