0x02 Reverse Engineer(126)
-
피카츄 리버싱 5부...
Day 4 이번에는 게임 무한 실행에 대한 공부를 진행한다. 게임이 무한 실행되기 위한 조건은 !! 그것은 바로바로.... 공이 떨어졌을 때 체크하는 것을 우회 하는 것 무한 실행에 대해 조사하다가 다른것도 알게 되었다.1p의 피카츄가 스파이크? 를 하지 않게 하는 루틴을 찾아 내었다. jnz의 주소를 jle에 넣되 less 의 반대인 greater를 적어두자. 이 조작까지 하게 되면, 2p진영은 공이 땅에 닿았는지 체킹을 하지 않게 된다. 잠깐 영상을 감상하자. 그렇다면... 1p 진영도 무적이 되게 해서 실컷 놀기 위해서는 어떻게 해야할까? 1p가 ...너무너무 잘해서 위에서 조작 성공한 스파이크 하는 1p를 없애고 테스트를 진행함. 끝~~!!
2017.06.05 -
피카츄 리버싱 4부...
Day 3 오늘의 목적: 게임의 최대 점수를 조작. 지난 시간에, 게임의 속도를 조작해보았다. 이번에는 각 메뉴의 5포인트 10포인트 15포인트를 조작해본다. OllyDdg와 IDA라는 프로그램을 동시에 사용하였다. 1) OllyDdg에 피카츄배구를 Attach시키고, 프로그램을 실행시켜 프로세스 동작(Running)상태로 만들어 둔다. 2) 메뉴의 옵션을 클릭해본다.의심 되는 루틴이 보인다. 3) 아무거나 접근해본다. 3가지의 비교가 나오는데 누가봐도 스코어다....^^ 4) 값 수정 전에 실행해보자. 5) 5점이 되면 끝난다. 이제 이 값을 1로 조작을 하고, 기타 다른 점수 또한 10점,15점에서 임의값으로 조작을 진행한다. 6) 이제 5점 위치는 1점으로 변경되었으므로 점수 1점만 나도 게임은 종..
2017.06.05 -
피카츄 리버싱 3부...
Day 2 이번에 해볼 작업은 피카츄 배구의 속력을 조절하는 작업을 진행하려고 한다. 1) 바이너리 실행 후 어느 곳에 브레이크 포인트를 걸어야 하는지 파악 2) All intermodular calls를 통해 살펴보니 다음과 같은 API함수 발견 3) GetMenu 원형 4) GetMenu 전부 BP 작업 진행 5) GetMenu BP 건 후 게임 실행하고 해당 메뉴 클릭 주소 004017AA에서 프로세스가 Pause상태 진입하게 되었다. 6) 구체적으로 분석하기 위해 해당 함수 종료 후 리턴되는 다른 함수의 주소를 알아보았다. 주소 40156D로 리턴되는 것을 확인하였다. 7) 주소 40156D BP 004017A0 함수 호출 하는 부분이 노출되어 있다. 8) 의심 되는 값 발견 9) 다른 버튼을 눌..
2017.06.05 -
피카츄 리버싱 2부...
Day 1 피카츄 배구 CreateWindows 문구 패치 목적: 헥스값 단순 조작 결과: 과정: 1) 바이너리 무작정 실행 문자열을 확인하면 막 이상한 한글로 적혀있는 것을 볼 수 있다. 문자열 조작한다. IDA를 통해서도 확인 가능하다. 저장하면 끝!!
2017.06.05 -
피카츄 리버싱 1부...
-끄적 끄적-오늘은 피카츄 배구 바이너리를 우연히 구해서 리버싱을 진행해보았다. 많은 사람들이 피카츄 배구를 즐겨보았을것이다. 나 또한, 초등학생 시절 이 게임하고 시간을 보낸 추억이 생각이 난다. 어린 시절에는 감히 조작이 될 것이라는 생각을 못했었는데, 리버스 엔지니어링이라는 기술을 접한 후 시도 해보고 싶어서 시도를 하게 되었다. 실습 내용은 다음과 같다. 순서 내용 1 CreateWindows 문구 패치 2 피카츄배구 속도 조절 3 피카츄배구 최대 점수 조절 및 2P만 점수획득 4피카츄배구 무한 게임 5피카츄배구 리소스 수정 준비물은 다음과 같다. OllyDdg ver1.0, Cheat Engine, Resource Hacker, IDA ver6.8
2017.06.04 -
KISA 1번 리버싱 문제
으흐흐.. 약 5시간 만에 푼 바이너리이다. 역시 리버싱은 술 한잔 걸치고 풀어야 제맛인 것 같다. 지금부터 Writeup 작성을 할 것이다. 바이너리를 무작정 실행해보면 신기한 화면이 툭하고 튀어나온다. [그림 1. 바이너리 실행] 로딩 바가 진행되다 보면, 다음과 같은 화면이 나온다. 노래도 나온다. 근데 밤에 들으면 좀 무서운 노래인 것 같다. (처음엔 그랬따...) [그림 2. 바이너리 실행] 척 보면 척 !! KeyGen이 필요한 문제라고 생각된다. 게씽을 해보면 시리얼 값은 숫자 10개로만 이루어져 있어야 한다. 우측 하단에 ip checking 하는것이 있는데 분석결과 이건 아무 필요없는 기능이었다. 잘못된 시리얼 값을 입력해보자. 5숫자 초과 해보았다. 다음과 같은 에러 메시지박스를 띄워준..
2017.05.31