嵌入在c ++中的python在十六进制编辑器中是什么样的?

时间:2015-12-09 02:00:18

标签: python c++ hex-editors

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

我有另一个问题(这就是我注册的原因是问这个问题)如果有人在十六进制编辑器中打开我的程序并且我有一些python代码,如" def add(x,y):返回(X + Y)" python代码会在十六进制编辑器中显示为普通英语吗?

1 个答案:

答案 0 :(得分:1)

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

#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静态char数组中,因此当您在编辑器或十六进制查看器中打开可执行文件时,它将按原样显示。

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