DeObfuscating
요새 안드로이드 project 가 gradle 로 넘어간 덕분인지, obfuscate 한 code 들이 많이 보인다. 이런 code 들은 아무래도 분석하기가 어려워 진다.이런 녀석들에 대해 deobfuscating tool 들이 존재한다. 물론 이 녀석들이 정확히 obfuscated 이름을 원래대로 돌려주지는 못하지만, 아주 좋은 hint 를 주고 JDO 같은 경우는 원하는 이름으로 변화해 준다.
JDO
가장 대표적인 tool 로 JDO 가 있다. 간단하고, class 이름을 원하는 이름으로 바꿀 수 있는 기능을 제공한다. gui 가 그리 화려하지는 않지만 가장 필요한 기능을 가지고 있는 듯 하다.
그냥 모든 class 를 load 해서 Deobfuscate 버튼을 누르면, a, b 등으로 되어 있는 녀석 앞에 prefix 로 class, var 등을 붙여준다.
그냥 모든 class 를 load 해서 Deobfuscate 버튼을 누르면, a, b 등으로 되어 있는 녀석 앞에 prefix 로 class, var 등을 붙여준다.
Decompiler
이제 deobfuscated 된 class 를 가지고 기존의 decompiler 를 이용하면 된다. 개인적으로 jd-gui 를 많이 활용했는데, 더이상 update 가 안되는 느낌이었고, 간혹 decompile 이 안되는 녀석들이 있었는데, stackoverflow 에서 아래 decompiler 를 새로 찾았다.
위의 site 에서 procyon 을 사용하는 gui 몇개를 소개해 주고 있다. 대체로 나쁘지 않지만, 개인적으로 jd-gui 가 제일 편한 느낌이다.
- deathmarine/Luyten · GitHub : 간단하지만 viewer 수준이라 크게 많은 기능을 가지고 있지 않다. gui 는 jd-gui 와 제일 닮았다.
- Java Decompiler - The Free Java Decompiler for Everyone : navigation 이 좋다. jd-gui 와 비슷한 느낌이다.
- Konloch/bytecode-viewer · GitHub : 개인적으로는 제일 괜찮다. bytecode 도 같이 보여주며, 조금 번거롭긴 하지만, navigation 하는 것도 큰 무리는 없다.
개인적인 의견
JDO 를 사용하고, 그것을 jd-gui 로 열어서 보는 등의 방법을 사용하면 될 듯 하다.추가로, jd-gui 에서 src 를 저장할 수 있게 해주는데, 이녀석을 저장해서 IDE 에서 열어서 봐도 좋을 듯 하다.
댓글 없음:
댓글 쓰기