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 |
---|