채팅0

    data pointer

    조회수 426

    혹시 멀티포인터가


    data ptr1((함수)qword) <- data ptr2((함수)qword) <- data ptr3((함수)qword) <- Hook함수(request받아서 처리하는 부분)


    (void*)&original_qword1 = (fun1_og)InterlockedExchangePointer((PVOID*)fun1_data_ptr_addr, (PVOID)fun2_data_ptr_addr);

    (void*)&original_qword2 = (fun2_og)InterlockedExchangePointer((PVOID*)fun2_data_ptr_addr, (PVOID)fun3_data_ptr_addr);


    (void*)&original_qword3= (fun3_og)InterlockedExchangePointer((PVOID*)fun3_data_ptr_addr, (PVOID)hook_fun);


    이 순서로 되는건가요?


    만약 이렇게 했을 때, 확실하진 않지만 안티치트 시스템이 포인터가 유효한 모듈 내에 있는지 확인하고 또 유효한 모듈 내에 올바른 위치로 이동하는지까지 확인할 것 같은데 이건 어떤식으로 우회가 가능한건가요?

    댓글3

    회원프로필

    먼저 주어진 코드의 순서를 이해하면, 세 개의 함수 포인터가 있고, 각각의 포인터를 다른 함수 포인터로 변경하려고 시도하는 것처럼 보입니다. 특히, `InterlockedExchangePointer`는 원래의 포인터와 새로운 포인터를 교환하므로, 코드는 다음과 같은 흐름을 갖습니다:

    1. `ptr1`의 원래 값을 `original_qword1`에 저장하고, `ptr1`를 `ptr2`의 값으로 변경합니다.
    2. `ptr2`의 원래 값을 `original_qword2`에 저장하고, `ptr2`를 `ptr3`의 값으로 변경합니다.
    3. `ptr3`의 원래 값을 `original_qword3`에 저장하고, `ptr3`를 `hook_fun`의 값으로 변경합니다.

    이런 흐름으로 코드가 실행되면, `ptr1`, `ptr2`, `ptr3`의 값이 모두 변경됩니다.

    게임의 안티치트 시스템이 포인터의 유효성을 검사하는 경우, 여러 전략을 사용할 수 있습니다:

    1. **메모리 패치 우회**: 코드를 직접 수정하는 대신, 메모리 내의 값을 변경하여 안티치트 검사를 우회할 수 있습니다.
    2. **포인터 복원**: 안티치트 검사가 시작되기 전에 포인터 값을 원래대로 복원하고, 검사 후에 다시 hooking합니다.
    3. **API 훅킹**: 안티치트 시스템이 사용하는 API를 훅킹하여 검사 결과를 조작할 수 있습니다.

    하지만, 안티치트 시스템과의 '고양이와 쥐' 게임은 복잡하고 지속적으로 진화하는 상황이므로, 항상 새로운 방법과 우회 전략을 연구해야 합니다. 게임 개발자와 안티치트 제작자들은 이러한 우회 방법을 막기 위해 지속적으로 업데이트를 합니다. 따라서 안티치트 시스템을 우회하는 방법을 사용할 때는 항상 주의해야 합니다.

    2023.10.11 01:12
    회원프로필

    GPT가 쓸법한 답변이네요 ㅎㅎ.. 이런 형식적인 답변을 원했던것이 아니라 깃주소를 올려도 되나 모르겠는데, 깃에DoubleDataPointer 라는 레포지토리의 이름을 가지고있는 레포지토리 봐주시면 제가 말한 방식과 약간 다르게 되어있습니다. 어제오늘 더 찾아보면서 깃을 하나 더봤는데, NtUserUpdateWindowTrackingInfo라는 이름으로 되어있는 레포지토리의 코드 또한 약간 다릅니다. 주신 답변은 제가 원했던답변이 아니에요.

    2023.10.11 01:27
    회원프로필

    어떤방식인지 알았네요 답변 안주셔도 돼요

    2023.10.11 02:25

      게시글 리스트
      제목작성자작성일조회
      141710-11321
      141610-11427
      141510-10552
      141410-10388
      141310-10339
      141210-10310
      141110-10330
      141010-10323
      140910-09314
      140810-09320
      140710-09356
      140610-09499
      140510-09288
      1404
      gd+5
      10-09552
      140310-08416
      140210-08306
      140110-08316
      140010-07453
      139910-06953
      139810-06466
      안내 배너 이미지