1

.jar 파일 (기본적으로 .class 개의 파일 그룹)을 리버스 엔지니어링하려고합니다. Java deobfuscator는 변수 이름 바꾸기를 지원합니까?

  1. 변수, 메소드 및 클래스의 일부

    가 제대로 표시되지 않을 수 유니 코드 문자로 지정됩니다 그러나이 어려움이있다. 이것은 소스 편집을 매우 불편하게 만듭니다.

  2. 일부 클래스는 Java 키워드 (예 : if)으로 이름이 지정됩니다. 따라서 Java 컴파일러는 리버스 엔지니어링 된 소스 파일을 다시 컴파일 할 때 불평 할 것입니다.

이러한 어려움을 극복 할 수있는 Java deobfuscator가 있습니까?

+0

자바에서 디 컴파일러의 상태는 슬픈 이야기입니다. 나는 심지어 그것의 위에 obfuscators를 해체하려고 노력하는 de-compilers를 묻는 것 같네요 ... 그걸로 행운을 빈다. 게다가 : 당신의 질문은 분명히 주제 밖입니다. 오프 사이트 리소스에 대한 권장 사항을 요청하고 있습니다. – GhostCat

+0

@GhostCat 디 컴파일러를 요구하지 않습니다. JAR 파일에서 변수 이름을 변경하는 방법을 찾고 있습니다. 변수 이름 변경을 지원하는 작업중인 Java deobfuscator가 분명히이 문제를 해결하는 가장 좋은 방법입니다. 디 컴파일러에 해당 기능이있는 경우 해결책이기는하지만 질문 자체는 아닙니다. 그런데 모든 질문은 추천 질문입니다. 내 문제를 해결하기위한 답을 찾고 있지만 도구를 비교하지는 않습니다. 이것은 매우 주관적으로 보이지 않습니다. – Cyker

+0

jd-gui를 사용해 보셨습니까? –

답변

3

Java 식별자의 이름을 바꿀 수있는 몇 가지 도구가 있습니다. 예를 들어, 모든 파일의 이름을 바꾸려면 Proguard을 실행하면됩니다.

내가 말했듯이 나는 당신의 접근 방식을 재고 할 것을 제안 할 것이다. Java 컴파일 및 디 컴파일은 모두 손실 프로세스입니다. 디 컴파일은 리버스 엔지니어링에 유용하지만 일반적으로 디 컴파일 된 코드를 다시 컴파일 할 수는 없습니다. 이전에 난독 화 되었으면 잊어 버릴 수도 있습니다.

난독 화 코드를 수정하는 가장 좋은 방법은 Krakatau assembler and disassembler을 사용하는 것입니다. Krakatau 어셈블리는 바이트 코드로 또는 바이트 코드로 가역적으로 변환 될 수 있습니다. 즉, 코드가 어설프지 않아도 임의의 클래스를 편집 할 수 있습니다. 유일한 단점은 Java 바이트 코드에 익숙해야한다는 것입니다.

+0

이 답변은 좋아 보인다. 사실 저는 방금 내 응용 프로그램과 함께 작동하는 Proguard 구성을 해결했습니다. 이름을 그대로 유지해야하는 공용 변수가 아직 남아 있더라도 결과는 훨씬 더 멋지게 보입니다. 또한 Krakatau를 지적 해 주셔서 감사합니다. 사실 나는 안드로이드에서 일하고 있는데 거기에 비슷한 smali/baksmali가 있습니다. 나는 일이 마침내 이루어질지를보기 위해 계속 노력할 것입니다. – Cyker

0

Cuchaz의 은 로컬 변수의 이름 바꾸기를 지원합니다. 더 이상 갱신되지 않고 더 이상 갱신되지 않는 BCEL에서 더 이상 갱신되고 실행되지 않습니다. BCEL이 처리 할 수없는 것을 디 컴파일하지 않는 한 제대로 작동합니다.