私の質問は、プログラムをコンパイルした後に python を c++ に埋め込むと、exe ファイルが得られるということです。
別の質問があります (これが私がサインアップした理由です) 誰かが私のプログラムを 16 進エディターで開き、「def add(x,y):return(x+y)」のような Python コードを持っていた場合" python コードは 16 進エディタに平易な英語として表示されますか?
私の質問は、プログラムをコンパイルした後に python を c++ に埋め込むと、exe ファイルが得られるということです。
別の質問があります (これが私がサインアップした理由です) 誰かが私のプログラムを 16 進エディターで開き、「def add(x,y):return(x+y)」のような Python コードを持っていた場合" python コードは 16 進エディタに平易な英語として表示されますか?
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 配列に存在するため、エディターまたは 16 進ビューアーで実行可能ファイルを開くと、そのまま表示されます。
ただし、コードを暗号化または圧縮し、その圧縮バージョンをソース コードに挿入して、実行時に に渡す直前に復号化/解凍することができますPyRun_SimpleString
。そうすれば、難読化され、16 進エディターで簡単に表示されなくなります。しかし、デバッガーを使用できる人なら、Python コードを掘り出すことができます。