python - 嵌入在 C++ 中的 Python 在十六进制编辑器中是什么样子的?

标签 python c++ hex-editors

我的问题是,当你在编译程序后将 python 嵌入到 c++ 中时,你会得到一个 exe 文件,对吗?

如果有人在十六进制编辑器中打开我的程序并且我有一些 python 代码,如 "def add(x,y):return(x +y)"python 代码会在十六进制编辑器中显示为简单的英语吗?

最佳答案

https://docs.python.org/3.5/extending/embedding.html 处有一个带有嵌入式 Python 代码的 C 程序示例。 :

#include <Python.h>

int
main(int argc, char *argv[])
{
    wchar_t *program = Py_DecodeLocale(argv[0], NULL);
    if (program == NULL) {
        fprintf(stderr, "Fatal error: cannot decode argv[0]\n");
        exit(1);
    }
    Py_SetProgramName(program);  /* optional but recommended */
    Py_Initialize();
    PyRun_SimpleString("from time import time,ctime\n"
                       "print('Today is', ctime(time()))\n");
    Py_Finalize();
    PyMem_RawFree(program);
    return 0;
}

如您所见,Python 代码存在于普通的 C 静态字符数组中,因此当您在编辑器或十六进制查看器中打开可执行文件时,它将按原样显示。

但是您可以加密或压缩代码,将压缩后的版本放入您的源代码中,并在将其传递给 PyRun_SimpleString 之前在运行时对其进行解密/解压缩。这样它就会被混淆并且在十六进制编辑器中不容易看到。但是会使用调试器的人仍然可以挖掘出 Python 代码。

关于python - 嵌入在 C++ 中的 Python 在十六进制编辑器中是什么样子的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34169522/

相关文章:

linux - 我如何学习安全地使用十六进制编辑器?

python - 我的 'lowest common multiple' 程序挂起,没有输出答案

python - 修改特定 Django 异常的 settings.ADMINS 吗?

c++ - 在 for 循环中声明 vector

linux - Hexeditor 用于在 Linux 上搜索 utf16le 中的字符串

java - 十六进制编辑 Java 字节码抛出 ClassFormatError

python - 如何使用Python在一个USB设备上播放音频并在另一个USB设备上同时记录音频?

Python:使用 ElementTree 访问 XML 中的下一个元素

c++ - 矩阵堆栈、glLoadMatrix 和 glMultMatrix 与场景图和相机一起使用?

c++ - 当同名的全局和局部变量已经存在时如何访问变量(c++)?