c++ - 隐藏c plus plus程序中的bash代码

标签 c++ bash obfuscation

<分区>

我正在将 bash 嵌入到 cpp 中。是否可以隐藏 bash 代码(当我们 cat 可执行文件看不到 bash 代码时) 我使用的简单代码:

#include <iostream> 
#include <cstdlib>
using namespace std;


#define test1 "\
#!/bin/sh --posix \n\
echo \"2222222222222222222222222222222222222222222222222222\"  \n\
"


int main()
{

system(test1);     
return 0;

}

在没有任何反制措施的情况下,当我们使用系统命令或上面看到的“define”方法时,编译后我们可以 cat 可执行文件并读取 bash 命令。

最佳答案

很难避免使用定义。

但是,如果您真的希望它对 catstring 隐藏,您可以这样做。

  1. 将整个内容设为 const 字符串,但不是您当前拥有的字符串。相反,手动遍历每个字符,并将其与某个值按位异或(0xA 或 0x5 是一个不错的选择)。

  2. 当您想运行系统调用时,创建字符串的拷贝并再次对其进行非按位异或,然后在结果上运行系统。

当然,任何阅读您的代码的人都会真正地扬起眉毛,想知道您在做什么需要如此加密,但这将避免它被 ascii 扫描可见的问题。

请注意,这是 Paul R 评论中一般建议的简单、具体的实现。

关于c++ - 隐藏c plus plus程序中的bash代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20476287/

相关文章:

java - 适用于任何 Java 项目的代码混淆器

c++ - 如何检测表达式类型?

c++ - C/C++ Python 解释器

c++ - QDialog不在循环中绘画

linux - 如何在多个文件中运行多年和 12 个日历月的时间戳?

bash - "here string"和 echo + pipe 有什么区别

bash - 如何查看/bin/sh 指向的内容

ant - 将yGuard Ant任务转换为Gradle

c++ - 警告 C26812 : Enum type is unscoped. 优先选择枚举类而不是枚举

php - 在不显示 PHP 文件的情况下将 PHP 网站部署到客户端服务器