cringe
그는 물었다 12년 전
50

난독 보관합니까 너회의 상용 자바 코드를?

제가 생각하기엔 누구나 무료로 사용하는 경우 상용 / java 난독 스스로 상업용 제품. 내가 아는 한 단계 한 단계 중 약 1 만 프로젝트 실제로 난독 ant 구축하십시오 릴리즈합니다.

들어보겠소 난독? 그렇다면, 왜 난독?

아니면 그냥 느낌이 더 잘 보호할 수 있는 방법을 실제로 코드에 대한 개발자 / 관리자에만?

  • edit:* 좋아요, 그럼 정확합니다 연인으로써 포인트: 난독 보관합니까 보호하기 위해 IP (해당 알고리즘, 작업, ve 동일팔레트에 you& # 39 를 제품)? # 39, 내가 won& 난독 보안상의 이유로 doesn& 있는 t # 39 그러겄지 느낄 수 없다. 그래서 I& # 39 m 대해서만 언급하고, 경쟁사에 비해 맬웨어로부터 애플리케이션 코드.

@staffan 는 좋은 점:

&gt. 그 이유는 그들 중 일부는 에로남이네 떨어져 체인식으로 연결 코드 흐름을 효율적으로 최적화합니다 JVM 의 코드 변경을 그것을 불가능하게 만들고 있습니다. 실제로 실제로 응용 프로그램의 성능이 것입니다.

답변 7 개

난독 떨어져 있는 경우, 추가 코드를 직접 수정하십시오 난독 코드를 변경할 수 있도록 하는 등 it 흐름 및 / 또는 idfsysobject. 블록 하드 분해할 수 있습니다. 코드 이름 변경 할 수 있는 모든 방법을 충분히 읽을 수 없는 것이 아니라, 들판 클래스뿐만.

그 이유는 그들 중 일부는 떨어져 있는 JVM 의 흐름은 코드를 변경할 수 있도록 최적화합니다 코드 변경이 불가능하다. 실제로 실제로 응용 프로그램의 성능이 것입니다.

staffan
NateS
그는 7년 전 댓글을 달았습니다
7

하는 소리가 너무 일찍 최적화이든 다는일은.

내 생각에 이전 (고전) 길 잃고 관련성을 난독화 점점 커지고 있다. 대부분의 경우 고전적인 난독 나누기 때문에 stack trace (좋지 않은 고객의 지원을 위해)

요즘 가장 중요한 데이터를 보호할 수 있지만, 일부 알고리즘을 보호하지 가리키십시오. 로그인 / 비밀번호란 / 키, 코드에는 apiu 담당하는 라이센싱에 (해적, 특히 서부 유럽, 러시아, 아시아, 이럴 아직도 여기), 광고 계정 아이디 상술합니다.

흥미로운 사실을 말이다. 우리는 이 모든 중요한 데이터를 써줬지 실제로 문장열 논리 () 는 약 50-80% 의 응용 프로그램. 저,) 는 미래의 난독화 &quot 구체화하십시오 암호화에만 tools&quot 것으로 보인다.

하지만 이제 &quot 구체화하십시오 encryption"; 난독 cf 에서만 다음과 같은 기능을 사용할 수 있습니다 &lt ";;;;; a href = http://www.allatori.com/ &quot &gt allatori&lt /a&gt <;;;; (http://www.zelix.com/klassmaster/index.html&quot), a href = &quot &gt 제리스 klassmaster&lt /a&gt <;;;;; a href = &quot, http://www.leesw.com/smokescreen/&quot, https://jfxstore.com/stringer&quot, a href = &quot &gt smokescreen&lt /a&gt &lt >;;; a href = &quot 스트링거 jave 난독화 toolkit&lt /a&gt &lt &gt dasho&lt /a>.;; http://www.preemptive.com/ ";

N. B.

39 m http://support. 리셀 i& 최고경영자 (ceo), llc. 난독 스트링거 jave 진행중이다.

Ivan Kinash
marcolopes
그는 6년 전 댓글을 달았습니다
0

39, that& 아주 참. 이런 일이 너무 많아 다른 people& # 39 의 상업적, 아무도 신경 쓰지 않을까 하는 오픈 소스 프로젝트 소스 코드. 요점은 확실히 일부 (작은) 등과 같은 특정 정보를 보호하기 위해 개인 키와 비밀번호란.

내가 사용하는 프로가드 자바메 위한 개발. # 39 의 it& 아니라 아주 잘 만드는 것이 유용한 비호환성의 괜찮게 jar 파일 크기가 작은 (에센셀 for mobile) 방식으로 업무를 수행하는 장치 관련 코드를 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");
    }
}

이 자리에 쓴 것처럼, 난독화 및 클래스 파일이 motor1.1end 백업하도록 컴파일됨 얻을 수 있습니다.

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

가질 수 있도록 코드의 변형 없이 최종 실행 프로그램의 버그를 해결하기 위해 제조업체입니다 JVM / 라이브러리 구현보다 벌크 아웃해야 클래스 파일을.

경우에 따라 클래스 파일을 함께 일부 상용 난독 병합해야 그랬을 수도 있습니다. 이 때문에 더 큰 크기 때문에 확인할 수 있으며, 클래스뿐만 오버헤드에 있는 zip 파일 (jar).

