문제

상용 .Net 애플리케이션을 난독화하는 방법을 생각하고 있었습니다.그러나 그러한 도구를 선택하고 구매하고 사용하는 것이 실제로 노력할 가치가 있습니까?난독화된 바이너리는 리버스 엔지니어링으로부터 정말 안전한가요?

도움이 되었습니까?

해결책

도구를 구입할 필요가 없을 수도 있습니다. Visual Studio.NET은 Dotfuscator의 커뮤니티 버전과 함께 제공됩니다.기타 무료 난독화 도구 여기에 나열되어 있습니다, 귀하의 요구 사항을 충족할 수도 있습니다.

자전거 자물쇠가 깨지거나 뽑힐 수 있는 것처럼 난독화된 바이너리가 리버스 엔지니어링으로부터 안전하지 않을 수도 있습니다.그러나 작은 불편함만으로도 코드/자전거 도둑을 막을 수 있는 경우가 많습니다.

또한 법정에서 코드 조각에 대한 귀하의 권리를 주장해야 하는 경우 코드를 보호하기 위해(난독화하여) 노력한 것으로 밝혀지면 추가 점수를 얻을 수 있습니다.:-)

그러나 단점을 고려해야 합니다. 난독화된 코드로 리플렉션을 사용하는 것이 더 어려울 수 있으며, log4net과 같은 것을 사용하여 관련 클래스 이름을 기반으로 로그 줄의 일부를 생성하는 경우 이러한 메시지는 다음과 같이 나타날 수 있습니다. 해석하기가 훨씬 더 어렵습니다.

다른 팁

난독화는 코드를 임시로 검사하는 사람에게는 장벽일 뿐이라는 점을 기억하세요.누군가가 당신이 쓴 내용을 알아내려고 진지하게 생각한다면, 당신은 그들을 멈추기가 매우 어려울 것입니다.

코드에 비밀(예: 비밀번호)이 있으면 잘못한 것입니다.

누군가가 귀하의 아이디어로 자신만의 소프트웨어를 개발할까봐 걱정된다면 고객이 원하는 새 버전을 제공하고 기술 지원을 제공하고 고객의 파트너가 됨으로써 시장에서 더 많은 행운을 누릴 수 있습니다.좋은 사업이 승리합니다.

우리 회사에서는 여러 가지 난독화 기술을 평가했지만 모두 문제가 있었습니다.가장 큰 문제는 우리가 반사에 많이 의존한다는 것입니다.속성 이름을 기반으로 그리드를 동적으로 생성합니다.

따라서 모든 난독화 장치의 이름이 바뀌므로 물론 비활성화할 수 있지만 그렇게 하면 난독화의 많은 이점을 잃게 됩니다.

또한 우리 코드에는 공개된 훨씬 더 많은 메서드와 속성에 의존하는 많은 NUnit 테스트가 있으므로 일부 난독 처리기가 해당 클래스를 난독화할 수 없습니다.

결국 우리는 이라는 제품을 선택했습니다. .NET 리액터

아주 잘 작동하고, 다른 제품과 관련된 어떤 문제도 없습니다.

"난독 처리기와 달리 .NET Reactor는 순수 .NET 어셈블리(C#, VB.NET, Delphi.NET, J#, MSIL...로 작성)를 기본 기계어 코드와 혼합하여 디컴파일을 완전히 중지합니다.자세히 말하면, .NET Reactor는 잠재적인 해커와 .NET 코드 사이에 기본 벽을 구축합니다.결과는 MSIL 호환이 아닌 표준 Windows 기반 파일입니다.원본 .NET 코드는 그대로 유지되며 네이티브 코드로 잘 보호되며 다른 사람이 엿볼 수 없습니다.원본 .NET 코드는 어떤 경우에도 하드디스크에 복사되지 않습니다..NET Reactor로 보호되는 어셈블리를 디컴파일할 수 있는 도구는 없습니다."

실제로 리버스 엔지니어링이 가능하다고 해서 난독화가 쓸모없는 것은 아닙니다.기준을 크게 높였습니다.

난독화되지 않은 .NET 어셈블리는 모든 소스를 강조 표시하고 다운로드만 하면 모두 표시합니다. .NET 리플렉터.여기에 난독화를 추가하면 코드를 수정할 수 있는 사람의 수가 크게 줄어들 것입니다.

