728x90

전체 글 51

[Cheat Engine Tutorial] 치트엔진 튜토리얼 4번

4단계: floating points (PW=890124)  문제를 보면 health는 float, ammo는 double로 되어 있음health를 줄이려면 hit me를 클릭ammo를 0.5로 줄이려면 fire를 클릭진행하려면 두 가지 값을 모두 5000 이상으로 설정해야 함 1. 우선 health의 메모리 주소를 찾는다scan type : exact value로 value type : float로 설정 값이 여러 개 나오는 경우도 있다고 했는데, 나는 하나만 나왔다.-> 그냥 VALUE 값을 5000으로 변경함메모리 주소 : 018E0970 1. AMMO의 메모리 주소를 찾는다scan type : exact value로 value type : double로 설정 이 역시 값이 하나만 나온다.value..

게임 핵 분석 2024.05.19

[Cheat Engine Tutorial] 치트엔진 튜토리얼 3번

초기값을 알 수 없음값이 0~500 사이hit me를 누를 시 health가 감소하고, 감소량이 체력바에 표시 됨1) Unknown initial value를 스캔 유형으로 선택2) value type은 4 바이트 (대부분의 윈도우 앱은 4 바이트 사용)3) first scan 클릭 후 완료될 때 까지 기다리기4) 'Hit me' 클릭 -> 치트 엔진으로 가서 Decreased Value 선택 -> next scan5) 위 내용을 반복6) 이제 다음 단계로 진행하려면 건강을 5000으로 변경1. Scan Type : Uknown initial value, value type : 4byte 선택 후 new scan -> hit me -> 1 감소됨2. value : 1, Scan Type : Decreas..

게임 핵 분석 2024.05.18

[Cheat Engine Tutorial] 치트엔진 튜토리얼 2번

2단계: 정확한 값 스캔(PW=090453)화면 아래에는 health :100이 있음'Hit me'를 누를 때 마다 health가 감소함다음 단계를 위해서는 health를 1000으로 변경해야함1) value type이 2바이트 or  4바이트 이상인지 확인2) value type이 올바르게 설정 -> 스캔 유형이 Exact Value인지 확인3)  value box에 health 값 입력 -> first scan4) 주소가 확실하지 않으면 'Hit me' -> 새로운 health 값 입력 후 next scan 클릭5) 위 과정을 반복6) 왼쪽 목록의 주소를 2번 클릭 -> 아래 목록에  주소가 나타나서 현재 값이 표시 됨7) 값을 두번 클릭 -> 값이 1000으로 변경1.문제에 써 있던 대로 설정 시작..

게임 핵 분석 2024.05.18

[Cheat Engine Tutorial] 치트엔진 튜토리얼 1번

https://cheatengine.org/ Cheat EngineCheat Engine Trouble installing/running Cheat Engine? Check out the known github issue here on how to solve it, or join the cheat engine patreon Read before download: You must be 18 years or older, or deemed an adult, to install Cheat Engine. Cheat enginecheatengine.org Tutorial 1문제 : 분석 할 프로그램을 열어보기 1. 왼쪽 위 모니터 버튼을 눌러 어느 프로세스를 열 것인지 선택한다.2. 치트 엔진 프로그램을 선택 후 ..

게임 핵 분석 2024.05.18

[드림핵] 6. Exercise: Helloworld

정적분석 1. IDA로 파일 열기2. 문자열 검색 Shift + F123. HELLO WORLD 문자열 찾기4. 문자열 더블 클릭5. X를 눌러 상호 참조(Cross Reference, XRef)6. MAIN 함수 발견7. F5 눌러 디컴파일8. 생각해보기 DATA- qword_14001DBE0 : 변경 될 수 있는 전역변수RODATA - "Hello, world!\n" : 실행 도중 값이 변경될 일 없는 상수임  sub_140001060 : printf() 함수 - va_start 함수 : 가변 인자를 처리하는 함수 - __acrt_iob_func 함수 : 스트림을 가져올 때 사용되는 함수 ( 1 : stdout )-> 문자열 인자를 받고, stdout 스트림을 내부적으로 사용하는 가변 함수임  동적분..

리버싱 2024.05.18

[드림핵] 6. x86 Assembly🤖: Essential Part(2)

스택push val : val을 스택 최상단에 쌓음rsp += 8reg = [rsp-8]예제[Register]rsp = 0x7fffffffc400[Stack]0x7fffffffc400 | 0x0  결과[Register]rsp = 0x7fffffffc3f8[Stack]0x7fffffffc3f8 | 0x31337   pop reg : 스택 최상단의 값을 꺼내서 reg에 대입rsp += 8reg = [rsp-8]예제[Register]rax = 0rsp = 0x7fffffffc3f8[Stack]0x7fffffffc3f8 | 0x31337 결과[Register]rax = 0x31337rsp = 0x7fffffffc400[Stack]0x7fffffffc400 | 0x0   프로시저call addr : addr에 ..

