문제

응용 프로그램에 대한 라이센스 키에 대한 최고의 암호화를 조사하고 있었고 누군가가 누군가가 응용 프로그램을 쉽게 디코딩 한 다음 라이센스 키에 대한 테스트를 건너 뛸 수 있다고 말했습니다.

누군가가 실제로 그렇게 말하는 방법은 무엇입니까? 그래서 그들은 내 .dll을 가지고 있습니다. 어떻게 든 그것을 소환 한 다음, 라이센스를 확인하기 위해 함수 호출을 주석 한 다음 다시 컴파일해야합니까? 디 컴파일러는 코드가 여전히 컴파일되도록 정말 좋았습니다!

도움이 되었습니까?

해결책

신청서를 열어보십시오 반사기. 당신은 아마 놀랄 것입니다 :-)

크래커가 코드에 올바른 위치를 찾으면 조합을 사용할 수 있습니다. ildasm/ilasm 응용 프로그램에서 수표를 제거하려면 코드 반사판이 생성되는 경우에도 컴파일되지 않습니다.

다른 팁

소스 코드가 일반적으로 컴파일 된 경우 .NET 어셈블리를 디 컴파일하기가 매우 쉽습니다.

당신은 사용할 수 있습니다 .NET 리플렉터, Lutz Roeder가 원래 개발했으며 현재 Redgate Software가 지원합니다. 이 답변의 맨 아래에 스크린 샷이있어 리플렉터가하는 일을 인상합니다.

네임 스페이스와 클래스를 탐색하고 좋아하는 .NET 언어로 소스 코드 및 메소드를 볼 수 있습니다. Denis Bauer 's FiledisAssembler 귀하 (또는 귀하의 경우 사악한 해커)가 VS 솔루션으로 변환하고 프로그램을 수정할 수 있습니다.

사용과 같은 몇 가지 대책이 있습니다 코드 oppuscator 코드를 실제로 읽을 수 없도록합니다.

이 주제에 대한 StackoverFlow에 대한 다른 흥미로운 질문이 있습니다.

반사판 스크린 샷 :

alt text

조쉬 스미스도 출시되었습니다 crack.net 최근에 실행중인 .NET 프로세스에 부착하는 데 사용할 수있는 다음이를 열 수 있습니다. 반사기 - 디스크의 어셈블리가 어떻게 든 반사기를 사용하는 사람들을 피하기 위해 암호화 된 경우에도 여전히 메모리 내 버전을 사용할 수 있습니다.

.NET은 디 컴파일하기 쉽습니다. 난독 화는 무슨 일이 일어나고 있는지 이해하기가 조금 더 어려워 질 것이지만, 코드를 디 컴파일하는 사람은 지속적으로도 코드를 파악할 수 있습니다.

다음은 온라인에서 찾은 .NET 코드 보호에 대한 조언입니다.

http://blogs.msdn.com/ericgu/archive/2004/02/24/79236.aspx

논의 된 기술 중 어느 것도 100% 효과적이지 않으며 크래커를 뛰어 넘게 할 수구가 얼마나 많은지에 대한 의문 일뿐입니다.

.NET 컴파일은 일반적으로 매우 쉽습니다. 이것에 대한 느낌을 얻으려면 사본을 잡으십시오. .NET 리플렉터 그리고 그것을 시도하십시오.

대부분의 경우 간단한 라이센스 점검을 제거하기 위해 코드를 다시 컴파일 할 필요가 없습니다. MSIL 트릭을 할 것입니다.

이 시나리오로부터 자신을 보호하면 수익이 급격히 감소합니다. 언제나 코드에 추가 한 추가 점검을 우회 할 수있는 사람이 되십시오. 예를 들어, 코드에 디지털 서명을 추가 할 수 있으며 서명 실행을 거부 할 수 있습니다 (예 : 라이센스 검사를 제거하기 위해 코드가 변조되었음을 나타냅니다).

그런 다음 게임은 서명 확인을 제거합니다 (라이센스 키 확인 외에). 따라서 다른 점검을 추가하여 우회 할 수 있습니다.

전체 산업이 있습니다 코드 난독 화 그리고 복사 보호 이와 같은 문제로부터 소프트웨어를 방어하는 데 도움이되는 도구. 귀하의 편에 대한 추가 노력과 합법적 인 고객을 일으킬 성가심이 이러한 솔루션을 구매할 가치가 있는지 여부를 결정하는 것은 귀하에게 달려 있습니다 ...

이것이 당신이 방어하고자하는 것이라면, 당신은 그것을 공격하는 방법을 읽고 싶을 수도 있습니다.

소프트웨어 활용 Greg Holland & Gary McGraw는 훌륭한 소개입니다.

라이센스 키 기술에 대한 배제를하지 않는 것이 가장 좋습니다. 결정된 사용자가 해킹 할 수 있으며 응용 프로그램을 사용하여 합법적 인 사용자를 막는 문제를 추가 할 위험이 더 커집니다. 나는 심지어 보호 된 코드를 보았습니다 Hasp 동글 금이 간다. 라이센스 키를 암호화하고 코드를 난독 화하는 것만으로도 기회 주의적 공격을 방해하기에 충분해야합니다. 그 이상의 요점은 거의 없습니다.

에릭 싱크 이 점을 다루는 좋은 기사를 썼습니다. 섹션을 참조하십시오 "4. 정직한 사람들을 괴롭히지 마십시오""투명성의 신조"

반사기가 없어도 사람들은 오랫동안이 일을 해왔습니다. 기본적으로 Debugger가있는 앱을보고 (Windbg와 같은 일이) 라이센스 점검이 언제 발생하는지 알아 봅니다. 반환 값을보고, "모든 양호한"수표로 직접 점프하기 위해 응용 프로그램을 패치합니다.

사람들이 위에 게시 한 모든 것을 추천합니다. 당신은 그것이 고양이와 마우스 게임이라는 것을 깨달아야하며, 투자 수익이 그만한 가치가 있다면 그만한 가치가 있습니다. 시스템을 게임하려고하지 않는 사용자가 있다면 간단한 일이 할 수 있습니다. 크래킹이 만연한 곳이 있다면 다른 전략을보고 거기에서 가야합니다.

패치를 위해 응용 프로그램을 다시 컴파일 할 필요는 없습니다. 많은 이진 패치 도구가 존재합니다. 그리고 돈이 충분하다면 가장 결정적인 크래커를 막을 수는 없습니다.

"도"

모든 종류의 "표준"/일반적인 라이센스 점검 메커니즘은 자동 제거 도구의 대상입니다. 그리고 내가 반영한 몇 가지 상용 .NET 앱에서 이러한 "너무 사소한"수표가 일반적으로 보입니다.

가장 좋은 방법은 프로그램의 일부를 웹 서비스에 의존하여 보호하는 것입니다. 실행 속도를 늦추지 않기 위해 너무 수다스러운 인터페이스가되어서는 안됩니다. 그러나 앱이 자주 변경되는 경우에 해당 청크를 다운로드하고 로컬로 로컬로 캐시 할 수 있기 때문에 그다지 멍청하지 않아야합니다.

네트워크 연결을 피하려면 (일부 용도 또는 사용자가 설명하고 가치를 제공하지 않는 한 앱에 따라 문제가/의심 할 수있는 경우) 프로그램의 일부를 기본 DLL 또는 2로 나누고 라이센스 체크인 앱의 모든 부분과 네이티브 DLL에서는 분명히 덜 분명히, 대부분을 막기에 충분할 것입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top