2012-06-04 2 views
2

Microsoft signtool을 사용하여 exe에 서명하는 방법은 대부분 이해합니다. 나는 파일이 수정되지 않은 경우에만 실행하고 싶은 exe (C#)가 있으며, 올바르게 이해하면이를 확인할 수 있습니다. 내가 이해하지 못하는 것은 파일을 검증하는 방법이다. 파일을 확인하는 코드가 exe 안에 빌드되어 있는지 확인하고 있는데, exe 파일을 디 컴파일하지 않고 파일을 검사하는 코드를 제거한 다음 다시 컴파일 할 수 없습니까?exe ​​파일 확인

코드 서명의 나의 이해는이 본질적으로 :

이미지 신용에 : 나는 하나가 바로 파일의 무결성을 확인하는 메커니즘을 수 없었다 표시되지 않습니다 https://developer.apple.com/library/mac/#documentation/Security/Conceptual/CodeSigningGuide/Introduction/Introduction.html

그러나 파일을 완전히 수정하고 수정 된 후에 프로그램을 실행하십시오.

+0

저는 C#과 Microsoft에 대해 이야기하고 Apple 문서 페이지를 링크하는 것에 대해 혼란 스럽습니까? –

+0

죄송합니다. 방금 일반적으로 코드 서명을 설명하는 가장 좋은 이미지라고 생각했지만 예 Apple이나 xcode를 사용하지 않고 C# 및 Windows를 사용하고 있습니다 – User093203920

답변

1

예, 가능하지만 누군가 코드를 확인할 책임이 없습니다. CLR은 공개 키 토큰이있는 dll에 대해 자동으로이 작업을 수행합니다. 공개 키가 파일 해시와 일치하지 않으면 CLR은 파일을로드하지 않습니다. exe를 강력한 이름으로 지정하면 안전합니다.

+0

고마워,하지만 내 두려움은 그저 누군가가 단지 인증서를 완전히 제거하기 위해 delcert를 사용할 수 없었을 뿐이며 프로그램을 수정하지 못했습니까? – User093203920

+0

예, 할 수 있습니다.그러나 그는 그의 강한 이름이 당신과 다를 것이기 때문에 당신에게 가장 할 수 없습니다. 따라서 강력한 이름/회사 이름을 게시하고 사용자가 서명 한 소프트웨어 만 신뢰하도록 사용자에게 지시 할 수 있습니다. – RoadBump

-2

잘 이해했다면, 기존의 exe 응용 프로그램에 코드를 삽입하고 싶습니까? 그렇다면 코드 삽입, exe 파일을 조작하는 방법에 대해 자세히 알아 보는 것이 가장 좋습니다 (일반적으로 응용 프로그램의 기존 코드에 새 코드를 추가하면 필요로하는만큼 큰 번거 로움이 없으므로 매우 쉽습니다. 기존의 것을 변경). 그리고 예, 기존 exe와 통신하는 유일한 방법이기 때문에 어셈블러를 배워야합니다. exe는 그 안에있는 객체/코드의 래퍼 및 시동기 역할을하기 때문에 아무 것도 컴파일하지 않아도됩니다. (그 때문에 새 코드를 입력하는 것이 더 쉽습니다. 기존 코드를 사용하면 코드가 엉망인 경우 오류가 발생하지 않습니다. 우선, 어셈블러에 대한 좋은 책을 얻거나 IDA를 가져 와서 가지고있는 앱의 코드를 살펴보십시오.

+0

답변이 묻는 질문과 관련이 없습니다 . 또한 여기에 답변 (또는 질문)을 게시 할 때 글을 읽을 수 있도록 단락을 사용하십시오. 텍스트 벽 (크고 깨지지 않은 블록)은 읽고 이해하기가 어렵습니다. 감사. :-) –

+0

죄송합니다, 내가 의미하는 것은 C#으로 프로그램을 개발하여 exe 응용 프로그램으로 컴파일 한 것입니다. 이 응용 프로그램을 시작하기 전에 수정되었는지 확인하기 위해이 응용 프로그램을 확인하고 싶습니다. 즉, 내 서버에서 파일에 서명하고 파일이 다운로드됩니다. 사용자 A가 프로그램을 실행하고 무결성을 검사합니다. 사용자 A가 exe를 수정하면 실행되지 않습니다. 사용자 A가 수정하지 않으면 실행됩니다. – User093203920

+0

도움이된다면, 게임을 개발 중입니다. (이미 완료되었습니다.) 속임수를 쓰는 것이 더 어렵게 만드는 과정에 있습니다. 그래서 나는 평균적인 사용자가 클라이언트를 쉽게 수정할 수 없도록 노력하고있다. – User093203920