Cheat Engine Tutorial STEP 9 (Dissect data/structures)

Posted by push0ebp
2014. 9. 8. 22:06 카테고리 없음

중2때 쓴게 아직도..



이 튜토리얼의 문제는 우리팀을 제외한 상대팀을 말살하라 입니다.

Float 형으로 Dave의 체력을 구합시다

 


Find Out Access를 겁시다

Write가 아닌이유는

mov 는 정수를 접근할때 쓰는데 float는 FPU를 이용해 스택으로 접근해야 합니다.

그래서 fld로 로드하고 fsub fadd같은 연산을 써서 fstp로 라이팅하게됩니다.

 



 

나왔슴다 체력을 자꾸 감소시키니까 뺴는거죠? 뺴는거면 sub, fsub를 선택하고 코드을 봅시다

 



여기서 정말 유용하고 중요한 기능입니다. 

저기다 대고 Find Out instruction 을 클릭합시다.

이 기능은

Write/Access가 메모리 -> 코드(메모리에 접근하는 코드) 이라면

instruction 은 코드 -> 메모리(코드가 접근하는 메모리) 라고 보시면 되겠네요

저 코드가 접근하고 쓰는 어드레스를 다 보여줍니다.

자 저렇게 떴네요


 

fsub 에 대고 Dissect data/Strutures를 클릭합시다.

오늘 강좌에서 제일 하이라이트인 기능이지요




스샷에 잘 설명이 되어있네요 ㅎㅎ

extra address는 그룹어드레스에 대고 클릭하시면 그룹에 알아서 칸이 추가됩니다.



 

 

 

 



 

저걸 누릅시다

 

 

저기 나와있네요 이름까지 나와 있네요

이 기능은 저어드레스에 오프셋연산한 표로 비교해서 보여주는 기능입니다.

 

 




  

 

스크립트를 짜봅시다.

[ENABLE] //체크가 되었을때
alloc(MyTeam,1024) 
alloc(Die,1024) 
label(Routine

0042509D:
jmp Die // Die로 점프
nop
Routine: //nop밑 쪽을 Routne이라고 선언 합니다. 이쪽으로 점프 시킬거기 때문이지요

 

Die:
cmp [ebx+10],1//ebx+10 의 벨류와 1을 비교 왜 04 였는데 10 일까요? 답은 저 스트럭쳐 에서 +C가 나왔기 떄문이지요.

// 그래서 ebx+04+0C = ebx+10 이라고 되겠네요
je MyTeam // 같다면.우리팀이라면 MyTeam으로 점프
fsub dword ptr [ebx+04] //감소 
fstp dword ptr [ebp-30] 
jmp Routine //원래 어셈으로 이동

 

MyTeam:
fadd dword ptr [ebx+04] // 증가

fstp dword ptr [ebp-30] 
jmp Routine //원래 어셈으로 이동

 

[DISABLE] 

이걸 Tools - Auto Assemble 에 적고 Excute를 누릅시다