我的问题是,当您在编译程序后将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静态char数组中,因此当您在编辑器或十六进制查看器中打开可执行文件时,该代码将按原样可见。
但是您可以加密或压缩代码,将压缩后的版本放入源代码中,然后在将其传递给
PyRun_SimpleString
之前在运行时对其进行解密/解压缩。那样的话,它会被混淆并且在十六进制编辑器中不容易看到。但是可以使用调试器的人仍然可以挖掘出Python代码。关于python - 在十六进制编辑器中,c++中嵌入的python看起来像什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34169522/