2011-09-07 7 views
3

dex2jar와 JD-gui를 응용 프로그램의 dex 파일에 사용했지만 코드의 여러 부분에서 의미가 없으며 디 컴파일의 오류가있었습니다. Dalvik을 Java로 Decompiling하는 이유는 왜 그렇게 많은 불일치가 있습니까?

내가 덱스 파일을 backsmali 사용하는 경우 있지만, 코드가 정확했지만, 난 얼마나 큰 응용 프로그램의 작동을 이해하는 Smali보다 자바 코드를 읽을 선호하는 것입니다.

우선 Java 코드에서 왜 이렇게 많은 불일치가 있습니까? dex2jar 또는 JD-gui에 문제가 있습니까? 다른 대안들? .java 파일 .class 파일에서가는 경우에도

답변

4

디 컴파일은 일반적으로 덜 그때 완벽합니다. 컴파일이 .class 파일의 소스 파일에서 모든 정보를 나타내지 않는 단순한 사실에서 오는 한편

. 공백 및 주석은 .class 파일에 표시되지 않은 정보의 가장 명백한 예입니다. 지역 변수 이름도 종종 제외되며 컴파일 플래그에 따라 인수 이름조차도 손실 될 수 있습니다. 한편

디 컴파일러에 대한 시장은 매우 제한 될 것으로 보인다과 경쟁의 부족은 아마 뿐만 아니라 작동하지 않습니다 디 컴파일러로 연결됩니다. 예를 들어 Java 컴파일러가 새로 출시 될 때마다 새로운 패턴을 감지하고 적절한 Java 소스를 생성하기 위해 디 컴파일러와 동등한 업데이트가 필요한 새 코드가 생성 될 수 있습니다. 이러한 갱신 부족, 디 컴파일러는 하나 대신 또는이 같은 일을하지만, 인간에 의해 기록되지 얻을 결코 이상한 보이는 구조를 생성 실패하고 바이트 코드 분해를 인쇄 에 바인딩됩니다.

(Java Byte Code -> Dalvik Byte Code) 레벨을 추가하면 더 악화 될 수 있습니다. 당신이 더 나은 대답을하기 어렵다 뜻 불일치 어떤 종류의특정 예를 들어 줄 수없는 한

.