![article thumbnail](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb7YA7C%2FbtrpP2HiVc2%2Fkxyxlq7kcTKsfkarFUk87K%2Fimg.png)
게임 메모리 해킹: 치트 엔진(Cheat Engine) 튜토리얼 7단계 해결하기 (Game Memory Hacking Tutorial by Using Cheat Engine #8) # 튜토리얼 7 - Code Injection: 실행 중인 게임에 우리가 원하는 소스 코드를 삽입해서 실행하는 방법 - Hit me: 누를 때 마다 Health가 1씩 감소 - 문제 요약 > Hit me를 눌렀을 때 Health를 2씩 증가할 수 있도록 code injection하기 - 현재 Health의 값인 100으로 first scan 진행 - Hit me 버튼을 눌러 감소된 값을 다시 next scan으로 찾아봄 - 해당 주소를 주소 리스트에 추가 - Find out what writes to this address >..
![article thumbnail](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fo2O2B%2FbtrpPvJblYk%2F8N4BUgD4jvfoKZyI39I8FK%2Fimg.png)
게임 메모리 해킹: 치트 엔진(Cheat Engine) 튜토리얼 6단계 해결하기 (Game Memory Hacking Tutorial by Using Cheat Engine #7) # 튜토리얼 6 - 포인터에 대해 물어보는 문제 - 포인터 변수: 컴퓨터 메모리 주소를 저장하는 변수 > 특정한 메모리 주소에 빠르게 접근하여 값을 변경하거나 활용할 수 있음 - 문제 요약 >Change value button: 포인터가 가리키고 있는 200이라는 값을 바꾸는 역할 > Change pointer button: 포인터 자체를 다른거로 바꾸는 기능 > 외관상으로는 똑같이 값이 바뀌는 것 같지만 내부적으로는 포인터의 값을 바꾸거나 포인터가 가리키고 있는 어떠한 변수의 값을 바꾸는 두 가지 일을 하는 것임 - 현재 값..
![article thumbnail](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc5HSyB%2FbtrpBC9Hrq6%2FyzZKYYoN0MZgTuXHAxL7wk%2Fimg.png)
게임 메모리 해킹: 치트 엔진(Cheat Engine) 튜토리얼 5단계 해결하기 (Game Memory Hacking Tutorial by Using Cheat Engine #6) # 튜토리얼 5 - 이번 문제는 특정한 메모리 주소에 접근하는 어떠한 기계어를 발견하는 방법을 알고 있으면 쉽게 해결할 수 있음 - 문제 내용 > 버튼을 누를 때 마다 값이 바뀌는데, 값이 바뀌도록하는 기계어 자체를 무효화해서 버튼을 눌러도 값이 변경되지 않도록 해야 함 > 어떤부분이 실질적으로 이 주소에 접근하는 기계어인지 찾아내서 그것을 대체(아무것도하지않는 코드)해야 함 - 100이란 값을 scan해서 어떠한 기능이 이 변수에 접근하여 기능을 하는지 알아내야함 - 정수형 값을 발견하면 4byte라고 이해하면 편함 → 4b..
![article thumbnail](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbxZkIY%2Fbtrpu2U5yXC%2Fn5JVURhVvMghPVI7LWatdK%2Fimg.png)
게임 메모리 해킹: 치트 엔진(Cheat Engine) 튜토리얼 4단계 해결하기 (Game Memory Hacking Tutorial by Using Cheat Engine #5) # 튜토리얼 4 - 문제 요약 > float type Health와 double type Ammo의 값을 5000으로 만들어야 함 - 이번에 찾아야 하는 데이터는 실수 형태 - 게임을 만들 때에는 C# 또는 C++을 많이 사용하는데, 이러한 C언어 계열의 프로그램에서는 두 가지 실수형이 가장 많이 사용됨 - 작은 크기의 실수형을 나타낼 때 사용하는 float형, 큰 크기의 실수를 나타낼 때 사용하는 double형이 있음 - value type이 float이고 값이 100인 변수를 찾기 위해 fist scan을 진행 - Hit ..
![article thumbnail](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FblnEoS%2FbtrpcQmEtvp%2FsORskKLS5Ggoxyqvlw7kG0%2Fimg.png)
게임 메모리 해킹: 치트 엔진(Cheat Engine) 튜토리얼 3단계 해결하기 (Game Memory Hacking Tutorial by Using Cheat Engine #4) # 튜토리얼 3 - 문제 요약 > 0부터 500 사이의 숨겨진 변수가 있음 > Hit me 버튼을 누를 때 마다 변수의 값이 감소함 > 이 변수를 찾아 값을 5000으로 만들어야 함 - 변수의 값을 모를 땐 scan type을 unknown initial value로 설정한 후 first scan 버튼을 누르면 됨 - Hit me 버튼을 누르니 1만큼 감소함 - 변수의 값을 모르고, 얼만큼 감소했는지를 알 때는 scan type을 Decreased value by ...로 설정 - next scan 변수를 누르면 1만큼 감소한..
![article thumbnail](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbVoks5%2Fbtro09tGQsM%2FLuk4elTQkX5EdpZfXIhK3k%2Fimg.png)
게임 메모리 해킹: 치트 엔진(Cheat Engine) 튜토리얼 2단계 해결기 (Game Memory Hacking Tutorial by Using Cheat Engine #3) # 튜토리얼 2 - 체력 정보는 메모리에 저장이 됨 > health와 같은 변수명을 가지고 저장 - 컴퓨터의 프로그램을 분석 방법 > 정적분석: 소스코드를 바탕으로 분석 > 동적 분석: 프로그램을 실행하고 메모리를 조작하며 분석 - 튜토리얼 목적: health를 1000으로 변경하기 - Scan Type을 Exact Value로 설정하고, Hex에 현재 체력 값인 100을 입력하여 New Scan을 누르면, 현재 값이 100인 변수들의 주소가 나타남 - Hit me 버튼을 누르니 체력이 97로 변함 - 치트 엔진 프로그램에서도 ..
![article thumbnail](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbSel87%2Fbtro09G8WQB%2FgZgLWzdg3uk090zVEyOOw0%2Fimg.png)
게임 메모리 해킹: 치트 엔진(Cheat Engine) 튜토리얼 1단계 해결하기 (Game Memory Hacking Tutorial by Using Cheat Engine #2) # 치트엔진이란 - 메모리 수정 프로그램으로 기능이 매우 많아 게임 해킹의 필수품으로 여겨짐 - 'cheat engine assembler'를 지원 - 프로그램에 어셈블리 코드를 끼워넣을 수 있음 # 튜토리얼 열기 - next 버튼을 누르면 다음 단계로 넘어갈 수 있음 - n 단계로 바로 넘어가기 위해서는 password를 기억하면 됨 - 튜토리얼이 꺼지면 Help -> Cheat Engine Tutorial에 들어가서 다시 실행시킬 수 있음 # 튜토리얼 1 - 튜토리얼 1단계를 읽어보니 프로세스를 불러오는 작업을 해야함 - ..
![article thumbnail](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb9dg5V%2FbtrozwitWPx%2FBP3j8uus0X4ZBX7reuuku1%2Fimg.png)
Reversing Engineering - 7. 쉬운 crackme를 통한 디버거 사용법 - 2 # 프롤로그 - 문제는 어떤 값을 입력을 받아 특정 조건을 만족하면 correct!을 출력하고 틀리면 wrong!을 출력함 # 문제 풀이 - 0 - 처음 문제를 실행하면 input: 이라는 문자열이 출력됨 - 문제 지문에서 어떠한 형식으로 값을 입력받는지에 대해 알려주지 않았기 때문에 적당히 아무 문자열을 넣고 enter를 누르면 wrong!이 뜨는 것을 볼 수 있음 - 어떠한 형식으로 입력을 받는지는 모르지만, 문제의 형태가 이전 강의에서 풀이한 문제와 비슷 > 다음과 같은 방식으로 분석할 수 있을 것임 1. 메인함수를 찾아낸다 2. 입력의 형식이 어떤 형식인지 알아낸다 3. 입력받은 값은 어떤 방식으로 처..
![article thumbnail](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcoPnuM%2FbtrowkAZMwR%2FIT6RsWkjLHzYNP9zKymiJ0%2Fimg.png)
Reversing Engineering - 6. 쉬운 crackme를 통한 디버거 사용법 - 1 # 프롤로그 - 문제는 2개의 정수를 입력받아 값이 특정 조건을 만족하면 correct!을 출력하고 틀리면 wrong!을 출력함 # 문제 풀이 - 0 > 주어진 문제를 실행하면 input: 이라는 문자열이 출력됨 > 숫자 2개를 입력하면 wrong! 이라는 문자열을 출력함 - 추측 > main함수에서 printf, puts 등의 출력 함수 및 scanf와 같이 입력을 받는 함수가 포함되었을 것임 > wrong!이 출력되기 전 입력받은 숫자 2개를 처리하는 부분이 있을 것임 # 문제 풀이 - 1 - 다양한 방법으로 찾을 수 있지만 Az 버튼을 사용하여 input: 문자열을 찾아 main 함수를 발견 > 처음 출..
![article thumbnail](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FydnAo%2FbtriQ63dX8j%2Fz2Yparntse8t9fXrVyn1gK%2Fimg.png)
# GRUB 부트로더 - GRUB 부트로더: CentOS를 부팅할 때 처음 나오는 선택 화면 - 기본적인 특징 > 부트 정보를 사용자가 임의로 변경해 부팅할 수 있음 > 즉, 부트 정보가 올바르지 않더라도 수정하여 부팅할 수 있음 > 대화형 설정을 제공하므로 커널 경로와 파일 이름만 알면 부팅이 가능 - GRUB 2 버전을 사용 > 셸 스크립트를 지원함으로써 조건식과 함수를 사용할 수 있음 > 동적 모듈을 로드할 수 있음 /boot/grub2/i386-pc/ 디렉터리에 mod 파일로 존재 > 그래픽 부트 메뉴를 지원하며 부트 스플래시 성능이 개선됨 > ISO 이미지를 이용해서 바로 부팅할 수 있음 > 설정 파일의 형식이 변경되었지만 더 향상된 내용을 포함할 수 있음 - GRUB 2의 설정 파일: /boo..