문제

누가 사용하여 상업적인/무료 java 난독 처리기에 자신의 상업적인 제품입니다.나만 알고 있기에 대해 하나의 프로젝트 실제로 했다 난독 처리 단계에 개미 구축 단계를 출시하였습니다.

당신은 당황?그렇다면,당신은 왜 obfuscate?

그것은 정말 방법 코드를 보호하기 위해 또는 그냥감을 위해 개발자/관리자가?

편집: 좋아,내가 정확하에 대한 내 포인트:당신은 당황을 보호하 IP(의 알고리즘 작품을 넣을 귀하의 제품)?지를 당황하게 보안상의 이유로 생각하지 않는 옳습니다.그래서 나는에 대해서만 이야기를 진행할 것을 보호 응용 프로그램 코드에 대한 경쟁자.

@staffan 는 좋은점:

이유로 숙박 시설에서 연결 코드는 흐름은 사람들의 일부는 변경 불가능한 JVM 을 효율적으로 최적화하는 코드입니다.에서 효과 그것이 실제로 저하의 성능 응용 프로그램입니다.

도움이 되었습니까?

해결책

당신이 경우에 당황에서 난독 처리기하는 코드를 수정을 변경하여 코드의 흐름 및/또는 추가 예외 블록과 같은 하드를 분해니다.하는 코드를 읽을 수 없는 일반적으로 충분히 다만 변화한 모든 이름의 방법,필드 아래에서 신나게 즐기세요.

이유로 숙박 시설에서 변화하는 코드는 흐름은 사람들의 일부는 변경 불가능한 JVM 을 효율적으로 최적화하는 코드입니다.에서 효과 그것이 실제로 저하의 성능 응용 프로그램입니다.

다른 팁

내 생각에는 옛(고전)의 방법으로 난독을 관련이 없는 것입니다.기 때문에 대부분의 경우에 고전적인 난독 처리기를 깨고한 스택 추적(그것은 좋지 않은 너의 클라이언트를 지원)

요즘 주요 포인트는 일부를 보호하지 않는 알고리즘,하지만 보호하는 중요한 데이터:API 로그인/암호/키 코드 라이센스에 대한 책임(불법 복제로는 여전히 여기에서,특히 서유럽,러시아,아시아,이럴),광고 계정 Id,etc.

흥미로운 사실:우리는 모든 이에 민감한 자료 문자열입니다.실제로 문자열에 대한 50-80%의 논리입니다.내가 보기에는 미래의 난독은"문자열 도구를 암호화".

하지만 지금은"문자열을 암호화"기능을 사용할 수 있만에서 상업 난독 처리기와 같은: Allatori, Zelix KlassMaster, 연막, 스트링거 Java 난독 Toolkit, DashO.

N.B.난 CEO 에 Licel LLC.개발자의 스트링거 Java 난독이다.

내가 사용하는 proguard 에 대한 JavaME 개발.그것은뿐만 아니라 매우 만들기에 아주 좋은 jar 파일은 작은 항목(필수 위해 모바일)그러나 그것은 유용으로 더 좋은 방법은 장치별 코드에 의존하지 않고 IDE-비우호적 전처리 공구 등 안테나입니다.

E.g.

public void doSomething()
{
    /* Generated config class containing static finals: */
    if (Configuration.ISMOTOROLA)
    {
        System.out.println("This is a motorola phone");
    }
    else
    {
        System.out.println("This is not a motorola phone");
    }
}

이 컴파일,난독,그리고 클래스 파일이 끝나는 비록 당신이 쓴:

public void doSomething()
{
    System.out.println("This is a motorola phone");
}

할 수 있도록 개의 코드의 주위에 일하는 제조업체는 버그에서 JVM/라이브러리 구현이지 않고 크게 하는 최종 실행 클래스 파일이 있습니다.

내가 믿는 어떤 상업 난독 처리기 병합할 수도 있습니다 클래스 파일에서 함께 어려운 경우도 있습니다.이기 때문에 더 많은 클래스가 더 큰 크기의 오버헤드에 있는 지퍼(jar)파일이 들어 있습니다.

