APP/AOS

SmartApp L02

3년안에 내집 마련 2022. 12. 17. 13:11
반응형

해당 앱을 먼저 설치를 한다.

adb install "SmartApp L02.apk"

설치 시 다음과 같은 에러가 뜨면서 설치가 안된다.

해당 앱을 살펴보니 서명에 실패 했다는 뜻이었고 일단 우선 서명을 먼저 해야 할 것 같았다.

그래서 APK Studio를 켜서 디컴파일을 해주기로 했다.

디컴파일을 수행한 후 사인을 수행하려 하니 

그림처럼 sign/Export  기능이 활성화 되어 있지 않았다.

그럴때는 AndroidManifest.xml을 한번 눌러주고 빌드를 한다.

그렇게 되면

dist 디렉터리에 apk 파일이 생성되는데 이 앱을 클릭하고 Project 메뉴를 클릭하면 sign/export가 활성화 되어 있는 것을 확인 할 수 있고 

버튼을 클릭하게 되면

다음과 같이 화면이 나오는데 

  - Keystore Password

  - Alias

  - Alias Password

이 3가지를 임의의 값으로 설정해주고 sign을 해준다.

sign 시

"Process exited with code 0"이라는 메시지가 뜨면 정상적으로 sign 된거다.

이제 adb connect를 통해 nox 및 진단기기와 연결을 해준 후 

install을 실시하게 되면

FindKey2가 설치가 되는 것을 확인할 수 있다.

그 후 FindKey2를 실행시키면

이제서야 문제가 나오는 것을 확인할 수 있다.

문제를 해결하기 위해서 jadx를 통해 해당 앱을 한번 까봤다.

AndroidManifest.xml을 확인해 보니 

App이 실행될 때 "com.namdaeheyon.findkey2.MainActivity"가 가장 먼저 실행되는 것을 알 수 있다.

그러므로 MainActivity를 살펴보니

이러한 if문이 존재했고 해당 조건문에 들어가있는 함수들을 살펴보니

Volume 함수에는 33이라는 값을 리턴하고 

makeDate 함수는 현재 시간을 리턴하고 있다.

위에 함수와 비교 했을 때 실행시킬때 시점의 2013년 11월 2일 12시 35분 03초이어야 하고 volume 값이 53이어야 한다.

하지만 현 시점에서 두가지 조건을 모두 만족 시킬 수 없기 때문에 두가지 값이 일치하지 않을 때 keyString() 함수가 동작하도록 해야한다.

MainActivity의 smail 코드를 확인해보니

다음과 같았다.

우선 .line 29의 경우 

v0 = makedate() 함수를 동작시킨 값

v1 = "2013-11-02-12:35:03" 

그리고 v0 과 v1을 비교했을 때 일치하지 않으면 cond_0으로 간다.

현재 makedate() 함수의 경우 현재 실행시키는 시점의 값이 들어가 있으므로  v0 값과 v1 값이 같지 않다.

.line 30의 경우

v0 = Volume() 함수를 동작시킨 값

v1 = 0x35

16진수 0x35를 10진수로 바꾸면 53이다.

하지만 volume 0의 값은 33을 return 하기 때문에 두 값이 같지 않아 "cond 0"으로 이동하게 된다.

.line 34를 보면

다음과 같이 메소드를 종료하라고 나온다.

그러므로 .line 29와 .line30의 값이 일치하는 경우 cond_0으로 보내면 된다.

다음과 같이 변경 후 저장을 해준다.

그 후 "Build" -> "Sign/Export" -> "install"을 해주게 되면 새로운 FindKey2(이전에 설치했던 apk는 삭제해야함)가 설치되고 

확인해보면

 

키 값이 나오게 된다.

반응형