이것에 대해 생각하면, 난독 화에는 여러 가지 유형이 있습니다. 완전한 시간 낭비 인 소스 코드의 난독 화부터 시작하겠습니다. 그것 없이는 이해하기가 어렵습니다! 대신 코드가 사용자에게 어떻게 전달되는지에 대한 전달 패키지의 난독 화에 초점을 맞추겠습니다.
작은 난독 화
가벼운 난독 화는 캐주얼 사용자가 손가락을 찌르거나 물건을 쉽게 부수는 것을 방지하기 위해 존재합니다. 결정된 해커를 차단하지는 않지만 지원 요청이 실제로 제공 한 것임을 보장하는 데 도움이됩니다. 이런 종류의 일에 필요한 보호 수준은 실제로 매우 낮습니다. 전달 패키지는 단지 (전문 도구없이) 읽고 편집 가능하게 보일 필요 가 없으며 , 충분합니다.
자바 스크립트 축소는 이에 대한 예이지만 판매되지는 않습니다. 올바른 결정을 내린 사람은 충분히 결정된 / 지속적인 경우에 기술적으로 가능한 경우에도 축소 된 JS 파일을 읽고 편집하기를 원하지 않습니다.
Java 응용 프로그램 제공과 유사합니다. 코드를 실행 가능한 JAR로 패키징하면 도시 공원에 정중 한 "Please Keep Off The Grass"표시가 있지만 어리 석음의 대부분을 막을 수 있습니다.
C ++ 코드를 제공 할 때도 실행 파일에서 불필요한 심볼을 제거하면 약간 난독화할 수 있습니다. 핵심은 사용자로서 결과를 읽는 것이 어색 하지만 컴퓨터로 실행하는 데는 문제가 없다는 것입니다.
주요 난독 화
주요 난독 화는 결정 되고 지식이 풍부한 사용자를 차단합니다. 또한 완전히 패배하는 게임이기도합니다. 컴퓨터가 그것을 실행할 수 있다면, 사람은 그것을 분리하여 그 일을 할 수 있습니다. 당신이 얻을 수있는 가장 가까운 것은 프로그램 자체를 지속적으로 해독하여 한 번에 수행하는 작업을 다른 시간에 수행하는 것과 완전히 다른 것으로 변환하는 것입니다. 그러한 것을 만드는 것은 다소 어려울 수 있지만 여전히 훌륭한 해커를 막지 못할 것입니다 (단, 자체 수정 코드를 해독하는 데 많은 노력을 기울이면 실제로 해커가 끝날 때까지 당신과 상당히 교차 할 것입니다).
다른 솔루션으로 생각하는 것이 훨씬 좋습니다. 예를 들어, 제어하는 서버에 코드의 "크라운 보석"을 유지하고 서비스 호출 만 허용하여 클라이언트를 귀중한 비트의 프론트 엔드 인 본질적으로 무료로 제공 할 수 있습니다. 또는 더 많은 계약 / 법적 경로를 따라갈 수 있으며 코드 내부를 찌르지 않거나 그렇게한다면 보상하는 조직에 공식적으로 실행 파일을 넘겨 줄 수 있습니다 (NDA의 일 종일 수 있음). 목표는 해커가 해킹하지 않도록 강력한 인센티브를 만들고 사용자가 계약에 구속되지 않는 해커로부터 코드를 멀리하는 것입니다.
그러나 코드를 해독 할 수 없다고 가정해서는 안됩니다. 가상화를 사용하면 실행의 모든 프로그램 상태를 검사하고 추적 할 수 있으며이를 방지하려는 모든 것 (예 : 외부 시간 원본에 대한 클럭 추적)은 해커보다 합법적 인 사용자에게 문제를 일으킬 가능성이 훨씬 높습니다. ( 코드가 상대방의 손 에 들어간 후에도 매우 정통한 정보 출판사 조차도 시스템을 안전하게 유지할 수없는 방법에 대해서는 DRM의 역사를 참조하십시오 .) 합법적 인 사용자를 실제로 만족시키는 데 집중하는 것이 훨씬 좋습니다. 비정기적인 균열로 인한 손실은 고객 만족을 통한 적절한 추가 자금과 비교할 수 없습니다.