문제

하 클래 방법 및 가변 이름을 얻을 포함 MSIL 후 컴파일하는 윈도우 앱 프로젝트로 EXE?

  • 난독 -미만 이름,더 리버스 엔지니어링.
  • 성능 -짧은 이름,더욱 빠르게 액세스할 수 있습니다.

예: 그렇다면 방법이라고를 통해 이름:

  • 유지는 이름 , 더 나은 성능에 대한 명명된 조회입니다.
  • 유지는 이름 비밀, 열심히 디컴파일.
도움이 되었습니까?

해결책

네,그들에 IL-불 반사체 당신이 볼 수니다.지 않다면 그 말에 일리노이,당신이 할 수 없을 구축에 대하여 그들로 라이브러리입니다.(그래 참조할 수 있습니다.exe 파일을 만들었 클래스 라이브러리입니다.)

그러나,이것은 모두 해결이 한 번에 JIT.

유지는 이름 읽기 그렇게 당신을 유지 할 수 있는 코드에서는 미래입니다.성능 문제의 가능성 확인 측정가능한 차이를,그리고 당신이 원하는 경우를 당황하게하는 당신의 코드,그것을 하지 않는 소스 코드 수준에서(여기서 당신 을 읽는 코드)-그것을 목적으로 내장 난독이다.

편집:으로 포함되는 무엇이지 시작 반사 또는 ildasm 과 알아낼 수 있을까요?메모리에서,당신은 당신을 잃 지역 변수 이름(에 있는 pdb 파일 당신이 그것을 건축하는 경우)그러나 그것은 그것에 대해입니다.개인 메서드 이름과 개인 변수 이름은 아직도있다.

다른 팁

예, 그들은합니다. 짧은 이름을 사용하여 주목할만한 성능 이득이있을 것이라고 생각하지 않습니다. 이득이 가독성 상실을 극복하는 방법은 없습니다.

로컬 변수는 MSIL에 포함되지 않습니다. 필드, 방법, 클래스 등입니다. 변수는 색인 기반입니다.

회원 이름은 개인이든 공개적이든 IL에 포함됩니다. 실제로 모든 코드도 포함되며 반사기를 사용하면 응용 프로그램의 모든 소스 코드를 실제로 읽을 수 있습니다. 남은 것은 앱을 디버깅하는 것입니다.이를위한 도구가있을 수 있다고 생각합니다.

많은 고객과 경쟁이있는 패키지 응용 프로그램을 작성하는 경우 절대적으로 (그리고 더 강조 할 수는 없습니다) 코드를 난독하게해야합니다. 운 좋게도 많은 난독자가 있습니다.

이것은 .NET에서 가지고있는 주요 그립입니다. MS는 이것에 대해 많은 노력을 기울이고 있기 때문에 전문적인 oppuscator를 개발 (또는 획득)하고 Vs의 일부로 만들지 않겠습니까? Dotfuscator는 커뮤니티를위한 버전이 아니라 자르지 않습니다.

  • 이름을 짧고 더 나은 성능을 유지하십시오.

이것이 어떻게 어떤 차이를 만들 수 있습니까? VM이 식별자를 어떻게 찾아 보았는지 잘 모르겠지만 스트레이트 스트링 비교 조회를 수행하지 않는 것이 확실합니다. 이것은 최악의 가능한 방법 일 것입니다.

  • 이름을 비밀스러운 상태로 유지하고 디 컴파일하기가 어렵습니다.

솔직히 말해서, 나는 코드 난독 화가 그렇게 많이 도움이되지 않는다고 생각합니다. 대부분의 유능한 개발자는 메소드 이름과 같은 식별자가 완전히 도움이되지 않더라도 이미 필요하거나 개선 해야하는 소스 코드가 이미 이러한 문제를 가지고 있기 때문에 이미 도움이되지 않더라도 이미 "여섯 번째 감각"을 개발했습니다. "doAllStuff ()").

그래도, 모호함을 통한 보안은 일반적으로 나쁜 생각입니다.

난독 화가 걱정되면 .NET 원자로를 확인하십시오. 나는 8 개의 다른 난독 캐쳐를 테스트했으며 반응기는 가장 저렴한 상업용이었을뿐만 아니라 무리의 두 번째로 최고였습니다 (최고는 가장 비싼 것, Dotfuscator Gold).

편집하다

실제로 지금 생각하기 때문에, 당신이 관심을 갖는 모든 것이 난독 화 방법 이름 만 있으면 vs.net, dotfuscator community edition과 함께 제공되는 이름은 잘 작동합니다.

나는 그것들이 추가된다고 생각하지만, 이름의 길이는 함수 이름을 찾는 방식으로 인해 아무런 영향을 미치지 않을 것입니다. 난독 화에 관해서는, 나는 기본적으로 당신이 말하는 것을 정확하게하는 도구 (도트 포스커처 또는 그와 비슷한 것)가 있다고 생각합니다.

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