1회차

핵을 찾고 있는데 구버전 말고는 전부 팔고있었습니다.......(눙물)

그래서 일단 시작이라도 끊기위해 탈옥우회를 먼저 올려볼까합니다.

우선 해당 게임 실행 시 로그인까지는 실행 가능하지만 이후 탈옥을 감지하여 자동 종료되었습니다.

어떤 게임인지는 언급하지 않을 생각입니다.

 

탈옥 우회

 

CrackerXI를 활용해 추출한 게임의 IPA파일입니다.

경로 : private/var/containers/Bundle/Application/[앱 이름]/ [앱이름].app

 

복호화하여 추출한 앱의 Binary 파일을 분석하겠습니다.

(보호를 위해 이름은 다 바꾸었습니다.)

 

binary 파일을 IDA로 열고 HxD로 변조할 준비를 해주었습니다.

 

우선 IDA에서 탈옥을 탐지하는 부분을 찾아보도록 하겠습니다.

jail이 포함된 method를 검색하면 위와 같이 확인할 수 있습니다.

CSDevice의 isJailbroken을 확인해보면 탈옥 검증 과정을 확인할 수 있는데 CBZ로 나누어 넘기는 것을 알 수 있습니다.

이 때 CBZ를 반대로 작동하도록 바꾸어주면 탈옥을 우회할 수 있습니다.

 

binary를 패치하여 진행할 수 있지만 HxD를 통해 진행해보도록 하겠습니다.(전 손에 익어서 그런지 이게 편합니다.)

첫번째 CBZ를 나타내는 HEX값을 확인하여 HxD에서 찾아줍니다.

한줄을 복사해서 HxD에서 찾아주면 대응해는 HEX값을 찾을 수 있습니다.

해당하는 HEX값을 찾은 후 CBZ -> TBZ로 바꾸어 저장해줍니다.

같은 방식으로 CBZ를 TBZ로 바꾸어주었습니다.

같은 방식으로 CBNZ->TBNZ로 바꾸어줍니다.

위의 method는 탈옥된 단말기를 확인하는 부분으로 탈옥단말 확인 시에 결정값이 반대로 작용하도록 어샘블리 분기 명령어를 반대로 주어 작동하도록 해준것입니다.

 

같은 방식으로 botdetector method도 바꾸어 줍니다.

전과 다른 부분은 어샘블리 명령어인데 B.NE를 B.EQ로 바꾸어 줍니다.

이렇게 만들어진 binary를 기존 어플리케이션에 주입해주어야 하는데 이때 Sign값이 맞지 않으면 앱이 실행되지 않습니다.

 

이것을 우회하기 위해서 바이너리를 어플리케이션에 넣기 전에 ldid 를 통해 sign값을 따로 떠줍니다.

위 명령어를 통해 rokefoke.xml에 원래의 sign값을 떠둡니다.

private/var/containers/Bundle/Application/[앱 이름]/ [앱이름].app 경로에 binary 값을 변조한 값으로 넣어줍니다.

위의 파일을 넣어준 후 sign값을 이식시켜줍니다.

처음 실행시킨 명령어는 실행권한을 주입한 binary에 부여하는 명령어입니다.

이후 주입한 binary에 sign값을 이식시켜 주는 명령어를 실행하여 주면 앱 binary변조가 끝납니다.

 

이렇게 binary 변조를 마친 후 앱을 실행하면 탈옥된 환경에서도 정상적으로 실행되는 것을 확인할 수 있습니다.

 

 

TO Be Continued............

'Game' 카테고리의 다른 글

Starting Point  (0) 2022.05.26

Bullet

 보안에 입문하며 처음으로 접한 프로젝트는 국방 관련 프로젝트였습니다. 이 후 여러 종류의 프로젝트를 경험하며 느낀 것은 인증 우회, 관리자 권한 탈취 등과 같은 취약점 들을 중요시 여기는 모습들이었습니다. 물론 위의 취약점들이 중요하지 않다고 생각하는 것은 아니지만 보안을 구성하고자 하는 회사의 목적을 중시하기보다는 개인적인 생각으로 '보안이 전부 중요하지 덜 중요하고 더 중요한 부분이 무엇이 있겠어'였습니다. 그렇게 다양한 프로젝트를 경험하며 주로 맡게 된 프로젝트는 금융과 관련된 프로젝트들이 많아져 갔습니다. 경험을 할수록 금융과 관련된 분야에서 중시하는 취약점들을 더욱 중요하다 여기게 되었습니다. 그러던 중 새롭게 접하게 된 기회에서 회사에 목적성에 따라 중요하게 여기는 가치가 달라질 수 있다는 것을 알게 되었고 금융과 다른 분야에서 중요하게 여기는 가치가 무엇일지 고민하게 되었습니다. 그렇게 시작된 고민에서 저에게 익숙하지만 잘 알지 못하고 있는 것에 대해 찾아보고 있었습니다. 제가 가장 좋아하고 지속적으로 경험한 것은 무엇일까? 게임! 어렸을 적부터 다양한 형태의 게임을 접하였지만 당연하게 늘 하던 것이라 잘 모르고 있었던 것이죠. 여러 게임들을 찾아보며 보안과 연결 지을 부분을 고민하다가 게임 보안에 대해 Game 파트를 포스팅해보기로 생각하게 되었습니다. 

 RPG, FPS, RTS 등등... 많은 게임 장르들에서 게임 자체적인 버그를 제외하고 플레이어와 회사가 가장 중요하게 여기는 것은 무엇일까 생각을 하게 되었습니다. (물론 버그 패치도 굉장히 중요하단 것을 알고 있습니다.) 한창 잘나가던 게임이 한순간에 몰락하거나 지속적으로 즐기는 유저에게 가장 문제가 되는 부분은 역시 "핵쟁이"라고 생각했습니다. 대회에서 맵핵을 쓰는 해외 프로게이머나 에임 핵을 사용하는 게이머들처럼 게임의 재미를 저해하는 요소들이 굉장히 많았습니다. 이렇게 핵이 난무하고 패치가 더딘 게임은 플레이어들이 점점 흥미를 잃어가고 결국 인기가 사그라드는 수순을 밟는 경우가 많았습니다. 이 생각을 하며 핵을 패치하고 찾는 것도 중요하지만 어떤 방법으로 핵이 구동하는 방식도 중요하다고 생각했습니다. 핵이 어떻게 구동되는지 알아야 같은 핵을 동작하지 못하도록 할 수 있고 플레이어로 하여금 쾌적한 게임 환경을 제공할 수 있다고 생각되었습니다. 아직 많이 부족하지만 하니씩 포스팅하며 분석하고 배워가고 싶어서 이렇게 시작해볼까 합니다. 

 

이제 서론은 마치고 하나씩 포스팅해보겠습니다.

 

 

To Be Continued.............................

'Game' 카테고리의 다른 글

bonfire Lit -- 1  (0) 2022.05.30

+ Recent posts