我有一个小程序:
void main(void)
{
printf("Password");
gets(pass);
if(!strcmp(pass,"Something"))
//execute program in the same binary
else
printf("Wrong password");
}
我需要一个密码来运行程序,程序必须在同一个可执行文件中,并且考虑到我没有源代码,我们的想法是将第二个程序附加到第一个程序。
我在自己的程序中执行某些操作,然后运行第二个程序。
¿我该怎么做?
答案 0 :(得分:4)
我不确定将二进制文件拼接在一起会很容易。他们有是一个可执行文件吗?
如果没有,那么非常接近的批准是使用exec函数之一,假设您在* nix下工作。
答案 1 :(得分:2)
你不能以你想要的方式(近距离)做到这一点。你可以设法做到这一点,但这是相当多的工作。基本上,你必须将两个程序连接在一起,首先将它们连接起来,这样才能执行它。然后,您的程序必须将另一个提取到临时文件,执行它,然后在完成后删除该临时文件(或者,如果可用,使用OS功能以确保它被自动删除)。
另请注意,这在很多层面上都非常脆弱 - 一个知道自己正在做什么的黑客可能会在更短的时间内打破你的安全尝试。
答案 2 :(得分:0)
使用像这样的system
代码
system("binary_code.exe")
最好指定binary_code.exe
的路径,但是......如果移除外部程序会发生什么......你需要处理它并将其考虑在内。
此外,您使用过时的gets
代码可以解决问题,该代码可以缓冲利用...改为使用fgets
!