Android 안드로이드2014. 12. 28. 14:11


역코드난독화 

코드 난독화 

proguard 

역난독화 

dex2jar Jad 

자바디컴파일러 

classes.dex Dalvik 

DeObfuscate 

Obfuscate  

Obfuscation  

DeObfuscation

jd-gui

disassemble



앱을 만들고 업로드 전에 난독화 과정을 거친다.

이클립스와 안드로이드 스튜디오에 기본으로 포함된 proguard를 사용한다. 난독화 과정 obfuscation이 이상없이 실행되었는 가를 검증보다 눈으로 확인을 해보자.

구글플레이서비스나 여러 외부라이브러리를 포함하면 프로가드로 난독화를 거치며 release를 할 때 오류를 겪을 수 있다. 이런 면을 감안해 난독화 과정을 디어샘블을 해보는 과정을 거치며 내 코드가 어떤 상태로 산출되었는가를 확인해본다.



[ABC.apk로 이름 붙은 안드로이드 앱 설치파일을 역난독화]

dex2jar.bat 에 ABC.apk파일(또는 ABC.apk파일 내에 있는 ABC.dex파일) 을 끌어다 놓는다.

ABC_dex2jar.jar파일이 만들어진다.

jd-gui( http://jd.benow.ca/ )를 실행하고 ABC_dex2jar.jar을 열어본다.

내가 만든 코드와 다른 알 수 없는 코드가 죽 나왔으면 난독화 잘 이루어진 것이다.


---------------------

안드로이드 난독화 Obfuscation & 자바 소스 디컴파일러

http://programcode.tistory.com/140

Posted by 코드버무려
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 코드버무려