2012-08-27 1 views
4

dex2jar 및 JD-GUI와 같은 도구를 사용하여 APK에서 Java 클래스를 가져 왔습니다. 자바 바이트 코드는 Java 클래스로 변환 될 수 있다는 것을 알고 있기 때문에 다른 사람들로부터 보안을 유지하기 위해 ProGuard와 같은 일부 도구를 통해 최적화되고 난독 화됩니다. 그래서 내가 가진 코드는 난독 화 된 코드이며 오류없이 읽을 수 있고 이해할 수 있도록 만들어서 내 개인 용도로만 수정할 수 있도록하고 싶습니다. (개인적인 용도로만 저작권을 침해하는 것이 아닙니다.) 따라서 조언, 도구, 자료로 인해 난독 화 코드를 개발자가 작성한 코드에 훨씬 가깝게 만들거나 실수를 없애고 이해할 수 있도록 도와줌으로써 많은 도움이 될 것입니다. 현재 나의 초점은 내가 내 자신의 프로젝트를 리버스 엔지니어링을 시도 할 때처럼 ProGuard에서에서 사용하는 난독 기술을 반전에 관한 것을 발견으로 생성되는 R 파일을 통해 일치시켜안드로이드 리버스 엔지니어링을 통해 난독 화 된 자바 코드를 읽는 방법

  • int 자원 값이 ID를 변경할 수 있습니다 리버스 엔지니어링.
  • if/else 대부분이 while(true) 및 약간 continues 및 breaks로 변환된다.
  • 내부 클래스는 대부분 제대로 매우 도움이 될 것입니다 반전하는 방법을 설명 할 수있는 위에서 언급 한 방법을 별도의 파일 그래서

, 다른 기술 돕는 물질에 헤어졌다.

답변

6

난독 화 코드를 빌드 가능한 프로젝트로 리팩터링하는 마법의 도구는 없습니다. 대부분의 경우 APK를 디 컴파일하고 난독 화하지 않아 깨끗하고 유지 보수가 쉬운 코드가 될 수 없습니다. 이것은 좋은 일입니다.

dex2jar 및 jd-gui보다 우수한 도구가 있습니다. 그 중 하나는 apk-deguard이며 난독 처리 과정을 역전한다고합니다. 자신에 대한 페이지에서 :

DeGuard

DeGuard (http://www.apk-deguard.com)는 소프트웨어 신뢰성 연구소, ETH 취리히, 개발 같은 그룹에서 개발 한 안드로이드 APK가의 통계 명확화를위한 새로운 시스템입니다 널리 사용되는 JSNice 시스템. DeGuard는 JSNice와 마찬가지로 수천 개의 오픈 소스 프로그램에서 학습 한 강력한 확률 그래픽 모델을 기반으로합니다. DeGuard는 이러한 모델을 사용하여 메서드 및 클래스 이름뿐만 아니라 타사 라이브러리를 비롯하여 Android APK의 중요한 정보 을 복구합니다. DeGuard는 Android 악성 코드의 민감한 데이터를 처리하는 문자열 디코더 및 클래스 을 공개 할 수 있습니다.

dex2jar 대신 Google이 소유 한 Enjarify을 사용해야합니다.또한 apktool은 dex2jar 및 enjarify에서 처리하지 않는 APK 리소스를 디 컴파일하는 데 적합합니다.

다른 도구 jadx, procyon, fernflower, show-java, smali/baksmali을 포함한다.


리팩토링을하려면 좋은 IDE가 필요합니다. JEB은 리팩터링을위한 좋은 도구처럼 보입니다. 이것은 안드로이드 보안 연구자들이 주로 사용하는 유료 툴입니다.

2

이 도움이 될 것입니다 DeObfuscator

+0

나는이 파일을 선택하고 언제 새로운 클래스 파일을 생성하지 않습니다 deobfuscate를 누르면이 클래스 파일을 열면 JD-GUI에서 자바 소스를 볼 때 변경 사항이 동일한 클래스 파일에 쓰여 있다고 가정합니다. 이전과 같은 단일 소스 코드 변경과 동일한 소스 코드 –

1

리버스 엔지니어링, 특히 난독 화 코드로, 주로 마구잡이, (내가 미묘한 예술을 말할 것이다) 어려운 작업이다, 당신이 할 수있는 것은 몇 가지 특수 기능에 집중하는 것입니다, 꽤 명확하고 거기에서 시작하여 클래스 이름을 변경하고 리팩터링 할 수 있습니다. 또한 좋은 IDE가 도움이 될 수 있습니다 (개인 권장 사항 : NetBeans).