Android 어플 크래킹

2012.11.12 17:11 from Android

1. 소스 보기


1-1. classes.dex

 apk 파일을 압축을 풀어서 classes.dex파일을 얻는다.



1-2. classes_dex2jar.jar

dex2jar를 이용하여 classes.dex를 jar파일로 바꾼다.

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




1-3. 소스를 본다.

http://java.decompiler.free.fr/?q=jdgui 를 이용하면 거의 원본의 소스를 볼 수 있다.



1-4. 수정할 곳 찾기

수정할 곳을 찾는다.



보통 결제크렉은 이부분을 본다.


ps. 위에서 보여주는 예는 구글에서 제공하는 샘플 코드랑 거의 비슷하다.

구글에서는 이런 크래킹(리버스)를 방지하기위해서는 샘플코드를 변형할것을 강력히 권장하고 있다.


ps2. 또한 구글에선 inapp결제에 의해 생성되는 콘텐츠를 어플에 가지고 있지 말고, 따로 서버에 두기를 강력히 권장하고 있다.


 이걸 이용해서 다시 컴파일 해볼려고 해봤는데 잘 안된다. 디컴파일이 완전하지도 않고 이것저것 귀찮다.

그래서 그냥 차라리 아래의 apk manager를 이용하는게 더 편하다.




2. 수정하기


수정할 곳을 찾았으면 수정을 해보자.


2-1. Apk Manager 5.0.3


Apk_Manager_5.0.3.zip

이걸로 풀자.(9. Decompile)


그럼 smail 폴더에 자바 중간파일인 smali가 생성된다.


이렇게 하나의 클래스가 여러개의 파일로 나눠질 수도 있다.

파고들자!


텍스트파일이라서 메모장으로도 열린다.


이게 자바의 어셈블러 라고 볼 수도 있는데, 원래도 그리 어려운건 아니지만 이미 소스를 보면서 할 수 있기 때문에 쉽다!


smali이 파일은 Dalvik 위에서 도는 assem으로 되있다.

이 부분은 http://pallergabor.uw.hu/androidblog/dalvik_opcodes.html 여기 살펴보면 된다.



수정후 다시 11.컴파일- 12.sign-하면 signed apk가 생성되는데 설치하면 끝!!!







저작자 표시 비영리 변경 금지
신고
Posted by Leo 리오 트랙백 1 : 댓글 21