저번 편처럼 코드를 수정하면 모두가 무적이 되는 상황이 발생합니다.
나만 무적이 되고 싶으면 레지스터를 살펴보면 됩니다.
방법
체력에 접근하는 opcode에 우클릭 후
Find out what addresses this instruction accesses를 눌러줍니다.
명령어에 접근하는 주소들을 찾아주는 기능입니다.
눌러주면 이창이 뜨고 적들에게 피해를 입혀주면?
적들의 체력들이 찾아지게 됩니다.
찾은 체력들을 우클릭 -> Show register states클릭
그럼 캡처한 레지스터들이 보입니다.
여기서 레지스터를 비교해 적과 나를 구분하고 무적을 만들 겁니다.
비교대상은 작은 숫자, 체력 주소와 비슷한 주소입니다.
비교해보면 ESI, EBP가 다릅니다. 하지만 특정할 수 없는 값이기 때문에
남은 건 EBX의 체력 주소와 비슷한 주소밖에 없습니다.
박스 친 곳이 플레이어의 EBX를 보면 체력 주소와 비슷한 곳인데
내 체력에 접근하는 opcode를 확인했을 당시 ebx와 같다는 걸 알 수 있습니다.
※이런 "ebx"를 플레이어 베이스, "+04"를 오프셋이라 합니다.
플레이어 베이스와 비교를 위해 스크립트를 수정해야 됩니다.
순서는
1. 플레이어 체력 베이스 주소를 얻어오기
플레이어 체력 베이스 주소는 포인터 스캔해서 찾아왔습니다 ("[ac_client.exe+0017E360] + EC")
"ac_client.exe+0017E360"를 포인터 오프셋1, "EC"를 포인터 오프셋2라 하겠습니다.
2. 플레이어 베이스 주소 찾아가기
위 사진을 보면 ebx+04가 체력값이니 -04를 해주면 플레이어 베이스 주소가 나오겠죠.
[ENABLE]
aobscanmodule(INJECT,ac_client.exe,29 73 04 8B C6)
alloc(newmem,$1000)
label(code)
label(return)
newmem:
mov eax,[ac_client.exe+17E254]
// 포인터 오프셋1, 에서 +0xEC(포인터 오프셋2) -0x4(체력 오프셋)을
// 하면 플레이어 베이스가 찾아집니다
add eax,+0xEC-0x4
cmp eax,ebx // 오프셋계산을 한후 ebx(플레이어 베이스주소)를 비교해줍니다
jne code // 같지않으면 code:로 점프 (무적아님)
jmp return // 같으면 return:로 점프 (무적임)
code:
sub [ebx+04],esi
mov eax,esi
jmp return
INJECT:
jmp newmem
return:
registersymbol(INJECT)
[DISABLE]
INJECT:
db 29 73 04 8B C6
unregistersymbol(INJECT)
dealloc(newmem)
스크립트를 치트 테이블에 놓고 적용시켜보면
저만 무적이 되었습니다.
이런 식으로 모든 게임을 수정이 할 수 있습니다.
메일 : qmffhrm@protonmail.com
'치트엔진 > 사용 가이드' 카테고리의 다른 글
치트엔진 Mono Features을 이용한 스피드해킹(Dissect mono, .Net Info) (4) | 2022.08.07 |
---|---|
플레이어 충돌 없애기 (치트엔진, No player collision) (0) | 2022.08.01 |
무적 치트 만드는 법 (AOB Injection 치트엔진) (0) | 2022.07.29 |
치트엔진 드라이버 로드하기(우회방법, 오류해결) [cheat engine] (0) | 2022.07.07 |
[cheat engine] 안티치트로 보호된 모듈 주소 구하기 (0) | 2022.07.05 |