그것은 당신이 자신을 보호하고 있는지에 달려 있습니다.난독화되지 않은 상태로 제공할 경우 애플리케이션을 오픈 소스로 제공하고 마케팅 혜택을 누릴 수도 있습니다.난독화하여 배송하면 사람들이 코드를 훔치고 직접적인 경쟁자를 만드는 대신 패치를 통해 상대적으로 쉽게 수정된 바이너리를 생성할 수 있습니다.물론 난독처리기에 따라 난독화된 코드에서 실제 소스를 얻는 것은 매우 어렵습니다.

제품 종류에 따라 다르다고 생각합니다.개발자가 사용하도록 지시된 경우 난독화로 인해 고객에게 피해를 줄 수 있습니다.우리는 직장에서 ArcGIS 제품을 사용해 왔으며 모든 DLL이 난독화되어 있습니다.이상한 행동을 해독하기 위해 Reflector를 사용할 수 없기 때문에 우리 작업이 훨씬 더 어려워지고 있습니다.그리고 우리는 제품에 수천 달러를 지불한 고객을 구매하고 있습니다.

따라서 꼭 필요한 경우가 아니면 난독화하지 마십시오.

고려해야 할 사항:

  • 난독화는 코드나 논리를 보호하지 않습니다. 단지 읽고 이해하기가 더 어려워질 뿐입니다.
  • 난독화는 누구도 리버스 엔지니어링을 멈추지 않습니다. 단지 프로세스 속도가 느려질 뿐입니다.
  • 귀하의 지적 재산은 대부분의 국가에서 법으로 보호됩니다. 따라서 경쟁자가 귀하의 코드나 특정 구현을 사용하는 경우 귀하는 그를 고소할 수 있습니다.

난독화로 해결할 수 있는 유일한 문제는 누군가가 특정 구현의 1:1(또는 1:1에 가까운) 복사본을 만드는 것입니다.

또한 이상적인 세계에서는 난독화된 애플리케이션의 리버스 엔지니어링이 경제적으로 매력적이지 않습니다.

그러나 현실로 돌아가서:

  • 누군가가 애플리케이션이 제공하거나 생성하는 사용자 인터페이스, 동작 또는 결과를 복사하는 것을 막는 도구는 지구상에 존재하지 않습니다. 난독화는 이 상황에서는 100% 쓸모가 없습니다.
  • 시중에 나와 있는 최고의 난독 처리기라도 일종의 디스어셈블러나 16진수 편집기를 사용하는 것을 막을 수는 없습니다. 일부 괴짜에게는 애플리케이션의 핵심을 살펴보는 것이 매우 좋습니다.난독화되지 않은 코드보다 어렵습니다.

따라서 현실적으로 애플리케이션을 조사하는 것이 더 어렵고 시간이 더 많이 소요되지만 실제로는 안정적인 보호를 받을 수 없습니다.무료 제품을 사용하든, 상용 제품을 사용하든 상관없습니다.

제어 흐름 난독화 또는 코드 가상화와 같은 고급 기술은 때때로 논리를 이해하는 데 도움이 될 수 있지만 문제를 디버그하거나 해결하기가 어렵고 재미있을 수도 있습니다.그래서 때로는 해결책이라기보다는 추가적인 문제에 더 가깝습니다.

내 관점에서 난독화는 일부 회사가 제품에 대해 청구하는 돈만큼 가치가 없습니다. 일반 개발자에게 잔소리를 하고 싶다면 오픈 소스 난독 처리기로 충분합니다.애플리케이션의 핵심을 조사하는 것을 가능한 한 어렵게 만들고 싶다면 가상 실행 환경과 가상 파일 시스템이 포함된 암호화 컨테이너를 사용해야 하지만 공격 벡터도 제공하고 문제가 가득한 가방의 소스가 될 수도 있습니다. .

귀하의 지적 재산과 제품은 대부분의 국가에서 법으로 보호됩니다. 따라서 귀하의 코드를 분석하고 복사하는 경쟁자가 있다면 그를 고소할 수 있습니다.나쁜 사람이나 해커 또는 크래커가 귀하의 응용 프로그램을 가져가면 장난을 치는 것입니다. 그러나 난독 처리기는 차이를 만들지 않습니다.

따라서 먼저 목표, 시장 및 난독처리기를 사용하여 달성하려는 것이 무엇인지 생각해야 합니다. 여기(및 다른 곳)에서 읽을 수 있듯이 난독화는 실제로 리버스 엔지니어링 문제를 해결하지 못합니다.그것은 단지 더 힘들고 더 많은 시간을 소비하게 할 뿐입니다. 그러나 이것이 원하는 것이라면 다음과 같은 오픈 소스 난독 처리기를 살펴볼 수 있습니다.SharpObfuscator 또는 obfuscar는 일반 코더를 잔소리하기에 충분할 수 있습니다(목록은 여기에서 찾을 수 있습니다: Wikipedia의 .NET 난독처리기 목록).

