티스토리 뷰
안녕하세요!
지난번에는 지뢰찾기 게임을 리버싱 했었는데요, 오늘은 어렸을 때 많이 했던 피카츄배구를 분석하였습니다.
디버거 툴은 치트엔진을 사용하였고, 악용방지를 위해 구체적인 방법은 포스팅하지 않겠습니다^^
각각의 플레이어의 스코어를 제어하는 부분은 쉽게 할 수 있었습니다.
스코어는 4byte일 확률이 매우 높기 때문에 쉽게 접근할 수 있었고 초기 값과 변하는 값을 계속 확인할 수 있어서 금방 메모리 주소를 찾을 수 있었습니다.
총 점수 역시 5점, 10점, 15점으로 제한이 걸려있었고, 초기 값을 임의로 두고 값을 계속 변화시키면서 메모리 주소 값을 쉽게 찾을 수 있었습니다.
조금 시간이 걸린 부분은 게임 속도를 제어하는 부분이었습니다.
속도는 초기 값이 주어지지 않았고 저는 빨라지면 찾고자 하는 어떤 값이 커질 것이라는 고정관념 때문에 속도가 증가할 때마다 같이 증가하는 값의 메모리 주소를 찾으려고 시도했습니다.
해당하는 메모리 주소를 찾아서 그 주소가 가리키는 value를 변경해도 속도는 제어되지 않았습니다.
그래서 어셈블리어 코드로 열어보고 분석을 해봤더니 속도를 증가시키면 일정하게 감소하고 속도를 감소시키면 일정하게 증가하는 값을 갖는 메모리 주소를 발견했고, 그 값을 임의로 수정해보니 속도를 제어할 수 있게 되었습니다.
'Reversing' 카테고리의 다른 글
[리버싱] 어셈블리어 대표 명령어 8가지를 쉽게 배워보자 (0) | 2023.05.14 |
---|---|
[리버싱] 리버스 엔지니어링을 공부하는 이유는 무엇인가? (0) | 2019.01.07 |
[리버싱] 어셈블리어 난독화 프로그램을 만들어보자! [x86] (8) (0) | 2019.01.07 |
[리버싱] 지뢰찾기 게임을 리버싱 해보자! (1) | 2019.01.04 |
[리버싱] 어셈블리어 inc, cmp, test, dec, jcc, call, jmp 명령어를 알아보자! [x86] (7) (0) | 2019.01.03 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 치트엔진
- 우분투
- 어셈블러
- 리눅스
- reversing
- gdb
- linux
- jmp
- 터미널
- nasm
- ubuntu
- 명령어
- instruction
- vim
- mov
- 어셈블리어
- 사이버공격
- system call
- Sub
- 어셈블리
- 리눅스 시스템 콜
- 논리연산
- cmp
- 해킹
- 스택
- 리버싱
- 리버스 엔지니어링
- add
- call
- Push
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함