일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- windows kernel debugging
- pcap packet
- C언어 패킷캡쳐
- arudino
- 윈도우 커널 드라이버
- Windows
- 윈도우 커널
- pwnable
- ucrtbase.dll
- 네트워크 바이트 오더
- IAT Hooking
- 해킹
- Windows Kernel Driver
- 윈도우 커널 디버깅
- 바이트 오더
- 시스템해킹
- Msvcrt.dll
- apphelp.dll
- packet capture
- Network Byte Order
- Windows Kernel Debug
- 개발하기
- pcap packet capture
- vcruntime.dll
- 포너블
- vcruntime140.dll
- HackCTF
- Windows Kernel
- hacking
- 개발 환경 준비
- Today
- Total
미친해커
[Cheat Engine] Cheat Engine Tutorial Step 7 본문
Step 7 문제의 외형은 Step 2와 닮아 있는데 클리어 방법은 전혀 다르다. 기존의 클리어 조건이 특정 값으로 Health를 변경하는 거였다면 Step 7의 클리어 조건은 Hit me를 클릭했을 때 Health가 2씩 증가되도록하면 된다. 우선 Health의 주소부터 찾아보자
이렇게 찾았다면 Step 5에서 배운 Find out what writes to this address 기능을 사용해 어느 부분에서 저 값이 쓰여지는지 추적하자
Find out what writes to this address의 사용법은 Step 5에서 알려줬으니 기억이 나지 않는다면 다시한번 보고오는것을 추천한다. 아무튼 이 기능을 이용해서 어느 부분에서 값이 -1 이 되는지 확인 할 수 있다. 어셈블리는 보면
'sub dword ptr [rsi+000007E0], 01' 이라고 되어 있는걸 볼 수 있는데 영어를 좀 하시는 분이라면 sub이 어떤 단어를 뜻하는지 알 수 있을 것이다. sub은 Subtraction이다. 어셈블리를 잠깐 분석해보면 rsi+000007E0의 주소에 포인터를 참조해서 1을 뺀다라는 뜻이다. 아래 예시를 보자
위 예시를 봤을 때 rsi 값이 08040000이라고 한다면 08040000+7E0=080407E0에 먼저 접근한다. 그 다음 어셈블리를 보면 dword ptr 이라고 되어있는데 이 어셈블리의 의미는 '이 주소를 4바이트(dword : double word) 포인터로 참조한다.' 라는 의미이다. 그렇기에 그 주소에 있는 주소를 참조하여 있는 값을 -1 한다는 말이다. 자 그러면 어셈블리의 의미는 알았으니 이제 +2 하는 어셈블리로 변경해야한다. 변경하는 방법은 다음과 같다.
좀 절차가 많은데 위 순서대로 잘 따라왔다면 마지막 화면을 볼 수 있다. 이 기능은 Auto assemble이라고해서 특정 주소의 어셈블리를 패치하여 다른 기능을 하도록 바꾸는 역할을 해준다. 이제 내용을 바꿔주고 Execute 버튼을 누르자
[ENABLE]
//code from here to '[DISABLE]' will be used to enable the cheat
alloc(newmem,2048,"Tutorial-x86_64.exe"+2D4F7)
label(returnhere)
label(originalcode)
label(exit)
newmem: //새롭게 바꿀 어셈블리 코드
add dword ptr [rsi+000007E0],02
jmp exit
originalcode: //원본 코드
sub dword ptr [rsi+000007E0],01
exit: //원래 코드의 흐름으로 돌아가는 부분
jmp returnhere
"Tutorial-x86_64.exe"+2D4F7: //기존에 어셈블리를 패치할 코드
jmp newmem
nop 2
returnhere:
[DISABLE]
//code from here till the end of the code will be used to disable the cheat
dealloc(newmem)
"Tutorial-x86_64.exe"+2D4F7:
sub dword ptr [rsi+000007E0],01
//Alt: db 83 AE E0 07 00 00 01
저기 Information에서 Yes를 누르면 패치된 코드가 있는 영역으로 점프된다. 다시 원래 있던 주소로 돌아가고 싶으면 BackSpace키를 누르면 된다. 원래 주소로 돌아가면 기존에 어셈블리가 'jmp 주소' 로 변경 된것을 확인 할 수 있다. 이제 Hit me를 클릭해보면 값이 2 증가하고 Next 버튼이 활성화되는것을 확인 할 수 있다.
'Cheat Engine Tutorial' 카테고리의 다른 글
[Cheat Engine] Cheat Engine Tutorial Step 9 (0) | 2021.09.20 |
---|---|
[Cheat Engine] Cheat Engine Tutorial Step 8 (0) | 2021.09.20 |
[Cheat Engine] Cheat Engine Tutorial Step 6 (0) | 2021.07.22 |
[Cheat Engine] Cheat Engine Tutorial Step 5 (0) | 2021.07.22 |
[Cheat Engine] Cheat Engine Tutorial Step 4 (0) | 2021.07.21 |