서버 배너
    서버 프로필
    쉽게 배우는 게임 해킹
    매니저리버서멤버 296

    오토에임 편 5강 맛보기

    조회수 528 수정일 2025.02.01 17:51:57

    https://www.veed.io/view/afdf352d-8272-4be3-9af1-3064b5d21d52?panel=share  > 결과물 

     

     

     

     

    자 오토에임과 ESP를 구현하려면 우선 내 정보와 적의 정보가 있어야한다.

     

    왜냐고? 내 좌표를 기준으로 적 좌표와 계산해서 거리나 각도를 계산 해야하기 때문이다.

     

    그럼 우리는 이전 편에서 앵글을 찾았으니 내좌표와 적좌표만 가져온다면 오토에임은 만들 수가 있을 것이다.

     

    자 그럼 내 좌표와 적 좌표를 어떻게 찾는지 한번 알아보자.

     

     

    자 먼저 플레이어의 정보를 담은 리스트인 (Entity List)를 어떻게 찾냐하면 나의 체력을 통해 찾는다.

    왜냐고? 게임을 개발할 때 플레이어의 정보를 예를들어 아래와 같은 코드로 구현하기 때문이다.

     

    typedef struct CCPlayerInfo
    {
     bool IsAlive;
     char Nickname[16]
     BYTE IsGod;
     ...
     int HP;
    }TPlayerInfo;

    그러면 체력을 찾으면 같은 구조체안에 여러 정보가 담겨있을 확률이 높겠지? 이건 당연하다. 개발할 때 취해서 하지 않는 이상 효율성이나 패킷통신 때문에 구조체를 쓸 수 밖에 없다. 자 그래서 우리는 내 체력부터 찾아볼거다.

     

     

    thumb-20250129042311_99262b4158a7a78d73a99f709822c102_fxdu_970x.png

    먼저 초기 체력이 100이니 100을 스캔하고 낙뎀을 받아서 91인 상황이다. 따라서 91을 스캔했다.

    초록값은 찾아볼 수 없다. 왜그럴까? 이유는 나도 모른다. 어찌됐든 해킹방지 목적이든 메모리 관리 목적이든 개발단에서 이렇게 개발한거다.

     

    그럼 우리는 저 값에서 포인터를 딸 수 있는 값을 찾아야한다. (초록색 정적 베이스값)

    thumb-20250129040506_99262b4158a7a78d73a99f709822c102_4ayh_970x.png

    자 실제 체력이 변경되는 부분은 저 값이지만 저 값은 우리가 원하는 값이 아니다. 이유는 다음에 나온다.

     

     

    20250129040535_99262b4158a7a78d73a99f709822c102_3g28.png

    저기 나온 14개의 값에 하나하나씩 Ctrl + f5 일명 파앗을 걸어보면 어느 값에서 위와 같이 나오는 것을 볼 수 있다.

    rcx 레지스터 + 344가 내 체력을 향하고 있다는 뜻이다.

     

    그럼 rcx에 담긴 값이 초록색 정적 주소인 베이스값이 되겠고

    344가 오프셋이 되겠다.

     

    20250129040732_99262b4158a7a78d73a99f709822c102_a0vq.png

    RCX에는 000002462CB509C0이 담겨있다. 이 값을 담고있는 녀석이 베이스 값이 되므로 16진수를 체크하고 RCX에 담긴 값을 스캔해보자.

     

     

    20250129040811_99262b4158a7a78d73a99f709822c102_dhi3.png

    자 그럼 client.dll을 베이스로한 정적 주소 두개가 나왔다. 왜 두개나 나왔을까?

    생각해보면 RCX + 344가 체력이라고 했는데 체력을 가르키는 값이 두개??

     

    고민을 해보면 하나는 내 플레이어정보, 다른하나는 모든 플레이어의 정보를 담고있는 놈이 될 것이다.

    자 그럼 진짜인지 확인해보자.

     

     

    thumb-20250129040916_99262b4158a7a78d73a99f709822c102_f48f_970x.png

    첫번째 값의 주소를 복사하고 메모리뷰에 가서 도구 > 구조체 분석을 가보자.

     

    20250129040947_99262b4158a7a78d73a99f709822c102_6hx3.png
    20250129040956_99262b4158a7a78d73a99f709822c102_dc20.png

    주소를 붙여넣고 새로운 구조체를 정의하면 된다.

     

     

    thumb-20250129041009_99262b4158a7a78d73a99f709822c102_hssa_970x.png

    자 그러면 저 주소를 읽은 값에 CSPlayerPawn라는 놈이 담기는데 이게 뭘까? 궁금하면 들어가봐라

     

     

    thumb-20250129041045_99262b4158a7a78d73a99f709822c102_zne7_970x.png

    0에 들어가서 344번지를 가면(오프셋) 현재 내 체력이 담겨있는 것을 볼 수 있다.

     

     

     

    thumb-20250129041112_99262b4158a7a78d73a99f709822c102_k2vv_970x.png

     

    자 그럼 똑같이 두번째 값도 해본다. 여기에도 내 체력이 담겨있다. 

    흐음.. 왜 둘다 나를 가리키는거지? 이유는 간단했다.

    게임방에 나밖에 없었다. 그래서 봇을 추가해보았다.

     

     

    thumb-20250129041200_99262b4158a7a78d73a99f709822c102_yvli_970x.png

    봇을 하나 추가하니까 두번째 값의 10번째 자리수에 똑같은 객체가 하나 늘었다. 그럼 확인해봐야겠지?

     

     

     

    thumb-20250129041236_99262b4158a7a78d73a99f709822c102_7quv_970x.png

    일단 0번째부터 가서 체력을 본다. 현재 90인 내 체력을 가리키고 있다.

     

     

    thumb-20250129041308_99262b4158a7a78d73a99f709822c102_1v46_970x.png

    그럼 10에 들어가서 344번지를 보면? 체력이 100이다. 이건 봇의 체력이겠지

     

     

    그럼 여기서 우리는 베이스 주소 + 0x344가 체력이라는걸 알게되었다.

    그리고 첫번째 주소는 내 플레이어 베이스, 두번째 주소가 엔티티 리스트임을 확인했다.

     

    그리고 그 엔티티 리스트는 10의 배수로 존재한다. 

    예를 들어 플레이어가 4명이면

     

    플레이어 1 = 0

    플레이어 2 = 10

    플레이어 3 = 20

    플레이어 4 = 30

     

    이런 번지수로 가는거다.

     

     

    그럼 플레이어 4의 체력을 가져오는건 어떻게할까?

     

    (베이스주소 + 30) + 344가 되는거다.

     

    그럼 이제 좌표를 찾아보자.

     

    좌표는 일일이 멈췄다 움직였다 반복해서 감소 증가 언노운 스캔을 통해 찾아볼 수 있지만 콘솔 명령어를 통해 좌표 출력이 가능해서 간단하게 따보겠다.

    원래는 이런기능이 없으니 움직여서 따야한다 참고만 해야한다.

     

     

    thumb-20250129041858_99262b4158a7a78d73a99f709822c102_84kr_970x.png

    자 아까 엔티티 리스트 구조체에서 현재 내 X좌표인 274를 찾아보니까 DB8번지에 존재한다. 그다음 번지에는 Y 그리고 Z가 존재한다.

     

    그럼 좌표의 오프셋은 DB8이 된다.

     

    마지막으로 정리해보면

     

    베이스 주소 + 344는 체력

    베이스 주소 + DB8은 좌표

     

    이렇게 되는거다.

     

     

    다음 강의는 실제로 코딩을 통해 구현해보겠다. 

     

     

    댓글0

    강의 맛보기 (무료)

    게시글 리스트
    제목작성자작성일조회
    공지01-29529