2012-04-18 2 views
0

내 프로그램이 라이센스 검증 부분을 제거하는 것을 간단하게하고 싶습니다. 비용의수동 난독 화에 대한 아이디어

  1. :

    나는 상업 난독 때문에를 사용하지 않습니다. 그리고 그들이 나보다 더 잘할 수는 있지만 - 도 균열을 없애지 못하게합니다.

  2. 때로는 난독 화 코드가 생성 된 코드에서 버그를 일으키는 것으로 보입니다.

분명히 유지 관리를 위해 난독 화되지 않은 사본을 보관할 것입니다.

+4

수동 난독 화로 인해 최종 결과에 버그가 발생할 수도 있습니다. 훨씬 높은 propability와. –

+0

중복? http://stackoverflow.com/questions/1857685/how-to-create-own-dotnet-obfuscator –

+2

플러스 VS2010에는 dotfuscator 커뮤니티 에디션이 포함되어 있습니다. –

답변

2

고객이 수정할 수있는 라이센스 확인 프로그램을 코드에서 숨겨야했습니다. 그들은 어디를보아야하는지 알고 있다면 그것을 제거 할 수 있었다고 생각합니다. 그 당시 내가 사용했던 몇 가지 트릭이 있습니다.

  1. 실제로는 다른 작업을 수행하는 것처럼 보이는 인증 자 클래스, 어셈블리 이름 및 변수 이름을 지정하십시오.
  2. 코드의 여러 부분에서 검증자를 호출하십시오.
  3. 확인을 위해 호출에 임의 화기를 추가하여 때로는 실행되고 때로는 실행되지 않도록합니다. 이렇게하면 인증 코드가 실제로 어디에서 왔는지 알기가 어려워집니다.

나는이 모든 것이 패배적이고 심각한 유지 보수 문제를 야기 할 수 있다고 덧붙여 야하지만, 나의 특별한 시나리오에서는 효과가있었습니다.

+0

감사합니다. 이것이 내가 찾는 대답의 유형입니다. – ispiro

+0

디버거로 추적하기가 너무 어렵지 않습니다. –

+0

예,하지만 바보짓을하려는 사람이 디버거를 사용하고 소스에 액세스 할 수있는 권한이 있다면 어쨌든 더 강한 것이 필요할 것입니다. – SouthShoreAK

1

라이센스 파일을 확인하는 여러 코드 포인트를 갖는 것이 더 어렵지는 않지만 불가능한 방법이 될 수 있습니다.

당신이 키에 너무

abc-def-fhi-asdf 

그래서, 네 부분으로 같은 몇 가지 키를 사용하여 라이센스 파일을 가지고 있다고 할 수 있습니다. 그런 다음 키의 여러 부분을 확인하는 네 가지 방법을 만듭니다.

이렇게하고 코드를 통해 사용되는 방법을 변경하면 (이상적으로는 런타임에 검증 방법을 임의로 선택하는 것이므로) 유효성 검사를 제거하는 것이 훨씬 더 어려워집니다.

위의 방법 중 하나는 확인 메소드를 인라인하는 게시 프로세스를 호출하고, 호출 될 때마다 미묘하게 변경하는 것입니다. 이 같은

예를 들어 뭔가 :

*user clicks a common function 
// [VALIDATION STUB] 
*perform user action 

새로운 게시 프로세스는, [확인 STUB] // 철수하고 (코드가 컴파일되기 전에) 유효성 검사 코드로 대체하는 코드를 실행하는 나는 말할 때마다 가능한 한 많이 달라져야한다.

내 대답에서 끌어내는 것이 가장 중요한 것은 난독 화가 어렵지만 불가능하지 않다는 것입니다. 특히 악의적 인 사용자가 항상 결국 깨뜨릴 것이라는 현실에 사념을 걸면

+0

감사합니다. 하지만 "검증 방법을 인라인하는 게시 프로세스"가 어떤 부분에서 도움이 될지 이해하지 못했습니다. – ispiro

+0

코드가있는 장소의 수를 늘리면 누군가가 코드를 해독하기가 더 어려워집니다. 게시 프로세스는 본질적으로 유효성 검사 코드를 삽입하는 것입니다.이 코드는 현재 한 가지 방법 일 수 있으며 코드에서 여러 곳으로 쉽게 제거 할 수 있습니다. – Jroc

+0

알았어요. 감사. – ispiro

0

나는 유용한 정보를 얻을 수있는 몇 가지 제안 사항이 있습니다.

물론 VisualStudio와 함께 제공되는 무료 obfuscator를 사용할 수 있습니다. 무엇보다 낫다.

두 번째로 라이선스 확인 코드를 작성할 수 있으며 제대로 작동하면 리팩터링하여 클래스 이름, 멤버 변수, 로컬 변수 및 메소드를 c1, v1, l1, m1 등과 같이 변경할 수 있습니다. . 기본적으로 난독 화가들이하는 일입니다.

셋째, 위의 모든 작업을 수행하십시오.

넷째, 라이센스 검증을 관리되지 않는 코드 (C++, Delphi)로 작성하고 core.dll, net.dll 등 중요한 이름의 DLL로 만드십시오. 중요하지 않은 일부 미끼 방법을 배치 할 수도 있습니다 . 코드의 여러 위치에서 해당 DLL에 대한 많은 호출을 수행하고 이러한 호출 결과로 무엇인가를 수행하는 척하십시오.

관련 문제