Мой вопрос: когда вы встраиваете python в c ++ после компиляции программы, вы получаете исполняемый файл, и это правильно?
У меня есть другой вопрос (и по этой причине я зарегистрировался, чтобы спросить этот), если кто-то открыл мою программу в шестнадцатеричном редакторе, и у меня был какой-то код на Python, такой как «def add (x, y): return (x + y) «будет ли код Python отображаться в шестнадцатеричном редакторе как обычный английский?
Пример программы на C со встроенным кодом Python 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, поэтому при открытии исполняемого файла в редакторе или программе просмотра в шестнадцатеричном формате он будет виден как есть.
Но вы можете зашифровать или сжать код, поместить эту сжатую версию в ваш исходный код и расшифровать / распаковать ее во время выполнения перед тем, как передать ее PyRun_SimpleString
, Таким образом, он будет запутан и не будет легко виден в шестнадцатеричном редакторе. Но кто-то, кто может использовать отладчик, все еще может выкопать код Python.
Других решений пока нет …