
이 프로젝트가 하는 일
CS2 External ESP는 메모리 읽기, 월드-투-스크린 투영, 투명 레이어 창을 교육적으로 연구하기 위한 Windows 사용자 영역 오버레이 프로젝트입니다. 게임 프로세스에 코드를 주입하는 대신 별도의 실행 파일로 작동하며, 사람이 읽을 수 있는 JSON 파일이 포함된 로컬 구성 디렉터리를 사용합니다.
저장소는 Windows 10 및 Windows 11 지원, 독립 실행형 실행 파일, 외부 오버레이 표시기, 시그니처 기반 오프셋 확인, 진단 로깅, 다양한 시각 및 인터페이스 모듈을 설명합니다. 이 프로젝트는 보호된 상용 게임과 상호 작용하므로 코드 검토, 오프라인 실험 또는 모든 참가자와 관리자가 명시적으로 동의한 사설 환경에서만 사용하세요.
중요: VAC 보안 매치메이킹, Faceit, ESEA 또는 기타 보호된 공개 서비스에서는 이 소프트웨어를 실행하지 마세요. 외부 도구도 동작을 통해 탐지될 수 있으며, 온라인에서 사용하면 계정 또는 세션 제재를 받을 수 있습니다.
아키텍처 작동 방식
README는 애플리케이션을 서로 협력하는 구성 요소로 나눕니다. 실행 파일을 블랙박스로 취급하는 것보다 이러한 구성 요소를 이해하는 것이 더 유용합니다.
리졸버
시작할 때 리졸버는 게임 프로세스를 찾고 로드된 모듈을 검사합니다. 시그니처 패턴을 사용해 엔터티 목록과 뷰 행렬 같은 주소를 찾습니다. 이러한 값은 게임 업데이트 후 무효화될 수 있으므로 프로젝트는 시그니처 데이터를 기본 실행 파일 외부에 보관하고 debug.log에 실패 내용을 기록합니다.
샘플러
샘플러는 관련 데이터의 스냅샷을 주기적으로 읽어 더블 버퍼 구조에 저장합니다. README에 따르면 기본 간격은 8밀리초입니다. 더블 버퍼링은 렌더러가 서로 다른 샘플링 주기의 값을 결합하지 않도록 하여 일관되지 않은 프레임을 방지하는 데 도움이 됩니다.
프레젠터
프레젠터는 게임 클라이언트 영역에 맞춰진 테두리 없는 클릭 통과형 최상위 창을 관리합니다. 오프스크린 비트맵에 렌더링한 결과를 레이어드 창을 통해 표시합니다. 문서화된 구현은 게임의 렌더링 파이프라인 내부에 그리는 대신 GDI+와 UpdateLayeredWindow를 사용합니다.
월드-투-스크린 투영
월드 좌표는 현재 뷰 행렬을 사용해 화면 좌표로 변환됩니다. 근접 평면 뒤에 있는 점은 제외되고, 유효한 좌표는 픽셀로 변환됩니다. 상자가 어긋나거나 마커가 흔들리는 경우 일반적으로 오래되었거나 잘못된 투영 데이터를 의미합니다.
구성 및 진단
구성 파일은 ./config/ 아래에 일반 JSON으로 저장됩니다. 오버레이는 디버그 로그, 단축키 처리, 이름이 지정된 프로필, 시그니처 다시 로드 기능도 제공합니다. 이러한 기능은 구성 중심의 Windows 도구와 오류 보고를 연구하는 데 프로젝트를 적합하게 만듭니다.
시스템 요구 사항
- Windows 10 21H2 또는 Windows 11 23H2.
- 최소 x86_64 듀얼 코어 프로세서. README는 쿼드 코어 CPU를 권장합니다.
- 최소 4GB RAM, 8GB 이상 권장.
- CS2를 렌더링할 수 있는 GPU. 문서화된 오버레이 경로는 GPU 가속 렌더링이 아닌 GDI를 사용합니다.
- 최신 CS2 빌드와 가장 안정적인 오버레이 정렬을 위한 테두리 없는 창 모드.
- 실행 파일이 독립 실행형으로 설명되어 있으므로 별도의 .NET 또는 런타임 설치 불필요.
안전한 설치 및 설정
- 먼저 저장소를 검토하세요. 릴리스 아카이브를 다루기 전에 사용 지침, 알려진 문제, 시그니처 관련 참고 사항을 읽으세요.
- 소스 검사를 우선하세요. 미리 빌드된 실행 파일을 신뢰하지 못한다면 직접 프로젝트를 검사하거나 빌드하세요. README는
build/아래의 빌드 스크립트를 참조합니다. - 격리된 테스트 환경을 사용하세요. 실험은 오프라인 또는 명시적으로 승인된 사설 서버로 제한하세요. 공식 매치메이킹이나 타사 안티치트 서비스에서는 소프트웨어를 사용하지 마세요.
- 전용 폴더에 압축을 푸세요. 실행 파일,
config/, 시그니처 파일, 로그 파일을 함께 보관하여 상대 경로와 프로필을 예측 가능하게 유지하세요. - 승인된 테스트 시나리오에서만 게임을 시작하세요. README는 외부 프로세스를 실행하기 전에 메인 메뉴가 표시될 때까지 기다릴 것을 권장합니다.
- 실행 파일을 시작하고 로그를 검사하세요. 빈 오버레이를 렌더링 문제로 판단하기 전에 프로세스가 연결되고 시그니처 확인이 성공했는지 확인하세요.
알 수 없는 바이너리를 강제로 실행하기 위해 보안 제어를 비활성화하거나 예외를 추가하지 마세요. README는 프로세스 읽기와 레이어드 창이 휴리스틱 안티바이러스 경고를 유발할 수 있다고 설명합니다. 더 안전한 대응은 다운로드한 실행 파일을 무조건 신뢰하는 대신 소스와 빌드 출처를 확인하는 것입니다.
기본 오프라인 사용법
통제된 시연에서는 가장 개입이 적은 시각 및 진단 기능부터 시작하세요. 테두리 없는 창 모드를 사용하고 게임을 메인 메뉴까지 실행한 다음 오버레이를 시작하세요. 프레젠터에 포커스가 있다면 INSERT를 눌러 문서화된 오버레이 메뉴를 여세요.
승인된 오프라인 환경에서만 F1을 사용해 시각 오버레이 전체 스위치를 테스트하고, F2를 사용해 스켈레톤 하위 모듈만 테스트하세요. README에 따르면 END는 프로세스를 정상적으로 종료하는 긴급 키입니다. 오버레이가 예상치 않게 동작할 때 사용하세요.
구성 실험을 위해 JSON 프로필을 실행 파일과 같은 디렉터리에 보관하고 각 프로필이 최상위 객체를 포함하는 유효한 JSON인지 확인하세요. F4는 프로필을 알파벳순으로 순환하고, F5는 디스크에서 시그니처를 다시 로드하며, F6은 오프셋 정보를 debug.log에 기록합니다.
사용 가능한 모듈 이해하기
README는 모듈을 다섯 가지 영역으로 분류합니다. 다음 요약은 기능 목록 작성과 코드 연구를 위한 것이며, 다른 플레이어를 상대로 사용하기 위한 것이 아닙니다.
- 시각적 ESP: 박스, 스켈레톤, 체력 바, 이름, 무기 식별자, 거리 표시, 화면 밖 표시기
- 조준 보조: 대상 선택, 가시성 확인, 스무딩, 본 선택, 반동 관련 로직. 이러한 기능은 통제된 연구 환경 외에서는 비활성화해야 합니다.
- 플레이어 및 경제 관련 도구: 섬광 효과, 스코프 조준선 렌더링, 속도 추적, 폭탄 타이밍, 수류탄 궤적 시각화
- 오버레이 및 인터페이스 도구: 계층형 프레젠터, 오버레이 내 단축키 메뉴, JSON 프로필 전환, 디버그 로깅
- 정찰 도구: 레이더 정보, 소리 표시기, 관전자 열거 기능. 이러한 기능은 경쟁전이나 공개 플레이에서 특히 부적절합니다.
구성 팁
프로필을 단순하게 유지하기
시각적 렌더링 프로필과 진단 전용 프로필처럼 승인된 실험마다 별도의 JSON 프로필을 사용하세요. 파일 이름은 문서화된 *.json 패턴에 맞게 일관되게 유지하고, 프로필을 전환하기 전에 파일을 검증하세요.
기본 샘플링 간격 유지하기
문서에 기록된 기본값은 8밀리초입니다. 간격을 늘리면 느린 시스템에서 CPU 사용량을 줄일 수 있고, 줄이면 추가 비용을 감수하는 대신 응답성이 향상될 수 있습니다. 한 번에 하나의 값만 변경하고 결과를 테스트 노트에 기록하세요.
테두리 없는 창 모드 사용하기
README는 전체 화면 독점 모드를 계층형 오버레이 문제의 일반적인 원인으로 지적합니다. 테두리 없는 모드를 사용하면 클라이언트 영역 좌표와 프레젠터 창을 비교하기도 쉽습니다.
로그를 유지하기
테스트 사이에 debug.log를 삭제하지 마세요. 리졸버 상태, 시그니처 실패, 스레드 상태, 오프셋 덤프를 통해 연결 문제와 투영 또는 표시 문제를 구분할 수 있습니다.
문제 해결
오버레이는 표시되지만 데이터가 없음
debug.log에서 시그니처 불일치를 확인하세요. 게임 업데이트로 모듈 레이아웃이 변경되어 현재 시그니처 파일이 무효화될 수 있습니다. 교체할 시그니처 데이터가 신뢰할 수 있고 호환되는 출처에서 제공되었는지 확인한 후에만 문서화된 다시 로드 작업을 사용하세요.
카메라 이동 중 박스가 흔들림
README는 이 현상의 원인을 오래된 뷰 행렬 데이터로 설명합니다. 먼저 올바른 디스플레이 모드를 확인하고 리졸버 출력을 검사하세요. 그다음에만 샘플러 간격 변경을 고려하세요.
애플리케이션 전환 후 오버레이가 깜박임
문서에 따르면 프레젠터는 포그라운드 변경과 크기 조정 이벤트를 추적합니다. 필요하면 INSERT를 두 번 눌러 메뉴를 다시 연 다음, 오버레이 창이 여전히 게임 클라이언트 사각형과 일치하는지 확인하세요.
프로필 전환에서 파일 하나를 건너뜀
파일 이름이 .json으로 끝나는지, 파일에 유효한 JSON이 포함되어 있는지, 최상위 값이 객체인지 확인하세요. 후행 쉼표는 구문 분석 실패의 일반적인 원인입니다.
성능 저하
README는 스켈레톤과 화면 밖 렌더링을 비교적 비용이 큰 모듈로 지적합니다. 먼저 선택적 시각 구성 요소를 비활성화한 다음 샘플러 간격을 늘리세요. 각 테스트의 결과를 명확하게 확인할 수 있도록 변경 사항을 되돌릴 수 있는 상태로 유지하세요.
개발 및 유지 관리 참고 사항
시그니처 리졸버는 프로젝트에서 유지 관리에 가장 민감한 부분입니다. 게임이 변경되면 리더가 필요한 데이터를 더 이상 찾지 못할 수 있습니다. 저장소의 설계는 잘못된 정보를 조용히 렌더링하는 대신 외부 시그니처 파일과 로그 메시지를 통해 이러한 실패를 드러냅니다.
로드맵에는 더 빠른 D3D11 표시 경로, 다중 클라이언트 구성 다시 로드, 맵별 재정의, 향상된 레이더 배경, 커뮤니티 시그니처 가져오기가 언급되어 있습니다. 이러한 항목은 계획됨, 진행 중, 조사됨 또는 시작되지 않음으로 등록되어 있으므로, 저장소에서 구현을 확인하기 전에는 사용 가능한 기능으로 간주해서는 안 됩니다.
책임 있는 사용 체크리스트
- 오프라인 연습 또는 관리자의 명시적 허가를 받은 비공개 서버에서만 사용하세요.
- 공식 매치메이킹이나 타사 안티 치트 플랫폼에서 프로젝트를 사용하지 마세요.
- 빌드를 서비스로 배포하거나 마켓플레이스용으로 프로젝트를 재패키징하지 마세요.
- 외부 프로세스가 탐지되지 않는다고 가정하지 마세요.
- 검증되지 않은 바이너리보다 소스 검토와 재현 가능한 빌드를 우선하세요.
- 결함을 보고할 때는 관련 로그 출력과 승인된 테스트 환경을 함께 설명하세요.
결론
CS2 External ESP는 Windows 오버레이 파이프라인의 구체적인 예를 제공합니다. 데이터를 확인하고, 일관된 스냅샷으로 샘플링하고, 월드 좌표를 화면에 투영한 다음, 계층형 창을 통해 렌더링하는 방식입니다. 구성 파일, 단축키, 디버그 로그는 네이티브 유틸리티를 검사 가능하고 유지 관리 가능한 상태로 유지하는 방법도 보여 줍니다.
이 프로젝트를 연구하는 가장 책임 있는 방법은 오프라인 소프트웨어 엔지니어링 실습으로 다루는 것입니다. 프로세스 격리, 좌표 변환, 구성 검증, 진단에 집중하고, 모든 실험은 보호된 경쟁 서비스와 다른 플레이어로부터 멀리 떨어진 곳에서 진행하세요.
