0

私の質問は、プログラムをコンパイルした後に python を c++ に埋め込むと、exe ファイルが得られるということです。

別の質問があります (これが私がサインアップした理由です) 誰かが私のプログラムを 16 進エディターで開き、「def add(x,y):return(x+y)」のような Python コードを持っていた場合" python コードは 16 進エディタに平易な英語として表示されますか?

4

1 に答える 1

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 静的 char 配列に存在するため、エディターまたは 16 進ビューアーで実行可能ファイルを開くと、そのまま表示されます。

ただし、コードを暗号化または圧縮し、その圧縮バージョンをソース コードに挿入して、実行時に に渡す直前に復号化/解凍することができますPyRun_SimpleString。そうすれば、難読化され、16 進エディターで簡単に表示されなくなります。しかし、デバッガーを使用できる人なら、Python コードを掘り出すことができます。

于 2015-12-09T02:07:20.330 に答える