나는 약간의 시간을 보냈다는 이해하려고 다양한 Java 난독 처리기,그리고 나는 하나를 발견할 마일에서 앞서 나머지: JBCO.그것은 불행하게도 조금 귀찮을 설정하지 않 GUI,하지만 측면에서의 수준의 난독 생산,그것은 비교할 수 있습니다.당신이 시도 먹이고 그것은 간단한 반복,그리고 만약 당신의 decompiler 충돌하지 않을,당신은 다음과 같은 결과가 표시됩니다:

    if(i < ll1) goto _L6; else goto _L5
_L5:
    char ac[] = run(stop(lI1l));
    l7 = (long)ac.length << 32 & 0xffffffff00000000L ^ l7 & 0xffffffffL;
    if((int)((l7 & 0xffffffff00000000L) >> 32) != $5$)
    {
        l = (long)III << 50 & 0x4000000000000L ^ l & 0xfffbffffffffffffL;
    } else
    {
        for(l3 = (long)III & 0xffffffffL ^ l3 & 0xffffffff00000000L; (int)(l3 & 0xffffffffL) < ll1; l3 = (long)(S$$ + (int)(l3 & 0xffffffffL)) ^ l3 & 0xffffffff00000000L)
        {
            for(int j = III; j < ll1; j++)
            {
                l2 = (long)actionevent[j][(int)(l3 & 0xffffffffL)] & 65535L ^ l2 & 0xffffffffffff0000L;
                l6 = (long)(j << -351) & 0xffffffffL ^ l6 & 0xffffffff00000000L;
                l1 = (long)((int)(l6 & 0xffffffffL) + j) & 0xffffffffL ^ l1 & 0xffffffff00000000L;
                l = (long)((int)(l1 & 0xffffffffL) + (int)(l3 & 0xffffffffL)) << 16 & 0xffffffff0000L ^ l & 0xffff00000000ffffL;
                l = (long)ac[(int)((l & 0xffffffff0000L) >> 16)] & 65535L ^ l & 0xffffffffffff0000L;
                if((char)(int)(l2 & 65535L) != (char)(int)(l & 65535L))
                {
                    l = (long)III << 50 & 0x4000000000000L ^ l & 0xfffbffffffffffffL;
                }
            }

        }

    }

당신이 알고하지 않았 Java 했 goto 니까?론,JVM 지원=)

내가 사용하는 ProGuard 고 그것을 권장합니다.는 동안 난독 않을 보호 코드 캐주얼에서 공격자는,그것의 주요 이점은 이 최소화하는 효과를 제거하는 사용하지 않는 클래스와 방법과 쇼트닝한 모든 식별자를 1 또는 2 자입니다.

내가 생각하는 대부분의 난독은 무의미:도 함께 전체 소스 코드 그것은 일반적으로 충분히 열심히 파악하는 도대체 무슨 의도였다면(댓글이 없습,그리고 아무 의미있는 이름을 위한 지역 변수는 경우 다시 생성하는 근원에서 바이트 코드).난독 그냥 장식이다.

나는 생각한 개발자는 특히 자신의 관리자 하는 경향이 크게 통해 과장하고 위험의 누군가가고 소스 코드입니다.는 동안 좋은 decompilers 생산할 수 있는 좋은 찾고 소스 코드,그 사소한 일로,그것과 관련된 비용(을 언급하지 않는 법적 위험)은 충분히 높은 이 방법을때 유용하다.나는 단지 디컴파일된 문제를 디버깅 폐 source 공급업체의 제품(교착 상태에서 DB 는 추상화 계층,우).바이트 코드를 실제로 난독,내 생각,그러나 우리는 그럼에도 불구하고 발견의 기본 문제가-그것을 실제 디자인 문제입니다.

나는 그것이 정말 오 what 자바 코드가 방법,분산 및 사람의 클라이언트.우리는 하지 않 obfuscate 아무것도 우리가 결코 발견 중 하나는 특히 좋았고하는 경향이 있다는 더 많은 문제보다 가치가있다.누군가가 있다면 우리 JAR 파일과 지식을 가지고 있을 수 있 냄새 주위에,그 안에 그런 다음 거기에 훨씬 더 많은 걱정하는 것들이 그들이 할 수있는 것보다 찢어의 소스 코드입니다.

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