2013-08-03 2 views
0

.exe 파일의 해시 코드를 수신하는 프로그램을 만들었습니다. 그리고 streamwriter를 사용하는 것보다 .exe 파일에 썼습니다. .exe 파일을 열려면 오류가 발생합니다. 은 유효한 win32 응용 프로그램이 아닙니다.C#이 수신되었고 해시 코드를 작성했습니다.

해시로 수행 할 수있는 작업과 작동 가능한 .exe 파일을 만드는 것이 가능합니다.

대단히 감사합니다!

byte[] hash; 
using (Stream stream = File.OpenRead(@"C:\Program files\CCleaner\CCleaner.exe")) 
{ 
    hash = SHA1.Create().ComputeHash(stream); 
} 
string base64Hash = Convert.ToBase64String(hash); 
Console.WriteLine(base64Hash); 

StreamWriter myWriter = new StreamWriter(@"C:\Users\Win7\Desktop\Hash.exe"); 
myWriter.Write(base64Hash); 
+1

아니요, 이것은 결코 작동하지 않습니다. 너 뭐하려고? 일반적으로 수신 된 파일의 해시를 계산하여 파일의 알려진 양호한 해시와 비교하여 무결성을 검사합니다. – Lee

+0

@Lee 당신이 해시 코드를 얻으면, 당신은 그 프로그램을 만들 수 있다고 썼다. 그래서 그것을 테스트하고 싶습니다 –

+0

프로그램에서 무엇을 기대합니까? Windows 실행 파일은 일반적으로 [Portable executable] (http://en.wikipedia.org/wiki/Portable_Executable) 파일입니다. 이 일을 할 수있는 유일한 방법은 해쉬가 방금 유효한 PE 파일이 된 것입니다. – Lee

답변

0

이 오류의 원인 :

I get the error: is not a valid win32 application

는 응용 프로그램의 시작을 덮어 쓰는 것입니다. 에 덧붙여 대부분의 exe 파일에 추가 할 수 있지만 데이터 덮어 쓰기는 작동하지 않습니다. 이 같은 해시를 추가하면

:

StreamWriter myWriter = new StreamWriter(@"C:\Users\Win7\Desktop\Hash.exe", true); 

응용 프로그램이 정상적으로 실행해야합니다. 이 응용 프로그램 내에서 exe 파일의 마지막 바이트에 액세스하여 해시를 검색 할 수 있습니다.

+0

고마워,하지만 난 여전히 그 오류가 발생하지만, 리의 의견과 함께 나는 내가하고 싶은 일을 할 수 없다는 느낌을 받았는데, 무엇이 프로그램을 복제하고있다. –

1

실행 파일의 해시 코드는 유효한 실행 파일이 아닌 문자열입니다. 당신이 해시 코드를 저장하려면, 다음과 같이 텍스트 파일에 기록 :

byte[] hash; 
using (Stream stream = File.OpenRead(@"C:\Program files\CCleaner\CCleaner.exe")) 
{ 
    hash = SHA1.Create().ComputeHash(stream); 
} 
string base64Hash = Convert.ToBase64String(hash); 
Console.WriteLine(base64Hash); 

StreamWriter myWriter = new StreamWriter(@"C:\Users\Win7\Desktop\Hash.txt"); 
myWriter.Write(base64Hash); 
0

당신은 Hash Algorithm가 무엇인지 배울 필요가있다. 그것은 당신이 원하는 것을 위해 사용될 수 없습니다. 원래 내용을 얻으려면 해시를 되돌릴 수 없습니다. 그것은 환상적인 데이터 압축이 될 것입니다.

관련 문제