2013-08-23 4 views
1

리터럴 문자열이 실행 파일에 나타나지 않도록하려고합니다. 실행 파일에 암호화 된 문자열을 넣은 다음 런타임에 암호를 해독하여 사용하고 싶습니다. 나는 How to hide a string in binary code?http://bytes.com/topic/c/answers/222096-hiding-string-compiled-code을 약간 읽었지만 이것이 내가 원하는 것만은 아니다.순수 C로 문자열을 암호화하여 실행 파일에서 숨김

매크로를 사용하여 완료 할 수 있습니까? 예를 들어, 나는 widechars에 문자를 변환합니다

wchar_t str[] = L"value"  

또는

wchar_t *str = L"value"  

마법 L를 사용하여 다양한 문자 문자열을 선언 할 수 있습니다. 암호화 된 문자열을 만들기 위해 이와 비슷한 또 다른 마술 L을 만들 수 있습니까? 예 : 순간

ENC"value"  

내가 매크로로 이미 암호화 된 문자열을 정의하고있다 :

#define SAMPLE_STRING "ftnurd eru etrth" /*Random chars for imitating encryption*/ 

char *decstr(char *data)  

같은 일반 함수로 전달 할 수있는 쉬운 방법이 있나요 이?

Visual C++ 2008 Express와 함께 Windows XP SP3을 사용하고 있습니다.

답변

1

단순히 암호화 및 암호 해독 기능을 생성하지 않는 이유는 무엇입니까? 그럼 당신은 그러나

char *hidden_password = my_encrypt("pAsSw0rd"); 
puts(hidden_pasword); // "aCud5Ttei23w8D" 
// ... 
char *real_password = my_decrypt("aCud5Ttei23w8D"); 
puts(real_password); // "pAsSw0rd" 

, 그들이 중요한 데이터를 포함하는 경우 실행 파일에 하드 와이어 텍스트 문자열을 저장하는 것은 좋은 생각이 아니다 뭔가를 작성할 수 있습니다. 또한 자신 만의 암호화 방법을 사용하기 전에 OpenSSL과 같은 고품질의 암호화 된 보안 라이브러리를 시도해보십시오.

+0

하지만 정상적인 기능으로 "pAsSw0rd"를 전달하면 실행 파일에 "pAsSw0rd"문자열을 찾을 수 있습니다. 이 예제는 파일에서 "pAsSw0rd"를 읽거나 메모리에 이미로드되어 있으며 암호화 된 결과를 메모리에 저장합니다. – BalticMusicFan

+0

@DjJeshk 그저 그 예일뿐입니다. 요점은''pAsSw0rd ''가 필요하다면 암호화 한 다음 ** 암호화 된 ** 문자열을 실행 파일에 저장 한 다음 실행시 해독하여 원래의 암호화되지 않은 문자열을 찾는 것입니다. –

+0

암호화 할 문자열이 더 많으면 이미 암호화 된 문자열을 실행 파일에 넣어야합니다. DontKnowHowToWriteThis 매크로를 사용하는 것이 더 쉬울까요? – BalticMusicFan

관련 문제