Android 안드로이드2014. 11. 21. 07:50


역코드난독화 

코드 난독화 

proguard 

역난독화 

dex2jar Jad 

자바디컴파일러 

classes.dex Dalvik 

DeObfuscate 

Obfuscate  

Obfuscation  

DeObfuscation



안드로이드 앱을 작성하고 업로드하면서 이 번에 코드 난독화에 대하여 생각해보았다.


3개월 이상 시간이 흘렀다. 개괄적인 형태로 살이 붙지 않는 앱이라 넓게 내놓기에는 다듬어야 할 부분이 많지만 기본은 다 갖춘 앱이다. 지금까지는 코드 난독화가 불필요했지만 이제는 심도있게 생각해볼 때 이다. 그래서 만들어 놓은 apk파일을 역코드난독화 했더니 일부 에러를 빼고는 그대로 나왔다. 역난독화를 처음 시도해보는 것이라 에러가 나왔으나 경험자가 했으면 100% 나왔으리. 이클립스에 안드로이드 개발툴 ADT가 제공하는기본적인 proguard도 적용하지 않았다. 지금부터는 적용하고 업하는 쪽으로 정책을 잡았다.


만들어놓은 코드를 난독화 해제하는 과정이다. 다음에 반복할 일을 간단히 정리하였다.



dex2jar 

: Dalvik에서 작동하는 classes.dex 파일을 Class압축파일을 포함한 jar 파일로 변환

: https://code.google.com/p/dex2jar/downloads/list 



Jad : 자바디컴파일러 

http://varaneckas.com/jad/



디컴파일할 apk파일의 확장자를 zip으로 바꾸고 압축해제해서 classes.dex 파일을 얻는다.



콘솔 창에 d2j-dex2jar.bat classes.dex를 실행

또는 

콘솔 창에 dex2jar.bat classes.dex를 실행

같은 폴더에 classes-dex2jar.jar 파일이 생성된다.

# d2j-dex2jar.bat과 dex2jar.bat의 결과는 비슷하다. 사용해보고 에러가 적은 쪽을 택하자.




class파일을 사람이 읽고 이해할 수 있는 java 텍스트 파일로 만들자.

콘솔 창에 jad -o -sjava MainActivity.class를 실행



MainActivity.java가 생긴다. 텍스트 편집기로 열어서 읽고 편집할 수 있다.

Posted by 코드버무려