귀하의 시나리오에서 가능하다면 SaaS 개념에도 관심이 있을 수 있습니다. 이는 귀하가 소프트웨어에 대한 액세스를 제공하지만 소프트웨어 자체에는 액세스를 제공하지 않음을 의미합니다.따라서 고객은 일반적으로 어셈블리에 액세스할 수 없습니다. 그러나 서비스 수준, 보안 및 사용자 기반에 따라 신뢰할 수 있고 자신감 있고 성능이 뛰어난 SaaS 서비스를 실현하는 것은 비용이 많이 들고 복잡하며 어려울 수 있습니다.

아니요, 난독화는 누군가가 컴파일된 코드를 해독하는 것을 방해하지 않는다는 것이 입증되었습니다.그렇게 하면 더 어려워지지만 불가능하지는 않습니다.

저는 x86 어셈블리 코드를 읽는 것이 매우 편합니다. 20년 넘게 어셈블리 작업을 해 온 사람들은 어떻습니까?

당신은 당신의 C# 또는 C 코드가 무엇을 하고 있는지 단지 1분만이라도 확인하는 사람을 항상 찾을 것입니다...

몇 년 후 이 글을 읽는 다른 사람에게 참고할 사항입니다. 저는 몇 시간 전에 Dotfuscator Community Edition(VS2008과 함께 제공됨) 라이선스를 훑어보았는데 이 버전을 사용하여 상용 제품을 배포하거나 코드를 난독화할 수 없다고 생각합니다. 자신이 아닌 다른 개발자가 참여하는 프로젝트에서.따라서 상용 앱 개발자에게는 실제로는 시험판일 뿐입니다.

...한조각...이러한 메시지는 해석하기가 훨씬 더 어려워 질 수 있습니다

예, 하지만 Visual Studio와 함께 제공되는 무료 커뮤니티 버전에는 지도 기능이 있습니다.이를 통해 난독화된 메소드 이름을 원래 이름으로 역추적할 수 있습니다.

하나의 무료 난독화기의 출력을 성공적으로 가져왔습니다. 다른 난독 처리기로.Dotfuscator CE에는 난독화 트릭 중 일부만 포함되어 있으므로 다른 트릭을 가진 두 번째 난독화 장치를 사용하면 더욱 난독화됩니다.

다음을 사용하여 .net 앱을 리버스 엔지니어링하는 것은 매우 간단합니다. .net 반사경 - 앱은 MSIL에서 직접 VB, VC 및 C# 코드를 생성하므로 모든 종류의 유용한 보석을 뽑아내는 것이 가능합니다.

코드 난독처리기는 대부분의 리버스 엔지니어링 해킹으로부터 코드를 잘 숨기므로 앱에 가치를 더하는 독점적이고 경쟁적인 코드에 사용하는 것이 좋습니다.

난독화에 관한 꽤 좋은 기사가 있으며 여기에서 작동합니다.

이 게시물 주변 질문에는 가치가 있는 몇 가지 토론이 있습니다.예, 아니오의 문제가 아닙니다.

네, 꼭 그래야 합니다.결단력 있는 사람으로부터 지키기 위해서가 아니라, 약간의 이익을 얻고 고객을 확보하기 위해서입니다.그런데 누군가가 귀하의 소프트웨어를 크랙하려고 시도하는 지점에 도달했다면 이는 귀하가 인기 있는 소프트웨어를 판매한다는 의미입니다.

문제는 작업에 어떤 도구를 선택할 것인가입니다.상업용 난독 처리기에 대한 내 경험을 확인하십시오. https://stackoverflow.com/questions/337134/what-is-the-best-net-obfuscator-on-the-market/2356575#2356575

응 우리는 그래.우리는 BitHelmet 난독처리기를 사용합니다.새로운 것이지만 정말 잘 작동합니다.

그러나 그러한 도구를 선택하고 구매하고 사용하는 것이 실제로 노력할 가치가 있습니까?

나는 Eazfuscator가 저렴하고(무료) 사용하기 쉽다는 것을 알았습니다.하루 정도 걸렸다.나는 이미 광범위한 자동 테스트(적절한 적용 범위)를 갖고 있었기 때문에 난독화로 인해 발생한 버그를 모두 찾을 수 있을 것이라고 생각합니다.

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