전체 글
-
안티치트 솔루션 개발에 필요한 기능 정리프로그래밍/해킹/보안 2025. 3. 27. 13:27
디버깅 탐지 및 방지세부 기능설명IsDebuggerPresentCheckRemoteDebuggerPresent유저모드 API 감지NtQueryInformationProcess 이용한 감지ProcessDebugPort, DebugFlags 등커널 모드 디버거 감지KdDebuggerEnabled, DbgkDebugObjectHandle 등 확인드라이버 레벨 방어ObRegisterCallbacks로 디버거 프로세스 차단 무결성 검사세부 기능설명게임 실행 파일메모리 무결성 검사CRC/HASH 비교커널 영역의 SSDT, IAT 후킹 여부 검사시스템 함수 무결성 검사DLL 인젝션 감지LoadImageNotifyRoutine + 모듈 리스트 체크 메모리 조작 감지세부 기능설명WPM(WriteProcessMemory..
-
안티치트 커널 드라이버에서 프로세스 행위 검사를 위한 정보 수집 콜백 항목 정리프로그래밍/해킹/보안 2025. 3. 26. 23:41
안티치트 분야쪽 면접 준비로 인해 관련 정보들을 이리저리 수집중이다.대부분 이전 회사에서 사용했던 스택과 비슷하지만 기억이 가물가물하다보니 관련 함수들 단위로 정리를 수행한다감시 대상설명등록 함수콜백 함수 시그니처필요 권한 / IRQL 레벨 비고프로세스 생성 / 종료프로세스 생성 및 종료 감지PsSetCreateProcessNotifyRoutineExPEPROCESSNotifyRoutinePASSIVE_LEVELXP 이상스레드 생성 / 종료스레드 시작 및 종료 감지PsSetCreateThreadNotifyRoutinePCREATE_THREAD_NOTIFY_ROUTINEPASSIVE_LEVELXP 이상이미지 로드 (DLL 등)DLL, EXE 등 메모리 로드 감지PsSetLoadImageNotifyRouti..
-
게임 보안 프로그램이 게임의 메모리 변조를 탐지 하는 방식프로그래밍/해킹/보안 2025. 3. 26. 16:28
게임 보안 프로그램은 치트나 핵을 탐지하기 위해 다양한 기술을 사용합니다. 그중 대표적인 기법 중 하나가 바로 메모리 무결성 검사, 특히 CRC(Cyclic Redundancy Check) 혹은 해시 기반 검사를 활용한 방식입니다. 게임 보호를 위한 CRC 검사 방식과, 보안 프로그램이 메모리를 감시하는 전체적인 구조에 대해 간단히 소개 합니다. CRC 검사란?CRC는 데이터의 무결성을 확인하는 데 사용되는 간단하면서도 강력한 해시 함수입니다. 게임 보안에서는 특정 메모리 영역이 변조되지 않았는지 주기적으로 검사하는 용도로 사용됩니다. 보안 프로그램의 일반적인 구조보안 모듈은 아래와 같은 구조로 게임 프로세스를 감시합니다:1. 자식 프로세스로 실행게임 실행 시 보안 모듈이 함께 실행되며, 부모 프로세스..
-
윈도우 프로세스 메모리 보호를 위한 방식 분석프로그래밍/해킹/보안 2025. 3. 25. 03:08
프로세스 메모리 보호를 위한 방식 몇가지 리서치 중인 내용들을 기록한다.단순히 유저모드 단에서 처리되는 방식은 다음과 같다. GlobalHookAgent.exe , HookingDLL.dll1. SetWindowsHook API 를 사용하여 윈도우가 존재하는 모든 프로세스에 DLL을 주입시킨다.2. 주입된 DLL은 DllMain 함수가 호출되고 내부 PROCESS_ATTACH 시점에 대상 프로세스들의 특정 윈도우 API를 후킹한다. (후킹 대상이 되는 API는 KERNELBASE!WriteProcessMemory)자 이제 여기부터가 코어로직이 들어가기 시작한다.전역 후킹 방식으로 현재 실행되는 모든 프로세스의 KERNELBASE!WriteProcessMemory API가 후킹이 되었다.그렇다면 만약, ..
-
Python에서 3D 시뮬레이션을 구현할 수 있는 라이브러리 비교개발 TIP/개발관련 자료조사 2025. 3. 4. 19:03
Python 에서 3D 시뮬레이터를 개발할 때 사용할 수 있는 다양한 라이브러리에 대한 조사를 진행하였다.내가 구현해야할 기능을 정리한다면 일단 UI 개발이 가능해야하기 떄문에 그에 맞춰 빠른 개발이 가능한 라이브러리를 조사한다.Open3D3D 점군(Point Cloud) 처리 최적화LiDAR, 센서 데이터 시각화Panda3DPython으로 쉽게 3D 환경 구축 가능실시간 3D 크레인 시뮬레이션Ursina간단한 코드로 3D UI 개발 가능인터랙티브 시뮬레이션 UIPyBullet물리 기반 시뮬레이션 엔진충돌 감지 및 물리 연산
-
🧰 C++11 std::atomic 표준 라이브러리프로그래밍/C/C++ 2023. 6. 1. 09:13
std::atomic은 멀티스레딩 환경에서 안전하게 변수를 접근할 수 있도록 하는 C++의 표준 라이브러리 클래스입니다. 이 클래스는 다양한 변수 타입(int, float, bool 등)에 대한 원자적인 조작(atomic operation)을 제공합니다.💡 std::atomic의 특징std::atomic은 다음과 같은 특징을 가지고 있습니다.멀티스레딩 환경에서 안전하게 변수를 접근할 수 있습니다. 이 클래스를 사용하면 변수에 대한 동기화를 수동으로 처리할 필요가 없으므로, 코드를 간단하게 유지할 수 있습니다.std::atomic은 원자적인 조작(atomic operation)을 제공합니다. 원자적인 조작은 하나의 스레드에서 실행 중인 코드가 중단되지 않고, 전체적으로 원자적으로 실행되는 코드 블록입니다..
-
DLL 라이브러리에서 (DLL Export Function) 함수 이름 숨기기프로그래밍/해킹/보안 2023. 4. 5. 21:37
C/C++ 기반으로 DLL을 만들어서 공유 라이브러리로 사용하면 어쩔 수 없이 C 함수를 노출시키는 경우가 흔하다.하지만 이거는 보안상 아주 위험한 짓이다. 왜냐? 일반적인 DLL 같은 경우는 `Export Table` 정보가 그대로 저장이 되기 때문이다.솔루션 회사에서 만약 본인들의 DLL 모듈의 Export 함수가 존재할 때, 이 함수의 정보를 외부로 노출 시킨다고 생각해보자.악의적인 목적으로 누군가가 DLL Export Table 정보를 쭉 확인하고 함수 이름으로 이 DLL의 기능을 추측할 수 있다는거다. 이때 그러면 DLL Export Function 이름을 대충 만들면되는거 아니야? 라고 한다면 할 말이 없다.SecretFunction_1, SecretFunction_2, SecretFunc..
-
러스트에서 단순 입출력 구현해보기프로그래밍/Rust 2023. 4. 3. 23:57
use std::io;fn main() { println!("Guess the number !"); println!("Please input your guess."); let mut guess = String::new(); io::stdin().read_line(&mut guess); println!("You guessed : {}", guess);}코드는 일단 위와 같습니다. 코드를 한줄한줄 해석해보자면, use std::io ;use 를 사용하여 명시적으로 해당 타입을 가져옵니다.std::io 는 사용자 입출력과 관련된 기능들을 제공합니다.let mut guess = String::new();let foo = barfoo 라는 변수를 선언합니다.foo 라는 변수를 bar 라..