Reversing

    [게임 분석] 아이작 #2 - 캐릭터 능력치(공격력, 이동속도 등)

    이전 글에서 아이작 게임의 기본 구성에 대한 어셈블리어 동작 분석과 변조를 진행했다. 이번 게시물에서는 캐릭터 능력치에 대해 분석과 변조를 진행할 것이다. 1. 기본 구성(체력, 폭탄, 돈, 열쇠) 핵 만들기 [게임 분석] 아이작 #1 - 기본 구성(체력, 폭탄, 돈, 열쇠) 어렸을 때 즐겨했던 아이작 게임을 분석해보기로 했다. 지뢰찾기 게임보다 순간순간 변하는 값도 많고, 게임 실행마다 메모리 주소가 바뀌는 ASLR 보호기법이 걸려있기 때문에 공부적으로 도움 she11.tistory.com 2. 캐릭터 능력치(공격력, 공격속도, 이동속도 등) 핵 만들기 분석 환경 게임/버전 : Binding OfIsaac Rebirth 1.0 분석 도구 : Cheat Engine 7.4 분석 캐릭터 능력치 게임을 진행..

    [게임 분석] 아이작 #1 - 기본 구성(체력, 폭탄, 돈, 열쇠)

    어렸을 때 즐겨했던 아이작 게임을 분석해보기로 했다. 지뢰찾기 게임보다 순간순간 변하는 값도 많고, 게임 실행마다 메모리 주소가 바뀌는 ASLR 보호기법이 걸려있기 때문에 공부적으로 도움이 될 것 같았다. 원활한 실습을 위해 구버전의 아이작 게임을 타겟으로 선정하고, 치트 엔진을 이용해서 트리거 지점과 메모리 변조를 진행했다. 1. 기본 구성(체력, 폭탄, 돈, 열쇠) 핵 만들기 2. 캐릭터 능력치(공격력, 공격속도, 이동속도 등) 핵 만들기 [게임 분석] 아이작 #2 - 캐릭터 능력치(공격력, 이동속도 등) 이전 글에서 아이작 게임의 기본 구성에 대한 어셈블리어 동작 분석과 변조를 진행했다. 이번 게시물에서는 캐릭터 능력치에 대해 분석과 변조를 진행할 것이다. 1. 기본 구성(체력, 폭탄, 돈, 열 s..

    [게임 분석] 지뢰찾기 #2 - 치트엔진 핵 토글화

    이전 분석 게시물 [게임 분석] 지뢰찾기 #1 - 분석 및 코드 패치 she11.tistory.com 이 글에서는 앞서 작성한 지뢰 찾기 게임 게시글과는 다른 방법으로 핵 프로그램을 만들었다. 지뢰 테이블 세팅 함수(sub_ 100367A) 게임 시작 시 지뢰를 세팅해주는 함수이다. 앞 글에서 분석한 내용과 같이, 지뢰 테이블 세팅 시 8F는 숨겨진 지뢰이고, 8A는 표시된 지뢰이다. ‘or byte ptr ds:[eax], 80’ 를 ‘xor byte ptr ds:[eax], 85’로 패치하여 결과값을 8A로 만든다. 그러면 지뢰 테이블에 지뢰가 8A로 설정되고, 첫 이미지가 출력되면 지뢰를 출력한다. Lua Script 코드 패치 스크립트 [ENABLE] //code patch : 0x10036fb ..

    [게임 분석] 지뢰찾기 #1 - 분석 및 코드 패치

    추억의 게임인 지뢰 찾기 게임을 분석해봤다. 분석 도구는 IDA를 사용했으며, 분석 내용을 토대로 코드 패치를 하여 게임 흐름까지 바꿔보았다. 이 주제의 글은 총 2개로 나누어서 작성하고자 한다. 각 글의 대한 간략한 내용은 다음과 같다. #1. 지뢰 찾기 분석 + 도움말 함수 코드 패치로 지뢰를 나타내주는 함수 호출 #2. 게임 실행 함수 시, 이미지를 나타내주는 연산 값을 패치하여 지뢰 표시 [게임 분석] 지뢰찾기 #2 - 치트엔진 핵 토글화 she11.tistory.com 먼저, 해당 게임은 메모리가 고정적이여서 분석과 구현이 어렵지 않았다. 게임 테이블(지뢰) 세팅 지뢰 세팅 함수(sub_01002F11) 게임이 시작되고, 지뢰를 설정해주는 함수이다. 반복문을 돌면서, 난이도에 맞는 지뢰의 개수만..

    [리버싱] IDA 타입 캐스팅 및 구조체 적용

    IDA 도구에 대한 사용 방법과, 디컴파일된 코드를 여러 기능을 통해 원본 코드와 비슷한 코드로 복구하는 실습을 진행했다. #include #include #pragma warning(disable:4996) struct Human { char name[50]; int age; char gender; char email[50]; }; int main(int argc, char** argv) { Human human; strcpy(human.name, "tonix"); human.age = 24; human.gender = 'M'; sprintf(human.email, "%s@gmail.com", "tonix0114"); printf("%s %d %c %s", human.name, human.age, hu..

    abex' crackme #1 풀이

    먼저, exe파일을 실행하면 오른쪽 창과 같은 메시지 박스를 띄운다.하드디스크를 CD-Rom으로 인식하라고 한다. Ok를 클릭. CD-ROM이 아니라고 뜬다. 리버싱을 통해 어떤 로직으로 검증하는지 확인해보자. x86dbg에 exe 파일을 올렸다. EP(Entry Point)부터 코드를 실행하기 위해 System Breakpoint를 체크해제했다. 이후, ctrl+F2로 프로그램을 재실행한다. 브레이크 포인트에 걸렸고, 현재 EP에 머무르고 있다. 간단한 코드기 때문에 어셈블리어를 알면 금방 이해할 수 있다.1. 빨간색 박스에서 cmp eax, esi하고, 동일하다면 0x40103d로 jmp한다.2. 0x40103d부터 문제를 해결하면 뜨는 메시지 박스에 문자를 스택에 push하고 MessageBoxA함..

    [Cheat Engine] 치트엔진으로 핵 토글화해서 exe로 만들기

    Target Game : Binding OfIsaac Rebirth 1.0Cheat Engine을 이용해서 해당 게임을 lua script로 핵을 구현한 상태이다. [File] → [Generate generic tralner lua script from table] Add hotkey 클릭 lua script로 구성된 각각의 메모리 변조를 hotkey로 토글화. 각각의 기능 hotkey 설정 후, GUI 구성 해당 게임은 32bit이므로, 선택 후 saving 클릭 경로를 지정해주면 exe파일의 핵이 생성됨.💡C:\ 에다가 하려했는데, 권한 때문인지 안만들어졌다. 권한과 상관없는 경로에 만들자. 해당 게임을 실행하고 F5 키를 눌러 체력 무한 핵을 키면, 피격 시에도 피가 달지 않는다. Uploaded..

    [Dreamhack] rev-basic-9 write up

    Index문제문제풀이파이썬 풀이 코드 rev-basic-9Reversing Basic Challenge #9 이 문제는 사용자에게 문자열 입력을 받아 정해진 방법으로 입력값을 검증하여 correct 또는 wrong을 출력하는 프로그램이 주어집니다. 해당 바이너리를 분석하여 correct를 출력하는 입력값을 찾으세요! 획득한 입력값은 DH{} 포맷에 넣어서 인증해주세요. 예시) 입력 값이 AppleBanana일 경우 flag는 DH{AppleBanana} Reference Reverse Engineering Fundamental Roadmaphttps://dreamhack.io/wargame/challenges/23/문제실행 파일(exe)이 주어지고, 실행하면 사용자 입력을 받고 프로그램이 종료된다. 문제..