Loading...
Loading...
Compare original and translation side by side
- World-to-Screen transformation
- Player/entity rendering
- Box ESP, skeleton ESP
- Item highlighting
- Radar/minimap hacks- 世界坐标转屏幕坐标变换
- 玩家/实体渲染
- 方框ESP、骨骼ESP
- 物品高亮
- 雷达/小地图作弊- Aimbot algorithms
- Triggerbot (auto-fire)
- No recoil/no spread
- Bullet prediction
- Silent aim- 自瞄算法
- 触发式自瞄(自动开火)
- 无后坐力/无子弹散布
- 子弹预测
- 静默自瞄- Speed hacks
- Fly hacks
- No clip
- Teleportation
- Bunny hop automation- 加速作弊
- 飞行作弊
- 穿墙
- 传送
- 自动连跳- Wallhacks
- Skin changers
- Unlock all
- Economy manipulation- 透视穿墙
- 皮肤修改器
- 解锁全部内容
- 经济系统操纵- OpenProcess + ReadProcessMemory
- NtReadVirtualMemory
- Memory-mapped files
- Shared memory sections- OpenProcess + ReadProcessMemory
- NtReadVirtualMemory
- 内存映射文件
- 共享内存段- Driver-based access
- Physical memory access
- MDL-based copying
- KeStackAttachProcess- 基于驱动的访问
- 物理内存访问
- 基于MDL的复制
- KeStackAttachProcess- DMA (Direct Memory Access)
- EFI runtime services
- Hypervisor-based access
- Hardware-based (FPGA)- DMA(直接内存访问)
- EFI运行时服务
- 基于虚拟机监控器的访问
- 基于硬件的访问(FPGA)// Data pointer swap example
NtUserGetObjectInformation
NtConvertBetweenAuxiliaryCounterAndPerformanceCounter
Win32k syscall hooks// 数据指针交换示例
NtUserGetObjectInformation
NtConvertBetweenAuxiliaryCounterAndPerformanceCounter
Win32k系统调用挂钩Vector2 WorldToScreen(Vector3 worldPos, Matrix viewMatrix) {
Vector4 clipCoords;
clipCoords.x = worldPos.x * viewMatrix[0] + worldPos.y * viewMatrix[4] +
worldPos.z * viewMatrix[8] + viewMatrix[12];
clipCoords.y = worldPos.x * viewMatrix[1] + worldPos.y * viewMatrix[5] +
worldPos.z * viewMatrix[9] + viewMatrix[13];
clipCoords.w = worldPos.x * viewMatrix[3] + worldPos.y * viewMatrix[7] +
worldPos.z * viewMatrix[11] + viewMatrix[15];
if (clipCoords.w < 0.1f) return invalid;
Vector2 NDC;
NDC.x = clipCoords.x / clipCoords.w;
NDC.y = clipCoords.y / clipCoords.w;
Vector2 screen;
screen.x = (screenWidth / 2) * (NDC.x + 1);
screen.y = (screenHeight / 2) * (1 - NDC.y);
return screen;
}Vector2 WorldToScreen(Vector3 worldPos, Matrix viewMatrix) {
Vector4 clipCoords;
clipCoords.x = worldPos.x * viewMatrix[0] + worldPos.y * viewMatrix[4] +
worldPos.z * viewMatrix[8] + viewMatrix[12];
clipCoords.y = worldPos.x * viewMatrix[1] + worldPos.y * viewMatrix[5] +
worldPos.z * viewMatrix[9] + viewMatrix[13];
clipCoords.w = worldPos.x * viewMatrix[3] + worldPos.y * viewMatrix[7] +
worldPos.z * viewMatrix[11] + viewMatrix[15];
if (clipCoords.w < 0.1f) return invalid;
Vector2 NDC;
NDC.x = clipCoords.x / clipCoords.w;
NDC.y = clipCoords.y / clipCoords.w;
Vector2 screen;
screen.x = (screenWidth / 2) * (NDC.x + 1);
screen.y = (screenHeight / 2) * (1 - NDC.y);
return screen;
}1. Pattern scan for signatures
2. Read game memory externally
3. Process data in separate process
4. Render overlay or use input simulation1. 特征码扫描查找签名
2. 外部读取游戏内存
3. 在独立进程中处理数据
4. 渲染覆盖层或使用输入模拟1. Inject into game process
2. Hook rendering functions
3. Access game objects directly
4. Render through game's graphics context1. 注入到游戏进程
2. 挂钩渲染函数
3. 直接访问游戏对象
4. 通过游戏的图形上下文进行渲染https://raw.githubusercontent.com/gmh5225/awesome-game-security/refs/heads/main/README.mdhttps://raw.githubusercontent.com/gmh5225/awesome-game-security/refs/heads/main/README.md