मुझे पता चला कि बाइनरी से हार्ड-कोडेड स्ट्रिंग निकालना संभव है।
उदाहरण के लिए Process Explorer के गुण दृश्य 3 से अधिक वर्णों वाली सभी स्ट्रिंग प्रदर्शित करते हैं।एक exe या dll में तारों को कैसे छिपाना है?
#ifndef _WIN32_WINNT
#define _WIN32_WINNT 0x0501
#endif
#include <stdio.h>
#include <tchar.h>
#include <Windows.h>
int _tmain(int argc, _TCHAR* argv[])
{
_TCHAR* hiddenString1 =_T("4537774B-CC80-4eda-B3E4-7A9EE77991F5");
_TCHAR* hiddenString2 =_T("hidden_password_or_whatever");
for (int i= 0; i<argc; i++) {
if (0 == _tcscmp(argv[i],hiddenString1)) {
_tprintf (_T("The guid argument is correct.\n")); }
else if (0 == _tcscmp(argv[i],hiddenString2)) {
_tprintf (_T("Do something here.\n")); }
}
_tprintf (_T("This is a visible string.\n"));
//Keep Running
Sleep(60000);
return 0;
}
तार स्पष्ट रूप से इसी निष्पादन से निकाला जा सकता:
यहाँ एक सरल निष्पादन का कोड है कि मैं बस यह परीक्षण करने के लिए लिखा है
मुझे लगता है कि यह है कि तारों को ढूंढना थोड़ा आसान है।
मेरे प्रश्न हैं:
- कैसे करें बस छिपाने hiddenString1 या निष्पादन में hiddenString2?
- क्या के साथ कुछ धोखेबाज छिपे हुए इनपुट के साथ "धोखा कोड" का उपयोग करने के लिए कोई और सुरक्षित सुरक्षित तरीका है?
क्या यह प्रश्न GUID या सामान्य रूप से तारों के बारे में है? – xtofl
GUID केवल एक उदाहरण था: http अनुरोधों के लिए यूआरएल हैं जिन्हें मैं भी छिपाना चाहता हूं। – Winz
http अनुरोधों के लिए छिपाने वाले यूआरएल काम नहीं करेंगे। एक स्निफ़ेर वाला कोई भी व्यक्ति यह देखने में सक्षम होगा कि आपका ऐप क्या कर रहा है, और ऐसा करने से आपकी प्रक्रिया की याददाश्त की जांच करने से कहीं अधिक आसान होगा। –