구현하려는 것은 아마도 등록되지 않은 소프트웨어 복사본을 사람들이 실행하지 못하도록하는 DRM이라고합니다.
잃는 전투입니다. 모든 사람이 관련이있다
if (authenticationSucceeded) {
// Allow access to program
} else {
// Show error and quit.
}
이 기능을 디 컴파일하는 것입니다
에서, if 문에
!
를 삽입하고 다시 컴파일 : 아무리 당신이 그것을 구현하는 방법, 최종 결과는 코드에서 어딘가에는 이런 식으로 뭔가있을 것이라는 점입니다 다시 (또는 중간 언어 코드를 직접 수정하십시오.) 그들이 이렇게하면 그들은 당신의 안전을 망칠 것입니다.
이 점을 염두에두고 시스템을 구현하는 데 아주 간단하고 저렴한 시스템을 사용할 수도 있습니다. 서버에 일반 텍스트로 등록 된 키 목록 만 갖고 클라이언트가 HTTPS를 통해 자신의 키를 보내도록합니다 (도청 방지를 위해). 위에서 설명한 것처럼 해결 방법이 그렇게 쉬운 일이 아니므로 이보다 더 많은 보안을 추가하는 것은 가치가 없을 것입니다.
업데이트 : 포스터는 프로그램에서 원격 데이터베이스에 액세스하지 않고도 쓸모가 없다고 말합니다. 이 경우 은이 소프트웨어의 무단 사용을 방지하는 데, 더 정확하게는 데이터베이스에 대한 무단 액세스를 방지하는 것이 좋습니다. WCF을 사용하면 서버에 안전하게 연결할 수 있으며 나머지 인터페이스에 대한 액세스를 허용하기 전에 사용자 이름과 암호 해시를 보내야합니다. 사용자 이름/암호가 올바르지 않으면 서버는 사용자의 서비스에 대한 추가 호출을 금지합니다.서버에서 허용 된 사용자 이름과 암호 해시를 데이터베이스에 저장할 수 있습니다.
@Daniel : "C# .NET"과 같은 것은 없습니다. –
@Daniel : 컨텍스트가 무엇입니까? ASP.NET? –
@Daniel : 인터넷에 접속하지 않아도 프로그램을 실행할 수 없습니까? – davidsleeps