我的問題是,當你編譯程序後,你得到一個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