Notice
Recent Posts
Recent Comments
Link
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

IT노예의 코드일기

[코드몽키]외국인 해커가 작업한 왕국건설 스토리를 분석해보았다 본문

IT

[코드몽키]외국인 해커가 작업한 왕국건설 스토리를 분석해보았다

신사몽키 2020. 2. 26. 09:51


많은분들이 방사능의나라 일본겜 왕국건설스토리 세이브연동가능하게 만들어달라는 요청이있어 한번 열어보았습니다

일단 외국인이 만든 모드를 알아보니 다이아캐쉬 무제한 사용 버전이 존재하더군요

하지만 버전이 업데이트 될때마다 기존의 세이브데이터연동이 되지않아 날아간다는 이야기를 들어보니 아마 해외버전은 작업자들마다 서명이 다르니 생기는 문제가 아닐까 싶습니다

일단 외국인 노동자가 어느부분을 수정했나 비교분석을 위해 코드를 까봐야겠죠

먼저 코드를 비교하기위해 구글 플레이스토어에서 순정 ‘왕국건설스토리’ APK를 뽑아내, 외국인노동자의 손길이 닿은 mod apk  

이렇게 두개의 APK를 준비합니다

코드를 비교해보니

외국인 해커가 총 다섯군데를 손본것이 확인되네요

각각

수정된 위치1 – 오프셋 5C625C  

F0 4D 2D E9 18 B0 8D E2 – 원본

FF 04 E0 E3 1E FF 2F E1 – 수정된 코드 

MVN R0, #0xFF000000

BX LR

어떤 수치를 R0레지스터에 넣고 리턴시킨걸보니 오프셋 5C625C 이부분이 게임캐쉬(다이아몬드)관련 코드가 아닐까싶네요

수정된 위치2 -오프셋 D815AC

F0 4B 2D E9 18 B0 8D E2  – 원본

00 00 A0 E3 1E FF 2F E1  – 모드 (0으로 리턴=false)

뭔진 모르지만 D815AC 여기는 그냥 False처리 혹은 0으로 리턴시키네요

수정된 위치3 – 오프셋 D81790

F0 4B 2D E9 18 B0 8D E2 – 원본

00 00 A0 E3 1E FF 2F E1  – 모드 (0으로 리턴=false)

여기도 뭔진 모르지만 D815AC 여기는 그냥 False처리 혹은 0으로 리턴시키는것을 확인 

수정된위치4 – 오프셋 81C50

F0 4B 2D E9 18 B0 8D E2 – 원본코드

00 00 A0 E3 1E FF 2F E1 – 수정된코드

여기도 뭔진 모르지만 D815AC 여기는 그냥 False처리 혹은 0으로 리턴시키는것을 확인 

수정된위치5 – 오프셋 D8B774 

70 4C 2D E9  – 순정코드

1E FF 2F E1  -수정된코드 – 뭔진 모르지만 이부분을 실행 안하고 BX LR로 바로 리턴시켜버림

이제 저 오프셋이 가르키는곳이 어떤 메소드들인지 덤프를 통해 IDA로 해당 오프셋의 메소드명을 확인해보니

5C625C – CoinManager클래스의 GetCoin() 메소드 – 어마어마한 수치를 입력하고 리턴한게 게임캐쉬인것을 확인

D815AC – KairoPlugin클래스의 LicenseCheckForSugo() – 라이센스체크Sugo 관련 메소드였네요 False로 리턴시켰으니 체크를 무력화시킨듯 

D81790 – KairoPlugin클래스의 LicenseCheckForAu() – 라이센스체크Au 관련 메소드였네요 False로 리턴시켰으니 체크를 무력화시킨듯 

D81C50 – KairoPlugin클래스의 LicenseCheck() – 라이센스체크 관련 메소드였네요 False로 리턴시켰으니 체크를 무력화시킨듯 

D8B774 – LicenseChecker클래스의 DoCheck()메소드 – 라이센스첵 관련 클래스에서 체크실행메소드인듯한데 바로 리턴시켰으니 실행이 되지않을듯하네요

이렇게 1개의 캐쉬조작코드와 4개의 라이센스 체크 무력화 코드로 이루어진 모드였습니다

smali쪽에서는 어떤장난을 쳤는지 확인해보니

androidmanifest.xml에서 

hookpms가 들어있는것을 확인

서명값 체크까지… 크.. 지독한 새끼들이네

일단 이정도 파악을 마치고 순정 APK에 위의 작업을 적용해 사인작업까지 하니 실행이 안되네요 ..ㄷㄷ

(뭔가 아직 놓친게 더있단말인가!)

몇시간 더 삽질을 하다가 도저히 못찾겠다 에잇!

앞으로 순정설치까지 한걸음인데..사람 돌아버리게만드는 카이로소프트 +_+

하지만 현재까지 분석된코드들로 루팅기기나 LD플레이어에서 정상적으로 실행되는것을 확인.

루팅환경에서는 업데이트로인한 버전변경에도 세이브파일이 연동되게는 일단은 성공!

절반짜리 성공이라 아쉽긴하지만..



Comments