리버싱 2024.05.18

[드림핵] 5. x86 Assembly🤖: Essential Part(1)

어셈블리어와 x86-64x64 어셈블리 언어기본구조명령어(Operation Code, Opcode) + 피연산자(Operand) 명령어피연산자상수(Immediate Value)레지스터(Register)메모리(Memory) 메모리 피연산자 : TYPE PTR [0x0000000]TYPE PTR : 크기 지정자BYTE : 1바이트 WORD : 2바이트 DWORD : 4바이트 QWORD : 5바이트 x86-64 어셈블리 명령어데이터 이동 (mov, lea)어떤 값을 레지스터나 메모리에 옮기도록 지시 mov dst, src : src에 들어있는 값을 dst에 대입lea dst, src : src의 유효 주소(Effective Address, EA)를 dst에 대입산술 연산 (inc, dec, add, sub)a..

리버싱 2024.05.18

[드림핵] 4. Background: Windows Memory Layout

메모리 레이아웃 : 프로세스 가상 메모리의 구성가상 메모리 : 프로그램을 실행할 때 운영체제가 프로세스에게 할당해주는 사용가능한 메모리 공간 프로세스 메모리 구조섹션윈도우의 PE 파일 : PE 헤더 + 1개 이상의 섹션PE 헤더 : 섹션에 대한 정보- 섹션의 이름- 섹션의 크기- 섹션이 로드될 주소의 오프셋- 섹션의 속성과 권한위 내용을 가지고 PE의 각 섹션들을 가상 메모리의 적절한 세그먼트에 매핑 섹션 : 유사한 용도로 사용되는 데이터가 모여있는 영역.text실행 가능한 기계코드프로그램이 동작하려면 코드 실행 필요 -> 읽기 권환과 실행 권한이 부여 쓰기 권한 있으면 코드 삽입이 쉬워지므로 쓰기 권한 제거.data컴파일 시점에 값이 정해진 전역 변수CPU 가 데이터를 읽을 수 있어야 함 -> 읽기/쓰..

리버싱 2024.05.18

[드림핵] 3. Background: Computer Architecture

컴퓨터 구조와 명령어 집합 구조 컴퓨터 구조-  컴퓨터가 효율적으로 작동할 수 있도록 하드웨어 및 소프트웨어의 기능을 고안하고, 이들을 구성하는 방법 폰 노이만 구조 Q : 메모리 안에 주기억장치와 보조기억장치가 있는데 왜 CPU안에 다른 저장장치(레지스터, 캐시)가 필요한가?A: 데이터 교환 속도를 단축하기 위해서임CPU의 연산 속도 >>>>>> 기억장치의 데이터 교환 속도 명령어 집합 구조 x86-64 아키텍처범용 레지스터 세그먼트 레지스터명령어 포인터 레지스터플래그 레지스터레지스터 호환QUIZ더보기  1. rax = 0x0123456789abcdef 일 때, al의 값은?A : al은 rax에서 하위 8비트 부분을 나타내는 레지스터임 -> al = 0xef 2. rax = 0x0123456789ab..

리버싱 2024.05.18

[드림핵] 2. Background: Static Analysis vs. Dynamic Analysis

정적분석정적분석정적분석프로그램을 실행시키지 않고 분석정적분석의 장점프로그램의 전체 구조를 파악하기 쉬움: 어떤 함수로 구성 되었는지, 함수들이 어떤 호출 관계를 갖는지, 어떤 api를 사용하는지분석 환경에서의 제약에서도 비교적 자유롭다: 프로그램을 실행하지 않아도 되기에 분석 시도가 비교적 쉽다바이러스와 같은 악성 프로그램의 위협으로 부터 안전: 프로그램을 실행하지 않아도 되기에 안전정적 분석의 단점난독화 적용시 분석이 어려움다양한 동적 요소를 고려하기 어려움: 어떤 함수가 특정시점에 어떤 인자와 전역 변수를 가지고 실행될지 알기 어려움동적분석동적분석동적분석프로그램을 실행시키면서 분석동적분석의 장점코드를 자세히 분석해보지 않고도 프로그램의 대략적인 동작 확인동적 분석의 단점분석 환경을 구축하기 어려울 수..

리버싱 2024.05.18
728x90