2015-12-09 93 views
0

我的問題是,當你編譯程序後,你得到一個exe文件,當你嵌入python在c + +,這是正確的?python嵌入在C++中看起來像在十六進制編輯器中看起來像什麼?

我有另一個問題(這就是我註冊的原因是要問這個問題)如果有人在十六進制編輯器中打開我的程序,我有一些Python代碼,如「def add(x,y):return x + y)「python代碼是否會在十六進制編輯器中顯示爲純英文?

+0

我想添加一個問題,我問的是我的頭只是讓你們都知道,我只是十分好奇十六進制編輯器的東西 – madness

+3

如果有的話,它會顯示爲普通的Python;) – melak47

回答

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靜態字符數組,所以當打開所述可執行在編輯器或十六進制查看器中,它將按原樣顯示。

但是您可以加密或壓縮代碼,將該壓縮版本放入您的源代碼中,並在將它傳遞給PyRun_SimpleString之前在運行時對其進行解密/解壓縮。這樣它會被混淆並且不容易在十六進制編輯器中看到。但是可以使用調試器的人仍然可以挖掘Python代碼。

+0

......但*不要*認爲加密它等是安全的。閱讀起來更煩人,但對任何人來說都不是不可能的。 – deviantfan

+0

的確如此。當你在正確的時間停止程序,然後你可以搜索程序存儲器,或使用調試器(我已經添加了關於它的注意到答案) – Messa

+0

好吧,謝謝你回答我的問題。我正在做一個文本遊戲,只有我的朋友會打它,但我想阻止他們作弊... – madness

相關問題