我想知道是否可以使用C ++将批处理文件转换为可执行文件?我在这里有很多批处理文件,我想将它们转换为可执行文件(主要用于混淆代码)。我知道有第三方工具可以做到这一点,但我认为这对编程项目来说是一个很好的机会。
我不知道从哪里开始。我需要编写某种解析器或其他东西吗?
答案 0 :(得分:5)
您不仅需要解析器,还需要编写一个接受.BAT或.CMD文件作为输入的编译器,并输出C ++作为其“机器代码”。我认为这是一个“很难很难”的项目(主要是因为输入语言的古怪语法和语义),但是如果你想要它,那么关于编译器编写的确定的SO问题是here。
答案 1 :(得分:3)
创建一个可执行文件,将批处理文件存储为资源。然后在执行时,从资源中获取批处理文件,将其写入磁盘并执行它。之后,删除它。
这样,您甚至可以在一个可执行文件中拥有多个批处理文件,并通过命令行开关触发正确的文件。
这是一个典型的问题,您可以解决冗长,非常困难的方法(请参阅编写批处理文件编译器的建议),或者在不到一天的时间内制作一个快速的解决方案,完全满足您的需求
答案 2 :(得分:1)
您可以使用记事本打开批处理文件并逐行复制,然后将其粘贴到这样的C ++ .cpp文件中并使用系统函数:
<强>的.cpp 强>
int main()
{
system("Your command here");
}
不确定这是否是您想要的,但它最终会创建一个可执行文件,但可能需要一些时间,具体取决于批处理文件的大小。
答案 3 :(得分:0)
this怎么样?我不确定它会对它进行多少混淆,但至少你不必编写自己的解析器,这可能需要一段时间:)
答案 4 :(得分:0)
正如Alex所说,编译批处理文件的最简单方法是将其存储在可执行文件的某个本地存储区域中,并在运行时提取,执行和删除它。使用资源文件是一个好主意,因为这样你就可以编译一个存根,只需复制它,并在需要新的exe时替换资源的内容。虽然anon的解决方案肯定是合理的,但似乎在这种情况下实际需要的工作量太多了。
无论如何,几个月前我实际上感到无聊,并写了一些这样的效果,可以找到here。这没什么特别的,但应该告诉你需要做什么。
答案 5 :(得分:0)
有一个名为Advanced BAT to EXE Converter的程序(在Google上查看),这使得它变得更容易(如果我在我的笔记本电脑上,那么我就知道确切的名字)。