안드로이드는 재미따 ^ㅅ^





adb install 명령어를 이용하여 avd에 설치를 하려고 하면 INSTALL_FAILED_TEST_ONLY 오류가 뜬다.





간단하게 –t 옵션을 추가하여 테스트 apk를 설치할 수 있다.





apk를 설치 후 가장 먼저 만날 수 있는 화면이다.

id 입력을 받고 있다.





디컴파일러를 이용하여 apk를 디컴파일한 결과 4개의 클래스를 발견할 수 있다.





가장 먼저 id를 입력받는 MainActivity를 열어보았다.

id의 입력을 받고, id의 길이가 10 이상이며 26 이하이면 Main2Activity로 액티비티를 전환한다.

그리고 입력한 id를 “edittext”라는 이름으로 id를 넘겨준다.

id 값으로 ‘1234567890’을 입력했다.





Main2Activity에서는 password를 입력받는다.





마찬가지로 디컴파일한 코드를 살펴보았다.

a 함수에 id 값을 파라미터로 하여 돌려받은 값이 password와 같으면 Main3Activity로 전환한다.

그리고 id와 password를 각각 “id”, “pass”라는 이름으로 전달한다.





a 함수의 모습이다.

간단하게 이클립스를 이용하여 위 코드를 돌려보았다.

id를 ‘1234567890’으로 입력한 경우, 입력해야 하는 password는 ‘48485550545055536356’으로 나온다.





id와 password를 조건에 맞게 입력하여 Main3Activity가 등장했다.

serial key를 입력받고 있다.





k 함수에서 return한 값이 serial key로 입력한 값과 같을 경우 Main4Activity로 전환한다.





k 함수를 살펴보면 Random 클래스를 이용하여 무작위 String을 생성하고 있다.

이와 동일한 값을 맞추는 것은 불가능하다고 생각하여 다른 방법을 생각해보았다.





그 전에 Main4Activity를 살펴보면, “native-lib” 라이브러리에 있는 stringFromJNI 함수를 호출하여 text를 보여주고 있다.

flag라고 판단하여 Main4Activity로 전환해보기로 했다.







Main3Activity를 디컴파일하여 Main3Activity$2.smali 코드의 일부를 수정했다.

k 함수에서 return한 값이 serial key로 입력한 값과 다를 경우 Main4Activity로 전환하도록 수정했다.





수정한 apk를 바로 설치할 경우 서명 문제가 발생하므로 서명을 해주었다.





다시 adb install –t 명령어를 이용하여 apk를 설치해주었다.





Main4Activity에서 flag를 발견할 수 있었다.


W3_w3r3_Back_70_$3v3n7een!!!