릴리스 코드를 난독 처리하면 어떤 이점이 있습니까?


12

내가 염두에두고있는 구체적인 예는 현재 알파 게임 인 Minecraft와 관련이 있지만 이것은 대화가 필요하다고 생각되는 일반적인 질문입니다.

Minecraft는 Java로 작성되며 스택 추적은 일반적으로 다음과 같습니다 (실제 예).

java.lang.NullPointerException
    at d.a(SourceFile:247)
    at gi.b(SourceFile:92)
    at bd.a(SourceFile:33)
    at bn.a(SourceFile:69)
    at bn.e(SourceFile:115)
    at bn.d(SourceFile:103)
    at net.minecraft.client.Minecraft.i(SourceFile:1007)
    at net.minecraft.client.Minecraft.run(SourceFile:596)
    at java.lang.Thread.run(Unknown Source)

분명히 이것은 개발자가 작성할 때 사용하는 실제 패키지 및 메소드 이름이 아닙니다. 그가 알파 단계에 있기 때문에, 특히 누군가가 버그보고를 위해 스택 추적을 제공 할 수있는 경우 개발자는 스택 추적을 이해할 수 있어야합니다. 이것이 의미하는 바는 대부분 의미가 없습니다.

더 어려운 버그 식별의 단점을 극복하는 이와 같은 코드를 난독 화함으로써 얻을 수있는 이점은 무엇입니까?


1
간단히 말해서, 난독 화 코드 리버스 엔지니어링 의 경제성변화시킵니다 .
마크 부스

답변:


22

우리는 Java 코드도 난독 화합니다 ....

장점은 리버스 엔지니어링하기가 더 어렵다는 것입니다 (예를 들어 누군가 코드베이스를 훔쳐서 비슷한 경쟁 제품을 만드는 데 기반으로 사용하는 경우).

원래 스택 추적을 다시 가져올 수 있습니다. 난독 처리 된 스택 추적을 실행하는 데 사용할 수있는 특수 참조 파일을 작성하는 난독 화 도구가 있으며 원본 소스 스택 추적과 함께 제공됩니다. 이들은 난독 화 프로세스 자체에서 생성되므로 코드를 난독 화하는 데 사용한 참조 파일을 먼저 다루지 않으면 원래 스택 추적을 다시 가져올 수 없습니다.

이것은 실제로 단점이 없습니다. :)


3
흥미롭게도, 나는 그들이 "추적 추적 난독 화"(난독 화기를 사용하지 않은)와 함께 온 것을 결코 알지 못했습니다 ... 정말 좋은 아이디어 :-)
Dean Harding

1
내가 본 유일한 단점은 때로는 난독 화기 (이 경우 .NET 것)가 지터가 읽을 수없는 지점 (불법 지침)으로 난독 화하는 경우가 있습니다. 대규모 실패.
vcsjones

@vcsjones : 그건 정말 난독 화가 아니라 ...
구성자

3
  • 지적 재산 보호

대부분의 obfuscator는 또한 코드를 최적화하고 , 쓸모없는 메타 데이터를 제거하거나 사용하지 않는 코드, 압축, 데드 코드 제거 또는 중복 제거를 제거합니다.


그러한 최적화를 위해 난독 화기를 사용해야하는 경우 사용중인 컴파일러는 정말 게으른 소프트웨어 여야합니다.
phresnel

@phresnel : 네, 난독 처리기는 꽤 잘 할 수 있습니다

@phresnel : 불완전하지만 아마도 엉터리 ...

네 말이 맞아 다시 게시하겠습니다.
phresnel

1
내가 당신을 믿지 않는 것은 아닙니다. 나는한다! 그러나 이러한 모든 최적화는 일반적으로 최신 컴파일러에서도 수행됩니다. 적어도 gcc에 모든 것이 있다는 것을 알고 있습니다. 그래서 내 의견은 : 난독 화가 실제로 당신에게 상당한 속도 향상을 제공한다면, 컴파일러 [공급자]가 충분히 열심히 시도하지 않았거나 적절한 최적화 플래그가 주어지지 않은 것보다.
phresnel
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.