Lawrence Dol
그는 4년 전 댓글을 달았습니다
0

사실 관련해서 사양명세 조건 코드, Java 에서는 이 같은 조건을 제공하는 컴파일러와의 드롭합니다 통해 불필요한 코드를 정적으로 할당되었는지 거짓값 표현식입니다. 이는 모든 프로가드 할 수 있다.

1 및 [프로가드] 이 내가 사용하는 것을 권장합니다. # 39 에서 코드 난독화 높여줍니까 보호하는 동시에, s 는 제거하는 효과를 이용해, 캐주얼 it& 최소화하므로 비사용률 클래스뿐만 단축 및 메서드을 및 주요 이점은 모든 식별자입니다 1 개 또는 2 개의 문자를 사용할 수 있습니다.

Cratylus
그는 8년 전 댓글을 달았습니다
2

나도 궁금 코드 난독화 적 반사 문제를 집중적으로 사용하는 드셨어요??

Lawrence Dol
그는 8년 전 댓글을 달았습니다
0

@user384706: 프로가드 함께 사용하는 코드가 반사 광범위하게 사용할 수 있어야 해요. 당신은 구성려면 사용하는 단순한 '클라스윈포나미 ()' 항목을 제외한 반영된 합니다.

내가 하는 데 시간이 걸릴 수 있으며, 다양한 jave 난독 아웃해야 올해 내가 찾은 세제곱마일 앞두고 미삭: 에브코. # 39 의 죄송합니다. it& 좀 번거롭습니다 GUI 설정 및 주님으로부터그에게 있지만, 그것은 수준의 난독화 만여건이 면에서 탁월한. 이 경우, 단순 반복 있겠어요 공급하는 역컴파일러 doesn& # 39 이 같은 일이 이 t 충돌 로드하려고 시도할 볼 수 있습니다.

    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;
                }
            }

        }

    }

39 인도하심이라만일 goto& # 39, s, t know jave 너회가 didn&? 음, JVM 은 그들을 =)

Lawrence Dol
그는 9년 전 댓글을 달았습니다
6

Dell. 기계 코드 수준 (따라서, 이는 단순히 바이트코드 의 시스템 독립적인 기계어) 모든 컴퓨터 사용 goto& # 39 의. 루프 이동 / 찼음을 단순히 구성되어 있다. 좀 더 알차게 니시덴틀리 계속하시겠습니까) 와 브레이크 (break) 는 레이블 (때때로 레이블이 아닌 명시성 유추) 를 사용하여 제한되었거나 이동.

Antimony
그는 8년 전 댓글을 달았습니다
3

39 의 연구는, 품질의 코드를 에브코 에로남이네 it& 단점도 있다. # 39 건, t 를 실행할 수 있다, 내가 can& 이해했소 간단한 테스트를 붽뎄 사실상 존재하지 않습니다.

Lawrence Dol
그는 4년 전 댓글을 달았습니다
0

D 추가하기에서는 i& # 39 더 착잡하다. 그 후, 가장 간단한 loop&quot it& &quot 태그일 경우, # 39 의 대가로 높은 비용 효율성 및 판독 할 수없는 해체될 코드를 만들어 내지 않았다.

대부분의 난독화 는 무의미한 것 같은데. 전체 소스 코드를 가지고도 it& 힘들어요; s # 39 는 일반적으로 분석할 수 있는 것은 헥 사용한다고 가정할 때 의견이 없습니다, 아니 의미 있는 이름을 다시 발생 때 지역 변수를 위한 - 어떤 경우. 에서 소스뿐만 바이트 코드). 그냥 장식 난독화 있는 중이다.

내가 생각하는 사람이 위험이 있다는 것을 크게 줄어드는 경향이 있고 특히 개발자들이 그들의 관리자에만 오버가 과장 소스 코드. # 39 의 소스 코드를 만들 수 있는 동안 안 좋은 게 좋은 역컴파일러 it& 작동하도록 및 비용을 절감할 수 있을 만큼 높은 연관됨 (뿐 아니라 법적 위험요소요) 가 이 외곽진입 거의 유용합니다. 나는 디버그로 닫힌 소스 vendors& # 39 만 디 컴파일 문제가. 제품 (교착 상태, 얼굴 DB 에서 abstraction layer). 하지만 우리는 이런 근본 문제를 바이트코드 실제로 난독화 생각한다 - 그것은 실제 설계 문제를 발견했다.

그건 정말 그때그들은 what 아래로 너회의 Java 코드를 어떻게, 누가 캐비닛용입니다 it& # 39 의 분산 고객의 있다. # 39, 우리는 아무 것도 없는 것처럼, ve 찾은 적이 없다고 don& 난독 we& # 39 은 특히 방정식입니다 좋은 일을 더 이상 it& # 39 의 규모 및 it 경향이 있다. 만약 누군가 이용할 수 있는 기회와 JAR 파일을 볼 수 있으며, 그 후 약 인사이드라면 반자들이 sniff there& # 39 의 훨씬 더 이상 수행할 수 있는 것을 우려해 rip off lionbridge 소스 코드.