fps 게임에서 조준 봇은 어떻게 작동합니까?
Counter-Strike 등 온라인 FPS 게임에서의 AIM 봇에 대한 경험이나 지식이 있는지 궁금했습니다.커서가 어떻게 상대 선수를 고정하는지 궁금하고 자세히 알고 싶습니다.물론 부정행위를 하고 싶으면 부정행위를 다운받아서 배울 수 있습니다.거기에 무엇이 관련되어 있습니까?커서를 올바른 위치로 이동하기 위해 사용자 마우스/키보드를 잠그고 있습니까?치트 어플리케이션은 어떻게 커서를 정확히 어디에 두어야 하는지 알 수 있습니까?치트 앱은 게임 앱 내에서 데이터에 접근할 수 있어야 하는데, 어떻게 해야 하나요?
편집: SIDs의 답변에 따르면, 사람들은 데이터를 가져올 수 있는 알려진 메모리 위치를 어떻게 얻습니까?EDIT2: 디버깅 프로그램 또는 다른 방법을 사용하여 위치 0xbbbbbb에서 원하는 값을 찾았다고 가정합니다.이 게임에서는 해당 메모리가 없기 때문에 응용 프로그램 내의 해당 위치에 저장된 데이터에 어떻게 액세스하여 사용할 수 있습니까?아니면 프로세스에 주입하고 해당 주소의 메모리를 memcpy를 사용하여 복사할 수 있게 되었기 때문에 액세스 할 수 있습니까?
더 할 말 있는 사람?가능한 한 많은 것을 배우려고 노력하고 있습니다!
게임 메모리 어딘가에 각 플레이어의 X, Y, Z 위치가 있습니다.게임은 플레이어의 모델 렌더링 위치 등을 알 수 있도록 이 정보를 알아야 합니다(단, 플레이어에 대한 플레이어 정보만 전송하여 게임 클라이언트가 알 수 있는 양을 제한할 수 있습니다).
Aimbot은 알려진 메모리 위치를 스캔하여 이 정보를 읽을 수 있으며 플레이어와 적이라는 두 가지 위치에 액세스할 수 있습니다.두 위치(벡터)를 빼면 두 위치 사이의 벡터가 제공되며, 여기에서 플레이어의 현재 모양 벡터에서 원하는 각도 벡터까지의 각도를 쉽게 계산할 수 있습니다.
게임에 직접 입력을 보내고(이것은 사소한 일) 일부 상수와 미세 조정하면 자동으로 매우 빠르게 조준할 수 있습니다.이 프로세스에서 가장 어려운 것은 위치가 메모리에 저장되어 있는 위치를 특정하고 플레이어를 움직이는 동적 데이터 구조(예: 좌절 제거)에 맞춰 조정하는 것입니다.
주소 랜덤화가 사용되고 있는 경우는, 기입이 어려운 것에 주의해 주세요.다만, 불가능하지는 않습니다.
편집: 프로그램이 다른 프로그램 메모리에 액세스하는 방법을 알고 싶다면 일반적으로 DLL 주입을 사용합니다.
편집: 지금도 히트하고 있기 때문에, Direct3D 또는 OpenGL DLL을 덮어쓰기(또는 패치 적용)하여 지오메트리를 그리기 위한 함수 호출을 검사하고, 독자적인 지오메트리를 삽입(월 해크 등)하거나, Aimbot을 위한 모델의 위치를 얻는 등, Aimbot이 현재 더욱 인기 있는 방법이 있습니다.
여기에서 Fleep의 튜토리얼 시리즈를 확인하십시오.C#의 완전한 코멘트는, 여기서 다운로드할 수 있습니다.
★★★★★★★★★★★★★★★★★★:
플레이어의 x y z 좌표, 커서 x y 좌표 및 모든 적 x y z 좌표를 찾습니다.가장 가까운 적과의 거리를 계산합니다.이제 자동 조준에 필요한 x y 커서 좌표를 계산할 수 있습니다.
또는 죽은 적(상태는 0)을 제외할 수 있으므로 이 경우 적의 상태 주소도 찾아야 합니다.플레이어 관련 데이터는 일반적으로 메모리 내에서 서로 근접합니다.
이 모든 것이 어떻게 작동하는지 자세히 보려면 소스 코드를 확인하십시오.
편집: 이 주제를 잘 알고 있습니다.죄송합니다만, 이것이 질문자에게 도움이 될 것 같습니다.
해킹 업계는 시도하지 않았지만 제가 실험해 온 것은 소켓 하이잭입니다.실제보다 훨씬 더 많이 들릴 수 있지만 기본적으로 WinPCAP 드라이버를 사용하여 프로세스의 오프셋 근처에도 가지 않고 TCP(소켓)를 통해 프로세스의 인터넷 연결에 연결합니다.
그런 다음 TCP 신호가 전송되는 방식을 학습하고 해시 테이블 또는 멀티 플레이어(패킷) 클래스에 저장하기만 하면 됩니다.그런 다음 정보를 검색하여 Window(잠기지 않음)를 통해 정보를 오버레이한 후 투명 레이블과 2D 상자만 Window 게임 화면에 표시하면 됩니다.
나는 그것을 Call of Duty 4에서 테스트해왔고 TCP를 통해 4명의 플레이어의 위치를 알아냈다.또한 Ron Warholic이 말했듯이 게임 개발자가 플레이어를 볼 때 플레이어를 출력하기 위해 게임 서버를 작성했다면 모든 해킹 방법은 작동하지 않을 것이다.
그리고 그 플레이어의 위치 전송을 자른 후 XYZ와 플레이어는 더 이상 저장되지 않고 월핵을 정지하기 위해 렌더링되지 않습니다.그리고 Aimbot은 어떤 면에서는 일을 지연시키지만 효율적이지는 않다.어쨌든, 만약 당신이 월핵을 만들고 싶다면, 그 과정에 접속하지 말고 WinPCAP을 배우고 인터넷 신호에 접속해 보세요.게임의 경우 인터넷 전송 프로세스 목록을 검색하지 마십시오.이를 이용한 예가 필요한 경우 Rust Radar를 검색하여 플레이어의 위치를 지도에 출력하고 인터넷 전송 TCP를 통해 전송되며 게임에 접속되지 않은 다른 플레이어를 출력합니다.
지금까지 사용되었던 다른 방법은 네트워크 패킷 포맷을 리버스 엔지니어링하는 것입니다.패킷 스트림에 대한 man-in-the-middle 공격은(게임이 실행되는 시스템과 동일한 시스템에서 수행될 수 있음) 플레이어 위치 및 기타 유용한 관련 정보를 제공할 수 있습니다.위조된 패킷은 서버에 전송되어 게임에 따라 플레이어의 이동, 슈팅 또는 모든 종류의 작업을 수행할 수 있습니다.
흥미로운 질문입니다.정확한 답은 아니지만 Counter-Strike 초기 사람들은 opengl32.dll을 벽을 통해 볼 수 있도록 폴리곤을 투명하게 렌더링하는 엉터리 제품으로 대체하곤 했던 것으로 기억합니다.
해커들은 개선되고 더 짜증나게 되었고 사람들은 더 창의적이 되었다.이제 밸브/스팀 제거가 잘 된 것 같습니다.만약 당신이 이 물건들을 가지고 놀 계획이라면, 스팀에서는 '해크'를 스캔하고 만약 발견되면, 그들은 당신을 영구적으로 금지시킬 것입니다.
많은 "Aim 봇"은 목표 봇이 아니라 트리거 봇입니다.그 망막은 목표물 위로 올라가면 자동으로 발사되는 백그라운드 프로세스입니다.이 작업은 다양한 방법으로 수행될 수 있지만, 많은 게임에서는 타겟이 다른 사용자나 트리거 봇이 가리키는 메모리의 다른 데이터 조각을 지날 때마다 이름을 표시함으로써 쉽게 수행할 수 있습니다.
이렇게 하면 목표물을 향해 마우스를 흔들면서 게임을 할 수 있고, 목표물 위로 마우스를 올리면 실제로 발사할 필요 없이 발사할 수 있습니다.
그들은 여전히 메모리에서 그러한 것들을 정확히 찾아낼 수 있어야 하며 진정한 "Aim 봇"이 가지고 있는 것과 같은 종류의 문제를 가지고 있어야 한다.
언급URL : https://stackoverflow.com/questions/1749597/how-do-aim-bots-in-fps-games-work
'programing' 카테고리의 다른 글
Vue: mapFields 내의 컴포넌트 프로포트를 사용하는 방법 (0) | 2022.08.03 |
---|---|
Vuex 작업에서 Nuxt 컨텍스트 변수에 액세스하는 방법 (0) | 2022.08.03 |
Vue - $emit, .sync 패턴과 필요하지 않은 소품 사용 (0) | 2022.08.03 |
java.util.logging을 사용할 때 텍스트 파일에 로그를 쓰는 방법.로거 (0) | 2022.08.03 |
Java - 문자열의 첫 번째 문자 제거 (0) | 2022.08.03 |