2015-12-09 50 views
0

我的问题是,当你编译程序后,你得到一个exe文件,当你嵌入python在c + +,这是正确的?python嵌入在C++中看起来像在十六进制编辑器中看起来像什么?

我有另一个问题(这就是我注册的原因是要问这个问题)如果有人在十六进制编辑器中打开我的程序,我有一些Python代码,如“def add(x,y):return x + y)“python代码是否会在十六进制编辑器中显示为纯英文?

+0

我想添加一个问题,我问的是我的头只是让你们都知道,我只是十分好奇十六进制编辑器的东西 – madness

+3

如果有的话,它会显示为普通的Python;) – melak47

回答

1

有一个在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代码。

+0

......但*不要*认为加密它等是安全的。阅读起来更烦人,但对任何人来说都不是不可能的。 – deviantfan

+0

的确如此。当你在正确的时间停止程序,然后你可以搜索程序存储器,或使用调试器(我已经添加了关于它的注意到答案) – Messa

+0

好吧,谢谢你回答我的问题。我正在做一个文本游戏,只有我的朋友会打它,但我想阻止他们作弊... – madness

相关问题