我的问题是,当你编译程序后,你得到一个exe文件,当你嵌入python在c + +,这是正确的?python嵌入在C++中看起来像在十六进制编辑器中看起来像什么?
我有另一个问题(这就是我注册的原因是要问这个问题)如果有人在十六进制编辑器中打开我的程序,我有一些Python代码,如“def add(x,y):return x + y)“python代码是否会在十六进制编辑器中显示为纯英文?
我的问题是,当你编译程序后,你得到一个exe文件,当你嵌入python在c + +,这是正确的?python嵌入在C++中看起来像在十六进制编辑器中看起来像什么?
我有另一个问题(这就是我注册的原因是要问这个问题)如果有人在十六进制编辑器中打开我的程序,我有一些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代码。
......但*不要*认为加密它等是安全的。阅读起来更烦人,但对任何人来说都不是不可能的。 – deviantfan
的确如此。当你在正确的时间停止程序,然后你可以搜索程序存储器,或使用调试器(我已经添加了关于它的注意到答案) – Messa
好吧,谢谢你回答我的问题。我正在做一个文本游戏,只有我的朋友会打它,但我想阻止他们作弊... – madness
我想添加一个问题,我问的是我的头只是让你们都知道,我只是十分好奇十六进制编辑器的东西 – madness
如果有的话,它会显示为普通的Python;) – melak47