Compare commits

...

3 Commits

Author SHA1 Message Date
a2x 13836dd019 Game update (14015) (2) 2024-06-18 12:47:46 +10:00
a2x bfc2ceb13d Add tests for offsets 2024-06-18 12:47:28 +10:00
a2x 3590d4412c Rename some schema struct fields 2024-06-18 12:41:12 +10:00
75 changed files with 527 additions and 351 deletions

View File

@ -1,6 +1,7 @@
# cs2-dumper
An external offset/interface dumper for Counter-Strike 2, with support for both Windows & Linux. Powered by [memflow](https://github.com/memflow/memflow).
An external offset/interface dumper for Counter-Strike 2, with support for both Windows & Linux. Powered
by [memflow](https://github.com/memflow/memflow).
The native Linux version is available in the [linux](https://github.com/a2x/cs2-dumper/tree/linux) branch.
@ -15,7 +16,10 @@ toolchain must be installed.
1. Ensure the game process is running (Being in the main menu should suffice).
2. Run the `cs2-dumper` executable (Note that some memflow connectors may require elevated privileges).
When running the executable without providing an optional memflow connector name, it will default to using the [memflow-native](https://github.com/memflow/memflow-native) cross-platform OS layer to read the memory of the game process. If you wish to use an existing memflow connector instead, pass the `connector` and optional `connector-args` arguments to the program.
_Note:_ If you run the executable without specifying an optional memflow connector name, it will automatically use the
[memflow-native](https://github.com/memflow/memflow-native) OS layer to read the memory of the game process. If you
wish to use an existing memflow connector instead, you can pass the `connector` and optional `connector-args` arguments
to the program.
E.g. `./cs2-dumper -c pcileech -a device=fpga -vvv`
@ -31,6 +35,10 @@ E.g. `./cs2-dumper -c pcileech -a device=fpga -vvv`
- `-h, --help`: Print help.
- `-V, --version`: Print version.
## Running Tests
To run tests, use the following command: `cargo test -- --nocapture`.
## License
Licensed under the MIT license ([LICENSE](./LICENSE)).

View File

@ -1,5 +1,5 @@
// Generated using https://github.com/a2x/cs2-dumper
// 2024-06-14 04:06:49.525200800 UTC
// 2024-06-18 02:29:36.184201900 UTC
namespace CS2Dumper.Schemas {
// Module: animationsystem.dll

View File

@ -1,5 +1,5 @@
// Generated using https://github.com/a2x/cs2-dumper
// 2024-06-14 04:06:49.525200800 UTC
// 2024-06-18 02:29:36.184201900 UTC
#pragma once

View File

@ -1,5 +1,5 @@
// Generated using https://github.com/a2x/cs2-dumper
// 2024-06-14 04:06:49.525200800 UTC
// 2024-06-18 02:29:36.184201900 UTC
#![allow(non_upper_case_globals, non_camel_case_types, non_snake_case, unused)]

View File

@ -1,24 +1,24 @@
// Generated using https://github.com/a2x/cs2-dumper
// 2024-06-14 04:06:49.525200800 UTC
// 2024-06-18 02:29:36.184201900 UTC
namespace CS2Dumper {
// Module: client.dll
public static class Buttons {
public const nint attack = 0x1813100;
public const nint attack2 = 0x1813190;
public const nint back = 0x18133D0;
public const nint duck = 0x18136A0;
public const nint forward = 0x1813340;
public const nint jump = 0x1813610;
public const nint left = 0x1813460;
public const nint lookatweapon = 0x1A1E0D0;
public const nint reload = 0x1813070;
public const nint right = 0x18134F0;
public const nint showscores = 0x1A1DFB0;
public const nint sprint = 0x1812FE0;
public const nint turnleft = 0x1813220;
public const nint turnright = 0x18132B0;
public const nint use = 0x1813580;
public const nint zoom = 0x1A1E040;
public const nint attack = 0x1813130;
public const nint attack2 = 0x18131C0;
public const nint back = 0x1813400;
public const nint duck = 0x18136D0;
public const nint forward = 0x1813370;
public const nint jump = 0x1813640;
public const nint left = 0x1813490;
public const nint lookatweapon = 0x1A1E350;
public const nint reload = 0x18130A0;
public const nint right = 0x1813520;
public const nint showscores = 0x1A1E230;
public const nint sprint = 0x1813010;
public const nint turnleft = 0x1813250;
public const nint turnright = 0x18132E0;
public const nint use = 0x18135B0;
public const nint zoom = 0x1A1E2C0;
}
}

View File

@ -1,5 +1,5 @@
// Generated using https://github.com/a2x/cs2-dumper
// 2024-06-14 04:06:49.525200800 UTC
// 2024-06-18 02:29:36.184201900 UTC
#pragma once
@ -8,21 +8,21 @@
namespace cs2_dumper {
// Module: client.dll
namespace buttons {
constexpr std::ptrdiff_t attack = 0x1813100;
constexpr std::ptrdiff_t attack2 = 0x1813190;
constexpr std::ptrdiff_t back = 0x18133D0;
constexpr std::ptrdiff_t duck = 0x18136A0;
constexpr std::ptrdiff_t forward = 0x1813340;
constexpr std::ptrdiff_t jump = 0x1813610;
constexpr std::ptrdiff_t left = 0x1813460;
constexpr std::ptrdiff_t lookatweapon = 0x1A1E0D0;
constexpr std::ptrdiff_t reload = 0x1813070;
constexpr std::ptrdiff_t right = 0x18134F0;
constexpr std::ptrdiff_t showscores = 0x1A1DFB0;
constexpr std::ptrdiff_t sprint = 0x1812FE0;
constexpr std::ptrdiff_t turnleft = 0x1813220;
constexpr std::ptrdiff_t turnright = 0x18132B0;
constexpr std::ptrdiff_t use = 0x1813580;
constexpr std::ptrdiff_t zoom = 0x1A1E040;
constexpr std::ptrdiff_t attack = 0x1813130;
constexpr std::ptrdiff_t attack2 = 0x18131C0;
constexpr std::ptrdiff_t back = 0x1813400;
constexpr std::ptrdiff_t duck = 0x18136D0;
constexpr std::ptrdiff_t forward = 0x1813370;
constexpr std::ptrdiff_t jump = 0x1813640;
constexpr std::ptrdiff_t left = 0x1813490;
constexpr std::ptrdiff_t lookatweapon = 0x1A1E350;
constexpr std::ptrdiff_t reload = 0x18130A0;
constexpr std::ptrdiff_t right = 0x1813520;
constexpr std::ptrdiff_t showscores = 0x1A1E230;
constexpr std::ptrdiff_t sprint = 0x1813010;
constexpr std::ptrdiff_t turnleft = 0x1813250;
constexpr std::ptrdiff_t turnright = 0x18132E0;
constexpr std::ptrdiff_t use = 0x18135B0;
constexpr std::ptrdiff_t zoom = 0x1A1E2C0;
}
}

View File

@ -1,20 +1,20 @@
{
"client.dll": {
"attack": 25243904,
"attack2": 25244048,
"back": 25244624,
"duck": 25245344,
"forward": 25244480,
"jump": 25245200,
"left": 25244768,
"lookatweapon": 27386064,
"reload": 25243760,
"right": 25244912,
"showscores": 27385776,
"sprint": 25243616,
"turnleft": 25244192,
"turnright": 25244336,
"use": 25245056,
"zoom": 27385920
"attack": 25243952,
"attack2": 25244096,
"back": 25244672,
"duck": 25245392,
"forward": 25244528,
"jump": 25245248,
"left": 25244816,
"lookatweapon": 27386704,
"reload": 25243808,
"right": 25244960,
"showscores": 27386416,
"sprint": 25243664,
"turnleft": 25244240,
"turnright": 25244384,
"use": 25245104,
"zoom": 27386560
}
}

View File

@ -1,26 +1,26 @@
// Generated using https://github.com/a2x/cs2-dumper
// 2024-06-14 04:06:49.525200800 UTC
// 2024-06-18 02:29:36.184201900 UTC
#![allow(non_upper_case_globals, unused)]
pub mod cs2_dumper {
// Module: client.dll
pub mod buttons {
pub const attack: usize = 0x1813100;
pub const attack2: usize = 0x1813190;
pub const back: usize = 0x18133D0;
pub const duck: usize = 0x18136A0;
pub const forward: usize = 0x1813340;
pub const jump: usize = 0x1813610;
pub const left: usize = 0x1813460;
pub const lookatweapon: usize = 0x1A1E0D0;
pub const reload: usize = 0x1813070;
pub const right: usize = 0x18134F0;
pub const showscores: usize = 0x1A1DFB0;
pub const sprint: usize = 0x1812FE0;
pub const turnleft: usize = 0x1813220;
pub const turnright: usize = 0x18132B0;
pub const r#use: usize = 0x1813580;
pub const zoom: usize = 0x1A1E040;
pub const attack: usize = 0x1813130;
pub const attack2: usize = 0x18131C0;
pub const back: usize = 0x1813400;
pub const duck: usize = 0x18136D0;
pub const forward: usize = 0x1813370;
pub const jump: usize = 0x1813640;
pub const left: usize = 0x1813490;
pub const lookatweapon: usize = 0x1A1E350;
pub const reload: usize = 0x18130A0;
pub const right: usize = 0x1813520;
pub const showscores: usize = 0x1A1E230;
pub const sprint: usize = 0x1813010;
pub const turnleft: usize = 0x1813250;
pub const turnright: usize = 0x18132E0;
pub const r#use: usize = 0x18135B0;
pub const zoom: usize = 0x1A1E2C0;
}
}

View File

@ -1,5 +1,5 @@
// Generated using https://github.com/a2x/cs2-dumper
// 2024-06-14 04:06:49.525200800 UTC
// 2024-06-18 02:29:36.184201900 UTC
namespace CS2Dumper.Schemas {
// Module: client.dll

View File

@ -1,5 +1,5 @@
// Generated using https://github.com/a2x/cs2-dumper
// 2024-06-14 04:06:49.525200800 UTC
// 2024-06-18 02:29:36.184201900 UTC
#pragma once

View File

@ -1,5 +1,5 @@
// Generated using https://github.com/a2x/cs2-dumper
// 2024-06-14 04:06:49.525200800 UTC
// 2024-06-18 02:29:36.184201900 UTC
#![allow(non_upper_case_globals, non_camel_case_types, non_snake_case, unused)]

View File

@ -1,5 +1,5 @@
// Generated using https://github.com/a2x/cs2-dumper
// 2024-06-14 04:06:49.525200800 UTC
// 2024-06-18 02:29:36.184201900 UTC
namespace CS2Dumper.Schemas {
// Module: engine2.dll

View File

@ -1,5 +1,5 @@
// Generated using https://github.com/a2x/cs2-dumper
// 2024-06-14 04:06:49.525200800 UTC
// 2024-06-18 02:29:36.184201900 UTC
#pragma once

View File

@ -1,5 +1,5 @@
// Generated using https://github.com/a2x/cs2-dumper
// 2024-06-14 04:06:49.525200800 UTC
// 2024-06-18 02:29:36.184201900 UTC
#![allow(non_upper_case_globals, non_camel_case_types, non_snake_case, unused)]

View File

@ -1,5 +1,5 @@
// Generated using https://github.com/a2x/cs2-dumper
// 2024-06-14 04:06:49.525200800 UTC
// 2024-06-18 02:29:36.184201900 UTC
namespace CS2Dumper.Schemas {
// Module: host.dll

View File

@ -1,5 +1,5 @@
// Generated using https://github.com/a2x/cs2-dumper
// 2024-06-14 04:06:49.525200800 UTC
// 2024-06-18 02:29:36.184201900 UTC
#pragma once

View File

@ -1,5 +1,5 @@
// Generated using https://github.com/a2x/cs2-dumper
// 2024-06-14 04:06:49.525200800 UTC
// 2024-06-18 02:29:36.184201900 UTC
#![allow(non_upper_case_globals, non_camel_case_types, non_snake_case, unused)]

View File

@ -1,4 +1,4 @@
{
"build_number": 14015,
"timestamp": "2024-06-14T04:06:49.525200800+00:00"
"timestamp": "2024-06-18T02:29:36.184201900+00:00"
}

View File

@ -1,5 +1,5 @@
// Generated using https://github.com/a2x/cs2-dumper
// 2024-06-14 04:06:49.525200800 UTC
// 2024-06-18 02:29:36.184201900 UTC
namespace CS2Dumper.Interfaces {
// Module: animationsystem.dll
@ -9,14 +9,14 @@ namespace CS2Dumper.Interfaces {
}
// Module: client.dll
public static class ClientDll {
public const nint ClientToolsInfo_001 = 0x7466B0;
public const nint ClientToolsInfo_001 = 0x7466C0;
public const nint EmptyWorldService001_Client = 0x481E40;
public const nint GameClientExports001 = 0x7466C0;
public const nint LegacyGameUI001 = 0x8DEAF0;
public const nint Source2Client002 = 0x7466D0;
public const nint GameClientExports001 = 0x7466D0;
public const nint LegacyGameUI001 = 0x8DEEE0;
public const nint Source2Client002 = 0x7466E0;
public const nint Source2ClientConfig001 = 0x465240;
public const nint Source2ClientPrediction001 = 0x7C9980;
public const nint Source2ClientUI001 = 0x8C53C0;
public const nint Source2ClientPrediction001 = 0x7C9990;
public const nint Source2ClientUI001 = 0x8C57B0;
}
// Module: engine2.dll
public static class Engine2Dll {
@ -159,12 +159,12 @@ namespace CS2Dumper.Interfaces {
public static class ServerDll {
public const nint EmptyWorldService001_Server = 0x564D40;
public const nint EntitySubclassUtilsV001 = 0x2BD310;
public const nint NavGameTest001 = 0xA57040;
public const nint ServerToolsInfo_001 = 0x8490A0;
public const nint Source2GameClients001 = 0x8490B0;
public const nint NavGameTest001 = 0xA57050;
public const nint ServerToolsInfo_001 = 0x8490B0;
public const nint Source2GameClients001 = 0x8490C0;
public const nint Source2GameDirector001 = 0x124330;
public const nint Source2GameEntities001 = 0x8490C0;
public const nint Source2Server001 = 0x8490D0;
public const nint Source2GameEntities001 = 0x8490D0;
public const nint Source2Server001 = 0x8490E0;
public const nint Source2ServerConfig001 = 0x54FA60;
public const nint customnavsystem001 = 0x22BE60;
}
@ -181,26 +181,26 @@ namespace CS2Dumper.Interfaces {
}
// Module: steamclient64.dll
public static class Steamclient64Dll {
public const nint CLIENTENGINE_INTERFACE_VERSION005 = 0x872BD0;
public const nint IVALIDATE001 = 0x876D20;
public const nint SteamClient006 = 0x6708F0;
public const nint SteamClient007 = 0x670900;
public const nint SteamClient008 = 0x670910;
public const nint SteamClient009 = 0x670920;
public const nint SteamClient010 = 0x670930;
public const nint SteamClient011 = 0x670940;
public const nint SteamClient012 = 0x670950;
public const nint SteamClient013 = 0x670960;
public const nint SteamClient014 = 0x670970;
public const nint SteamClient015 = 0x670980;
public const nint SteamClient016 = 0x670990;
public const nint SteamClient017 = 0x6709A0;
public const nint SteamClient018 = 0x6709B0;
public const nint SteamClient019 = 0x6709C0;
public const nint SteamClient020 = 0x6709D0;
public const nint SteamClient021 = 0x6709E0;
public const nint p2pvoice002 = 0xDA1A0;
public const nint p2pvoicesingleton002 = 0xD6C00;
public const nint CLIENTENGINE_INTERFACE_VERSION005 = 0x8A8BB0;
public const nint IVALIDATE001 = 0x8AD030;
public const nint SteamClient006 = 0x693680;
public const nint SteamClient007 = 0x693690;
public const nint SteamClient008 = 0x6936A0;
public const nint SteamClient009 = 0x6936B0;
public const nint SteamClient010 = 0x6936C0;
public const nint SteamClient011 = 0x6936D0;
public const nint SteamClient012 = 0x6936E0;
public const nint SteamClient013 = 0x6936F0;
public const nint SteamClient014 = 0x693700;
public const nint SteamClient015 = 0x693710;
public const nint SteamClient016 = 0x693720;
public const nint SteamClient017 = 0x693730;
public const nint SteamClient018 = 0x693740;
public const nint SteamClient019 = 0x693750;
public const nint SteamClient020 = 0x693760;
public const nint SteamClient021 = 0x693770;
public const nint p2pvoice002 = 0xDA9A0;
public const nint p2pvoicesingleton002 = 0xD72B0;
}
// Module: tier0.dll
public static class Tier0Dll {
@ -232,8 +232,8 @@ namespace CS2Dumper.Interfaces {
}
// Module: vstdlib_s64.dll
public static class VstdlibS64Dll {
public const nint IVALIDATE001 = 0x25140;
public const nint VEngineCvar002 = 0x5760;
public const nint IVALIDATE001 = 0x26B40;
public const nint VEngineCvar002 = 0x6060;
}
// Module: worldrenderer.dll
public static class WorldrendererDll {

View File

@ -1,5 +1,5 @@
// Generated using https://github.com/a2x/cs2-dumper
// 2024-06-14 04:06:49.525200800 UTC
// 2024-06-18 02:29:36.184201900 UTC
#pragma once
@ -14,14 +14,14 @@ namespace cs2_dumper {
}
// Module: client.dll
namespace client_dll {
constexpr std::ptrdiff_t ClientToolsInfo_001 = 0x7466B0;
constexpr std::ptrdiff_t ClientToolsInfo_001 = 0x7466C0;
constexpr std::ptrdiff_t EmptyWorldService001_Client = 0x481E40;
constexpr std::ptrdiff_t GameClientExports001 = 0x7466C0;
constexpr std::ptrdiff_t LegacyGameUI001 = 0x8DEAF0;
constexpr std::ptrdiff_t Source2Client002 = 0x7466D0;
constexpr std::ptrdiff_t GameClientExports001 = 0x7466D0;
constexpr std::ptrdiff_t LegacyGameUI001 = 0x8DEEE0;
constexpr std::ptrdiff_t Source2Client002 = 0x7466E0;
constexpr std::ptrdiff_t Source2ClientConfig001 = 0x465240;
constexpr std::ptrdiff_t Source2ClientPrediction001 = 0x7C9980;
constexpr std::ptrdiff_t Source2ClientUI001 = 0x8C53C0;
constexpr std::ptrdiff_t Source2ClientPrediction001 = 0x7C9990;
constexpr std::ptrdiff_t Source2ClientUI001 = 0x8C57B0;
}
// Module: engine2.dll
namespace engine2_dll {
@ -164,12 +164,12 @@ namespace cs2_dumper {
namespace server_dll {
constexpr std::ptrdiff_t EmptyWorldService001_Server = 0x564D40;
constexpr std::ptrdiff_t EntitySubclassUtilsV001 = 0x2BD310;
constexpr std::ptrdiff_t NavGameTest001 = 0xA57040;
constexpr std::ptrdiff_t ServerToolsInfo_001 = 0x8490A0;
constexpr std::ptrdiff_t Source2GameClients001 = 0x8490B0;
constexpr std::ptrdiff_t NavGameTest001 = 0xA57050;
constexpr std::ptrdiff_t ServerToolsInfo_001 = 0x8490B0;
constexpr std::ptrdiff_t Source2GameClients001 = 0x8490C0;
constexpr std::ptrdiff_t Source2GameDirector001 = 0x124330;
constexpr std::ptrdiff_t Source2GameEntities001 = 0x8490C0;
constexpr std::ptrdiff_t Source2Server001 = 0x8490D0;
constexpr std::ptrdiff_t Source2GameEntities001 = 0x8490D0;
constexpr std::ptrdiff_t Source2Server001 = 0x8490E0;
constexpr std::ptrdiff_t Source2ServerConfig001 = 0x54FA60;
constexpr std::ptrdiff_t customnavsystem001 = 0x22BE60;
}
@ -186,26 +186,26 @@ namespace cs2_dumper {
}
// Module: steamclient64.dll
namespace steamclient64_dll {
constexpr std::ptrdiff_t CLIENTENGINE_INTERFACE_VERSION005 = 0x872BD0;
constexpr std::ptrdiff_t IVALIDATE001 = 0x876D20;
constexpr std::ptrdiff_t SteamClient006 = 0x6708F0;
constexpr std::ptrdiff_t SteamClient007 = 0x670900;
constexpr std::ptrdiff_t SteamClient008 = 0x670910;
constexpr std::ptrdiff_t SteamClient009 = 0x670920;
constexpr std::ptrdiff_t SteamClient010 = 0x670930;
constexpr std::ptrdiff_t SteamClient011 = 0x670940;
constexpr std::ptrdiff_t SteamClient012 = 0x670950;
constexpr std::ptrdiff_t SteamClient013 = 0x670960;
constexpr std::ptrdiff_t SteamClient014 = 0x670970;
constexpr std::ptrdiff_t SteamClient015 = 0x670980;
constexpr std::ptrdiff_t SteamClient016 = 0x670990;
constexpr std::ptrdiff_t SteamClient017 = 0x6709A0;
constexpr std::ptrdiff_t SteamClient018 = 0x6709B0;
constexpr std::ptrdiff_t SteamClient019 = 0x6709C0;
constexpr std::ptrdiff_t SteamClient020 = 0x6709D0;
constexpr std::ptrdiff_t SteamClient021 = 0x6709E0;
constexpr std::ptrdiff_t p2pvoice002 = 0xDA1A0;
constexpr std::ptrdiff_t p2pvoicesingleton002 = 0xD6C00;
constexpr std::ptrdiff_t CLIENTENGINE_INTERFACE_VERSION005 = 0x8A8BB0;
constexpr std::ptrdiff_t IVALIDATE001 = 0x8AD030;
constexpr std::ptrdiff_t SteamClient006 = 0x693680;
constexpr std::ptrdiff_t SteamClient007 = 0x693690;
constexpr std::ptrdiff_t SteamClient008 = 0x6936A0;
constexpr std::ptrdiff_t SteamClient009 = 0x6936B0;
constexpr std::ptrdiff_t SteamClient010 = 0x6936C0;
constexpr std::ptrdiff_t SteamClient011 = 0x6936D0;
constexpr std::ptrdiff_t SteamClient012 = 0x6936E0;
constexpr std::ptrdiff_t SteamClient013 = 0x6936F0;
constexpr std::ptrdiff_t SteamClient014 = 0x693700;
constexpr std::ptrdiff_t SteamClient015 = 0x693710;
constexpr std::ptrdiff_t SteamClient016 = 0x693720;
constexpr std::ptrdiff_t SteamClient017 = 0x693730;
constexpr std::ptrdiff_t SteamClient018 = 0x693740;
constexpr std::ptrdiff_t SteamClient019 = 0x693750;
constexpr std::ptrdiff_t SteamClient020 = 0x693760;
constexpr std::ptrdiff_t SteamClient021 = 0x693770;
constexpr std::ptrdiff_t p2pvoice002 = 0xDA9A0;
constexpr std::ptrdiff_t p2pvoicesingleton002 = 0xD72B0;
}
// Module: tier0.dll
namespace tier0_dll {
@ -237,8 +237,8 @@ namespace cs2_dumper {
}
// Module: vstdlib_s64.dll
namespace vstdlib_s64_dll {
constexpr std::ptrdiff_t IVALIDATE001 = 0x25140;
constexpr std::ptrdiff_t VEngineCvar002 = 0x5760;
constexpr std::ptrdiff_t IVALIDATE001 = 0x26B40;
constexpr std::ptrdiff_t VEngineCvar002 = 0x6060;
}
// Module: worldrenderer.dll
namespace worldrenderer_dll {

View File

@ -4,14 +4,14 @@
"AnimationSystem_001": 477424
},
"client.dll": {
"ClientToolsInfo_001": 7628464,
"ClientToolsInfo_001": 7628480,
"EmptyWorldService001_Client": 4726336,
"GameClientExports001": 7628480,
"LegacyGameUI001": 9300720,
"Source2Client002": 7628496,
"GameClientExports001": 7628496,
"LegacyGameUI001": 9301728,
"Source2Client002": 7628512,
"Source2ClientConfig001": 4608576,
"Source2ClientPrediction001": 8165760,
"Source2ClientUI001": 9196480
"Source2ClientPrediction001": 8165776,
"Source2ClientUI001": 9197488
},
"engine2.dll": {
"BenchmarkService001": 1590736,
@ -132,12 +132,12 @@
"server.dll": {
"EmptyWorldService001_Server": 5655872,
"EntitySubclassUtilsV001": 2872080,
"NavGameTest001": 10842176,
"ServerToolsInfo_001": 8687776,
"Source2GameClients001": 8687792,
"NavGameTest001": 10842192,
"ServerToolsInfo_001": 8687792,
"Source2GameClients001": 8687808,
"Source2GameDirector001": 1196848,
"Source2GameEntities001": 8687808,
"Source2Server001": 8687824,
"Source2GameEntities001": 8687824,
"Source2Server001": 8687840,
"Source2ServerConfig001": 5569120,
"customnavsystem001": 2276960
},
@ -151,26 +151,26 @@
"SteamAudio001": 412272
},
"steamclient64.dll": {
"CLIENTENGINE_INTERFACE_VERSION005": 8858576,
"IVALIDATE001": 8875296,
"SteamClient006": 6752496,
"SteamClient007": 6752512,
"SteamClient008": 6752528,
"SteamClient009": 6752544,
"SteamClient010": 6752560,
"SteamClient011": 6752576,
"SteamClient012": 6752592,
"SteamClient013": 6752608,
"SteamClient014": 6752624,
"SteamClient015": 6752640,
"SteamClient016": 6752656,
"SteamClient017": 6752672,
"SteamClient018": 6752688,
"SteamClient019": 6752704,
"SteamClient020": 6752720,
"SteamClient021": 6752736,
"p2pvoice002": 893344,
"p2pvoicesingleton002": 879616
"CLIENTENGINE_INTERFACE_VERSION005": 9079728,
"IVALIDATE001": 9097264,
"SteamClient006": 6895232,
"SteamClient007": 6895248,
"SteamClient008": 6895264,
"SteamClient009": 6895280,
"SteamClient010": 6895296,
"SteamClient011": 6895312,
"SteamClient012": 6895328,
"SteamClient013": 6895344,
"SteamClient014": 6895360,
"SteamClient015": 6895376,
"SteamClient016": 6895392,
"SteamClient017": 6895408,
"SteamClient018": 6895424,
"SteamClient019": 6895440,
"SteamClient020": 6895456,
"SteamClient021": 6895472,
"p2pvoice002": 895392,
"p2pvoicesingleton002": 881328
},
"tier0.dll": {
"TestScriptMgr001": 1350640,
@ -195,8 +195,8 @@
"VScriptManager010": 205328
},
"vstdlib_s64.dll": {
"IVALIDATE001": 151872,
"VEngineCvar002": 22368
"IVALIDATE001": 158528,
"VEngineCvar002": 24672
},
"worldrenderer.dll": {
"WorldRendererMgr001": 143312

View File

@ -1,5 +1,5 @@
// Generated using https://github.com/a2x/cs2-dumper
// 2024-06-14 04:06:49.525200800 UTC
// 2024-06-18 02:29:36.184201900 UTC
#![allow(non_upper_case_globals, unused)]
@ -12,14 +12,14 @@ pub mod cs2_dumper {
}
// Module: client.dll
pub mod client_dll {
pub const ClientToolsInfo_001: usize = 0x7466B0;
pub const ClientToolsInfo_001: usize = 0x7466C0;
pub const EmptyWorldService001_Client: usize = 0x481E40;
pub const GameClientExports001: usize = 0x7466C0;
pub const LegacyGameUI001: usize = 0x8DEAF0;
pub const Source2Client002: usize = 0x7466D0;
pub const GameClientExports001: usize = 0x7466D0;
pub const LegacyGameUI001: usize = 0x8DEEE0;
pub const Source2Client002: usize = 0x7466E0;
pub const Source2ClientConfig001: usize = 0x465240;
pub const Source2ClientPrediction001: usize = 0x7C9980;
pub const Source2ClientUI001: usize = 0x8C53C0;
pub const Source2ClientPrediction001: usize = 0x7C9990;
pub const Source2ClientUI001: usize = 0x8C57B0;
}
// Module: engine2.dll
pub mod engine2_dll {
@ -162,12 +162,12 @@ pub mod cs2_dumper {
pub mod server_dll {
pub const EmptyWorldService001_Server: usize = 0x564D40;
pub const EntitySubclassUtilsV001: usize = 0x2BD310;
pub const NavGameTest001: usize = 0xA57040;
pub const ServerToolsInfo_001: usize = 0x8490A0;
pub const Source2GameClients001: usize = 0x8490B0;
pub const NavGameTest001: usize = 0xA57050;
pub const ServerToolsInfo_001: usize = 0x8490B0;
pub const Source2GameClients001: usize = 0x8490C0;
pub const Source2GameDirector001: usize = 0x124330;
pub const Source2GameEntities001: usize = 0x8490C0;
pub const Source2Server001: usize = 0x8490D0;
pub const Source2GameEntities001: usize = 0x8490D0;
pub const Source2Server001: usize = 0x8490E0;
pub const Source2ServerConfig001: usize = 0x54FA60;
pub const customnavsystem001: usize = 0x22BE60;
}
@ -184,26 +184,26 @@ pub mod cs2_dumper {
}
// Module: steamclient64.dll
pub mod steamclient64_dll {
pub const CLIENTENGINE_INTERFACE_VERSION005: usize = 0x872BD0;
pub const IVALIDATE001: usize = 0x876D20;
pub const SteamClient006: usize = 0x6708F0;
pub const SteamClient007: usize = 0x670900;
pub const SteamClient008: usize = 0x670910;
pub const SteamClient009: usize = 0x670920;
pub const SteamClient010: usize = 0x670930;
pub const SteamClient011: usize = 0x670940;
pub const SteamClient012: usize = 0x670950;
pub const SteamClient013: usize = 0x670960;
pub const SteamClient014: usize = 0x670970;
pub const SteamClient015: usize = 0x670980;
pub const SteamClient016: usize = 0x670990;
pub const SteamClient017: usize = 0x6709A0;
pub const SteamClient018: usize = 0x6709B0;
pub const SteamClient019: usize = 0x6709C0;
pub const SteamClient020: usize = 0x6709D0;
pub const SteamClient021: usize = 0x6709E0;
pub const p2pvoice002: usize = 0xDA1A0;
pub const p2pvoicesingleton002: usize = 0xD6C00;
pub const CLIENTENGINE_INTERFACE_VERSION005: usize = 0x8A8BB0;
pub const IVALIDATE001: usize = 0x8AD030;
pub const SteamClient006: usize = 0x693680;
pub const SteamClient007: usize = 0x693690;
pub const SteamClient008: usize = 0x6936A0;
pub const SteamClient009: usize = 0x6936B0;
pub const SteamClient010: usize = 0x6936C0;
pub const SteamClient011: usize = 0x6936D0;
pub const SteamClient012: usize = 0x6936E0;
pub const SteamClient013: usize = 0x6936F0;
pub const SteamClient014: usize = 0x693700;
pub const SteamClient015: usize = 0x693710;
pub const SteamClient016: usize = 0x693720;
pub const SteamClient017: usize = 0x693730;
pub const SteamClient018: usize = 0x693740;
pub const SteamClient019: usize = 0x693750;
pub const SteamClient020: usize = 0x693760;
pub const SteamClient021: usize = 0x693770;
pub const p2pvoice002: usize = 0xDA9A0;
pub const p2pvoicesingleton002: usize = 0xD72B0;
}
// Module: tier0.dll
pub mod tier0_dll {
@ -235,8 +235,8 @@ pub mod cs2_dumper {
}
// Module: vstdlib_s64.dll
pub mod vstdlib_s64_dll {
pub const IVALIDATE001: usize = 0x25140;
pub const VEngineCvar002: usize = 0x5760;
pub const IVALIDATE001: usize = 0x26B40;
pub const VEngineCvar002: usize = 0x6060;
}
// Module: worldrenderer.dll
pub mod worldrenderer_dll {

View File

@ -1,5 +1,5 @@
// Generated using https://github.com/a2x/cs2-dumper
// 2024-06-14 04:06:49.525200800 UTC
// 2024-06-18 02:29:36.184201900 UTC
namespace CS2Dumper.Schemas {
// Module: materialsystem2.dll

View File

@ -1,5 +1,5 @@
// Generated using https://github.com/a2x/cs2-dumper
// 2024-06-14 04:06:49.525200800 UTC
// 2024-06-18 02:29:36.184201900 UTC
#pragma once

View File

@ -1,5 +1,5 @@
// Generated using https://github.com/a2x/cs2-dumper
// 2024-06-14 04:06:49.525200800 UTC
// 2024-06-18 02:29:36.184201900 UTC
#![allow(non_upper_case_globals, non_camel_case_types, non_snake_case, unused)]

View File

@ -1,5 +1,5 @@
// Generated using https://github.com/a2x/cs2-dumper
// 2024-06-14 04:06:49.525200800 UTC
// 2024-06-18 02:29:36.184201900 UTC
namespace CS2Dumper.Schemas {
// Module: networksystem.dll

View File

@ -1,5 +1,5 @@
// Generated using https://github.com/a2x/cs2-dumper
// 2024-06-14 04:06:49.525200800 UTC
// 2024-06-18 02:29:36.184201900 UTC
#pragma once

View File

@ -1,5 +1,5 @@
// Generated using https://github.com/a2x/cs2-dumper
// 2024-06-14 04:06:49.525200800 UTC
// 2024-06-18 02:29:36.184201900 UTC
#![allow(non_upper_case_globals, non_camel_case_types, non_snake_case, unused)]

View File

@ -1,25 +1,25 @@
// Generated using https://github.com/a2x/cs2-dumper
// 2024-06-14 04:06:49.525200800 UTC
// 2024-06-18 02:29:36.184201900 UTC
namespace CS2Dumper.Offsets {
// Module: client.dll
public static class ClientDll {
public const nint dwCSGOInput = 0x1A1E1B0;
public const nint dwCSGOInput = 0x1A1E430;
public const nint dwEntityList = 0x19B49B8;
public const nint dwGameEntitySystem = 0x1AD38C8;
public const nint dwGameEntitySystem = 0x1AD3888;
public const nint dwGameEntitySystem_highestEntityIndex = 0x1510;
public const nint dwGameRules = 0x1A12418;
public const nint dwGlobalVars = 0x180E4E0;
public const nint dwGlowManager = 0x1A11B30;
public const nint dwGameRules = 0x1A12408;
public const nint dwGlobalVars = 0x180E510;
public const nint dwGlowManager = 0x1A11B20;
public const nint dwLocalPlayerController = 0x1A04768;
public const nint dwLocalPlayerPawn = 0x181A998;
public const nint dwPlantedC4 = 0x1A1B528;
public const nint dwPrediction = 0x181A850;
public const nint dwSensitivity = 0x1A13258;
public const nint dwLocalPlayerPawn = 0x181A9C8;
public const nint dwPlantedC4 = 0x1A1B7A8;
public const nint dwPrediction = 0x181A880;
public const nint dwSensitivity = 0x1A13248;
public const nint dwSensitivity_sensitivity = 0x40;
public const nint dwViewAngles = 0x1A235C8;
public const nint dwViewMatrix = 0x1A16A70;
public const nint dwViewRender = 0x1A17388;
public const nint dwViewAngles = 0x1A23848;
public const nint dwViewMatrix = 0x1A16A60;
public const nint dwViewRender = 0x1A17378;
public const nint dwWeaponC4 = 0x19B86F0;
}
// Module: engine2.dll

View File

@ -1,5 +1,5 @@
// Generated using https://github.com/a2x/cs2-dumper
// 2024-06-14 04:06:49.525200800 UTC
// 2024-06-18 02:29:36.184201900 UTC
#pragma once
@ -9,22 +9,22 @@ namespace cs2_dumper {
namespace offsets {
// Module: client.dll
namespace client_dll {
constexpr std::ptrdiff_t dwCSGOInput = 0x1A1E1B0;
constexpr std::ptrdiff_t dwCSGOInput = 0x1A1E430;
constexpr std::ptrdiff_t dwEntityList = 0x19B49B8;
constexpr std::ptrdiff_t dwGameEntitySystem = 0x1AD38C8;
constexpr std::ptrdiff_t dwGameEntitySystem = 0x1AD3888;
constexpr std::ptrdiff_t dwGameEntitySystem_highestEntityIndex = 0x1510;
constexpr std::ptrdiff_t dwGameRules = 0x1A12418;
constexpr std::ptrdiff_t dwGlobalVars = 0x180E4E0;
constexpr std::ptrdiff_t dwGlowManager = 0x1A11B30;
constexpr std::ptrdiff_t dwGameRules = 0x1A12408;
constexpr std::ptrdiff_t dwGlobalVars = 0x180E510;
constexpr std::ptrdiff_t dwGlowManager = 0x1A11B20;
constexpr std::ptrdiff_t dwLocalPlayerController = 0x1A04768;
constexpr std::ptrdiff_t dwLocalPlayerPawn = 0x181A998;
constexpr std::ptrdiff_t dwPlantedC4 = 0x1A1B528;
constexpr std::ptrdiff_t dwPrediction = 0x181A850;
constexpr std::ptrdiff_t dwSensitivity = 0x1A13258;
constexpr std::ptrdiff_t dwLocalPlayerPawn = 0x181A9C8;
constexpr std::ptrdiff_t dwPlantedC4 = 0x1A1B7A8;
constexpr std::ptrdiff_t dwPrediction = 0x181A880;
constexpr std::ptrdiff_t dwSensitivity = 0x1A13248;
constexpr std::ptrdiff_t dwSensitivity_sensitivity = 0x40;
constexpr std::ptrdiff_t dwViewAngles = 0x1A235C8;
constexpr std::ptrdiff_t dwViewMatrix = 0x1A16A70;
constexpr std::ptrdiff_t dwViewRender = 0x1A17388;
constexpr std::ptrdiff_t dwViewAngles = 0x1A23848;
constexpr std::ptrdiff_t dwViewMatrix = 0x1A16A60;
constexpr std::ptrdiff_t dwViewRender = 0x1A17378;
constexpr std::ptrdiff_t dwWeaponC4 = 0x19B86F0;
}
// Module: engine2.dll

View File

@ -1,21 +1,21 @@
{
"client.dll": {
"dwCSGOInput": 27386288,
"dwCSGOInput": 27386928,
"dwEntityList": 26954168,
"dwGameEntitySystem": 28129480,
"dwGameEntitySystem": 28129416,
"dwGameEntitySystem_highestEntityIndex": 5392,
"dwGameRules": 27337752,
"dwGlobalVars": 25224416,
"dwGlowManager": 27335472,
"dwGameRules": 27337736,
"dwGlobalVars": 25224464,
"dwGlowManager": 27335456,
"dwLocalPlayerController": 27281256,
"dwLocalPlayerPawn": 25274776,
"dwPlantedC4": 27374888,
"dwPrediction": 25274448,
"dwSensitivity": 27341400,
"dwLocalPlayerPawn": 25274824,
"dwPlantedC4": 27375528,
"dwPrediction": 25274496,
"dwSensitivity": 27341384,
"dwSensitivity_sensitivity": 64,
"dwViewAngles": 27407816,
"dwViewMatrix": 27355760,
"dwViewRender": 27358088,
"dwViewAngles": 27408456,
"dwViewMatrix": 27355744,
"dwViewRender": 27358072,
"dwWeaponC4": 26969840
},
"engine2.dll": {

View File

@ -1,5 +1,5 @@
// Generated using https://github.com/a2x/cs2-dumper
// 2024-06-14 04:06:49.525200800 UTC
// 2024-06-18 02:29:36.184201900 UTC
#![allow(non_upper_case_globals, unused)]
@ -7,22 +7,22 @@ pub mod cs2_dumper {
pub mod offsets {
// Module: client.dll
pub mod client_dll {
pub const dwCSGOInput: usize = 0x1A1E1B0;
pub const dwCSGOInput: usize = 0x1A1E430;
pub const dwEntityList: usize = 0x19B49B8;
pub const dwGameEntitySystem: usize = 0x1AD38C8;
pub const dwGameEntitySystem: usize = 0x1AD3888;
pub const dwGameEntitySystem_highestEntityIndex: usize = 0x1510;
pub const dwGameRules: usize = 0x1A12418;
pub const dwGlobalVars: usize = 0x180E4E0;
pub const dwGlowManager: usize = 0x1A11B30;
pub const dwGameRules: usize = 0x1A12408;
pub const dwGlobalVars: usize = 0x180E510;
pub const dwGlowManager: usize = 0x1A11B20;
pub const dwLocalPlayerController: usize = 0x1A04768;
pub const dwLocalPlayerPawn: usize = 0x181A998;
pub const dwPlantedC4: usize = 0x1A1B528;
pub const dwPrediction: usize = 0x181A850;
pub const dwSensitivity: usize = 0x1A13258;
pub const dwLocalPlayerPawn: usize = 0x181A9C8;
pub const dwPlantedC4: usize = 0x1A1B7A8;
pub const dwPrediction: usize = 0x181A880;
pub const dwSensitivity: usize = 0x1A13248;
pub const dwSensitivity_sensitivity: usize = 0x40;
pub const dwViewAngles: usize = 0x1A235C8;
pub const dwViewMatrix: usize = 0x1A16A70;
pub const dwViewRender: usize = 0x1A17388;
pub const dwViewAngles: usize = 0x1A23848;
pub const dwViewMatrix: usize = 0x1A16A60;
pub const dwViewRender: usize = 0x1A17378;
pub const dwWeaponC4: usize = 0x19B86F0;
}
// Module: engine2.dll

View File

@ -1,5 +1,5 @@
// Generated using https://github.com/a2x/cs2-dumper
// 2024-06-14 04:06:49.525200800 UTC
// 2024-06-18 02:29:36.184201900 UTC
namespace CS2Dumper.Schemas {
// Module: panorama.dll

View File

@ -1,5 +1,5 @@
// Generated using https://github.com/a2x/cs2-dumper
// 2024-06-14 04:06:49.525200800 UTC
// 2024-06-18 02:29:36.184201900 UTC
#pragma once

View File

@ -1,5 +1,5 @@
// Generated using https://github.com/a2x/cs2-dumper
// 2024-06-14 04:06:49.525200800 UTC
// 2024-06-18 02:29:36.184201900 UTC
#![allow(non_upper_case_globals, non_camel_case_types, non_snake_case, unused)]

View File

@ -1,5 +1,5 @@
// Generated using https://github.com/a2x/cs2-dumper
// 2024-06-14 04:06:49.525200800 UTC
// 2024-06-18 02:29:36.184201900 UTC
namespace CS2Dumper.Schemas {
// Module: particles.dll

View File

@ -1,5 +1,5 @@
// Generated using https://github.com/a2x/cs2-dumper
// 2024-06-14 04:06:49.525200800 UTC
// 2024-06-18 02:29:36.184201900 UTC
#pragma once

View File

@ -1,5 +1,5 @@
// Generated using https://github.com/a2x/cs2-dumper
// 2024-06-14 04:06:49.525200800 UTC
// 2024-06-18 02:29:36.184201900 UTC
#![allow(non_upper_case_globals, non_camel_case_types, non_snake_case, unused)]

View File

@ -1,5 +1,5 @@
// Generated using https://github.com/a2x/cs2-dumper
// 2024-06-14 04:06:49.525200800 UTC
// 2024-06-18 02:29:36.184201900 UTC
namespace CS2Dumper.Schemas {
// Module: pulse_system.dll

View File

@ -1,5 +1,5 @@
// Generated using https://github.com/a2x/cs2-dumper
// 2024-06-14 04:06:49.525200800 UTC
// 2024-06-18 02:29:36.184201900 UTC
#pragma once

View File

@ -1,5 +1,5 @@
// Generated using https://github.com/a2x/cs2-dumper
// 2024-06-14 04:06:49.525200800 UTC
// 2024-06-18 02:29:36.184201900 UTC
#![allow(non_upper_case_globals, non_camel_case_types, non_snake_case, unused)]

View File

@ -1,5 +1,5 @@
// Generated using https://github.com/a2x/cs2-dumper
// 2024-06-14 04:06:49.525200800 UTC
// 2024-06-18 02:29:36.184201900 UTC
namespace CS2Dumper.Schemas {
// Module: rendersystemdx11.dll

View File

@ -1,5 +1,5 @@
// Generated using https://github.com/a2x/cs2-dumper
// 2024-06-14 04:06:49.525200800 UTC
// 2024-06-18 02:29:36.184201900 UTC
#pragma once

View File

@ -1,5 +1,5 @@
// Generated using https://github.com/a2x/cs2-dumper
// 2024-06-14 04:06:49.525200800 UTC
// 2024-06-18 02:29:36.184201900 UTC
#![allow(non_upper_case_globals, non_camel_case_types, non_snake_case, unused)]

View File

@ -1,5 +1,5 @@
// Generated using https://github.com/a2x/cs2-dumper
// 2024-06-14 04:06:49.525200800 UTC
// 2024-06-18 02:29:36.184201900 UTC
namespace CS2Dumper.Schemas {
// Module: resourcesystem.dll

View File

@ -1,5 +1,5 @@
// Generated using https://github.com/a2x/cs2-dumper
// 2024-06-14 04:06:49.525200800 UTC
// 2024-06-18 02:29:36.184201900 UTC
#pragma once

View File

@ -1,5 +1,5 @@
// Generated using https://github.com/a2x/cs2-dumper
// 2024-06-14 04:06:49.525200800 UTC
// 2024-06-18 02:29:36.184201900 UTC
#![allow(non_upper_case_globals, non_camel_case_types, non_snake_case, unused)]

View File

@ -1,5 +1,5 @@
// Generated using https://github.com/a2x/cs2-dumper
// 2024-06-14 04:06:49.525200800 UTC
// 2024-06-18 02:29:36.184201900 UTC
namespace CS2Dumper.Schemas {
// Module: scenesystem.dll

View File

@ -1,5 +1,5 @@
// Generated using https://github.com/a2x/cs2-dumper
// 2024-06-14 04:06:49.525200800 UTC
// 2024-06-18 02:29:36.184201900 UTC
#pragma once

View File

@ -1,5 +1,5 @@
// Generated using https://github.com/a2x/cs2-dumper
// 2024-06-14 04:06:49.525200800 UTC
// 2024-06-18 02:29:36.184201900 UTC
#![allow(non_upper_case_globals, non_camel_case_types, non_snake_case, unused)]

View File

@ -1,5 +1,5 @@
// Generated using https://github.com/a2x/cs2-dumper
// 2024-06-14 04:06:49.525200800 UTC
// 2024-06-18 02:29:36.184201900 UTC
namespace CS2Dumper.Schemas {
// Module: schemasystem.dll

View File

@ -1,5 +1,5 @@
// Generated using https://github.com/a2x/cs2-dumper
// 2024-06-14 04:06:49.525200800 UTC
// 2024-06-18 02:29:36.184201900 UTC
#pragma once

View File

@ -1,5 +1,5 @@
// Generated using https://github.com/a2x/cs2-dumper
// 2024-06-14 04:06:49.525200800 UTC
// 2024-06-18 02:29:36.184201900 UTC
#![allow(non_upper_case_globals, non_camel_case_types, non_snake_case, unused)]

View File

@ -1,5 +1,5 @@
// Generated using https://github.com/a2x/cs2-dumper
// 2024-06-14 04:06:49.525200800 UTC
// 2024-06-18 02:29:36.184201900 UTC
namespace CS2Dumper.Schemas {
// Module: server.dll

View File

@ -1,5 +1,5 @@
// Generated using https://github.com/a2x/cs2-dumper
// 2024-06-14 04:06:49.525200800 UTC
// 2024-06-18 02:29:36.184201900 UTC
#pragma once

View File

@ -1,5 +1,5 @@
// Generated using https://github.com/a2x/cs2-dumper
// 2024-06-14 04:06:49.525200800 UTC
// 2024-06-18 02:29:36.184201900 UTC
#![allow(non_upper_case_globals, non_camel_case_types, non_snake_case, unused)]

View File

@ -1,5 +1,5 @@
// Generated using https://github.com/a2x/cs2-dumper
// 2024-06-14 04:06:49.525200800 UTC
// 2024-06-18 02:29:36.184201900 UTC
namespace CS2Dumper.Schemas {
// Module: soundsystem.dll

View File

@ -1,5 +1,5 @@
// Generated using https://github.com/a2x/cs2-dumper
// 2024-06-14 04:06:49.525200800 UTC
// 2024-06-18 02:29:36.184201900 UTC
#pragma once

View File

@ -1,5 +1,5 @@
// Generated using https://github.com/a2x/cs2-dumper
// 2024-06-14 04:06:49.525200800 UTC
// 2024-06-18 02:29:36.184201900 UTC
#![allow(non_upper_case_globals, non_camel_case_types, non_snake_case, unused)]

View File

@ -1,5 +1,5 @@
// Generated using https://github.com/a2x/cs2-dumper
// 2024-06-14 04:06:49.525200800 UTC
// 2024-06-18 02:29:36.184201900 UTC
namespace CS2Dumper.Schemas {
// Module: vphysics2.dll

View File

@ -1,5 +1,5 @@
// Generated using https://github.com/a2x/cs2-dumper
// 2024-06-14 04:06:49.525200800 UTC
// 2024-06-18 02:29:36.184201900 UTC
#pragma once

View File

@ -1,5 +1,5 @@
// Generated using https://github.com/a2x/cs2-dumper
// 2024-06-14 04:06:49.525200800 UTC
// 2024-06-18 02:29:36.184201900 UTC
#![allow(non_upper_case_globals, non_camel_case_types, non_snake_case, unused)]

View File

@ -1,5 +1,5 @@
// Generated using https://github.com/a2x/cs2-dumper
// 2024-06-14 04:06:49.525200800 UTC
// 2024-06-18 02:29:36.184201900 UTC
namespace CS2Dumper.Schemas {
// Module: worldrenderer.dll

View File

@ -1,5 +1,5 @@
// Generated using https://github.com/a2x/cs2-dumper
// 2024-06-14 04:06:49.525200800 UTC
// 2024-06-18 02:29:36.184201900 UTC
#pragma once

View File

@ -1,5 +1,5 @@
// Generated using https://github.com/a2x/cs2-dumper
// 2024-06-14 04:06:49.525200800 UTC
// 2024-06-18 02:29:36.184201900 UTC
#![allow(non_upper_case_globals, non_camel_case_types, non_snake_case, unused)]

View File

@ -148,3 +148,167 @@ pub fn offsets(process: &mut IntoProcessInstanceArcBox<'_>) -> Result<OffsetMap>
Ok(map)
}
#[cfg(test)]
mod tests {
use std::fs;
use serde_json::Value;
use super::*;
fn setup() -> Result<IntoProcessInstanceArcBox<'static>> {
let os = memflow_native::create_os(&OsArgs::default(), LibArc::default())?;
let process = os.into_process_by_name("cs2.exe")?;
Ok(process)
}
fn get_class_field_value(module_name: &str, class_name: &str, field_name: &str) -> Option<u64> {
let content = fs::read_to_string(format!("output/{}.json", module_name)).ok()?;
let value: Value = serde_json::from_str(&content).ok()?;
value
.get(module_name)?
.get("classes")?
.get(class_name)?
.get("fields")?
.get(field_name)?
.as_u64()
}
fn get_offset_value(module_name: &str, offset_name: &str) -> Option<u64> {
let content = fs::read_to_string("output/offsets.json").ok()?;
let value: Value = serde_json::from_str(&content).ok()?;
let offset = value.get(module_name)?.get(offset_name)?;
offset.as_u64()
}
#[test]
fn build_number() -> Result<()> {
let mut process = setup()?;
let engine_base = process.module_by_name("engine2.dll")?.base;
let offset = get_offset_value("engine2.dll", "dwBuildNumber").unwrap();
let build_number: u32 = process.read(engine_base + offset).data_part()?;
println!("build number: {}", build_number);
Ok(())
}
#[test]
fn global_vars() -> Result<()> {
let mut process = setup()?;
let client_base = process.module_by_name("client.dll")?.base;
let offset = get_offset_value("client.dll", "dwGlobalVars").unwrap();
let global_vars: u64 = process.read(client_base + offset).data_part()?;
let cur_map_name = {
let addr = process
.read_addr64((global_vars + 0x1B8).into())
.data_part()?;
process.read_char_string(addr).data_part()?
};
println!("current map name: {}", cur_map_name);
Ok(())
}
#[test]
fn local_player_controller() -> Result<()> {
let mut process = setup()?;
let client_base = process.module_by_name("client.dll")?.base;
let local_player_controller_offset =
get_offset_value("client.dll", "dwLocalPlayerController").unwrap();
let player_name_offset =
get_class_field_value("client.dll", "CBasePlayerController", "m_iszPlayerName")
.unwrap();
let local_player_controller: u64 = process
.read(client_base + local_player_controller_offset)
.data_part()?;
let player_name = process
.read_char_string((local_player_controller + player_name_offset).into())
.data_part()?;
println!("local player name: {}", player_name);
Ok(())
}
#[test]
fn local_player_pawn() -> Result<()> {
#[derive(Debug, Pod)]
#[repr(C)]
struct Vector3D {
x: f32,
y: f32,
z: f32,
}
let mut process = setup()?;
let client_base = process.module_by_name("client.dll")?.base;
let local_player_pawn_offset = get_offset_value("client.dll", "dwLocalPlayerPawn").unwrap();
let game_scene_node_offset =
get_class_field_value("client.dll", "C_BaseEntity", "m_pGameSceneNode").unwrap();
let vec_abs_origin_offset =
get_class_field_value("client.dll", "CGameSceneNode", "m_vecAbsOrigin").unwrap();
let local_player_pawn: u64 = process
.read(client_base + local_player_pawn_offset)
.data_part()?;
let game_scene_node: u64 = process
.read((local_player_pawn + game_scene_node_offset).into())
.data_part()?;
let vec_abs_origin: Vector3D = process
.read((game_scene_node + vec_abs_origin_offset).into())
.data_part()?;
println!("local player origin: {:?}", vec_abs_origin);
Ok(())
}
#[test]
fn window_size() -> Result<()> {
let mut process = setup()?;
let engine_base = process.module_by_name("engine2.dll")?.base;
let window_width_offset = get_offset_value("engine2.dll", "dwWindowWidth").unwrap();
let window_height_offset = get_offset_value("engine2.dll", "dwWindowHeight").unwrap();
let window_width: u32 = process
.read(engine_base + window_width_offset)
.data_part()?;
let window_height: u32 = process
.read(engine_base + window_height_offset)
.data_part()?;
println!("window size: {}x{}", window_width, window_height);
Ok(())
}
}

View File

@ -144,7 +144,7 @@ fn read_class_binding_fields(
return Ok(Vec::new());
}
(0..binding.field_count).try_fold(Vec::new(), |mut acc, i| {
(0..binding.fields_count).try_fold(Vec::new(), |mut acc, i| {
let field = binding.fields.at(i as _).read(process)?;
if field.schema_type.is_null() {
@ -178,12 +178,12 @@ fn read_class_binding_metadata(
(0..binding.static_metadata_count).try_fold(Vec::new(), |mut acc, i| {
let metadata = binding.static_metadata.at(i as _).read(process)?;
if metadata.data.is_null() {
if metadata.network_value.is_null() {
return Ok(acc);
}
let name = metadata.name.read_string(process)?.to_string();
let network_value = metadata.data.read(process)?;
let network_value = metadata.network_value.read(process)?;
let metadata = match name.as_str() {
"MNetworkChangeCallback" => unsafe {
@ -229,14 +229,14 @@ fn read_enum_binding(
"found enum: {} @ {:#X} (alignment: {}) (members count: {})",
name,
binding_ptr.to_umem(),
binding.alignment,
binding.align_of,
binding.size,
);
Ok(Enum {
name,
alignment: binding.alignment,
size: binding.enumerator_count,
alignment: binding.align_of,
size: binding.enumerators_count,
members,
})
}
@ -249,7 +249,7 @@ fn read_enum_binding_members(
return Ok(Vec::new());
}
(0..binding.enumerator_count).try_fold(Vec::new(), |mut acc, i| {
(0..binding.enumerators_count).try_fold(Vec::new(), |mut acc, i| {
let enumerator = binding.enumerators.at(i as _).read(process)?;
let name = enumerator.name.read_string(process)?.to_string();
@ -270,10 +270,10 @@ fn read_schema_system(process: &mut IntoProcessInstanceArcBox<'_>) -> Result<Sch
let mut save = [0; 2];
if !view.scanner().finds_code(
pattern!("488905${'} 4c8d0d${} 0fb645? 4c8d45? 33f6"),
&mut save,
) {
if !view
.scanner()
.finds_code(pattern!("4c8d35${'} 0f2845"), &mut save)
{
return Err(Error::Other("unable to find schema system pattern"));
}

View File

@ -8,7 +8,7 @@ use log::{info, Level};
use memflow::prelude::v1::*;
use simplelog::{ColorChoice, TermLogger};
use simplelog::{ColorChoice, Config, TermLogger, TerminalMode};
use error::Result;
use output::Output;
@ -65,8 +65,8 @@ fn main() -> Result<()> {
TermLogger::init(
log_level.to_level_filter(),
Default::default(),
Default::default(),
Config::default(),
TerminalMode::Mixed,
ColorChoice::Auto,
)
.unwrap();
@ -93,6 +93,7 @@ fn main() -> Result<()> {
let mut process = os.into_process_by_name(&args.process_name)?;
let result = analysis::analyze_all(&mut process)?;
let output = Output::new(&args.file_types, args.indent_size, &args.output, &result)?;
output.dump_all(&mut process)?;

View File

@ -5,9 +5,9 @@ use super::{SchemaMetadataEntryData, SchemaType};
#[derive(Pod)]
#[repr(C)]
pub struct SchemaClassFieldData {
pub name: Pointer64<ReprCString>, // 0x0000
pub schema_type: Pointer64<SchemaType>, // 0x0008
pub single_inheritance_offset: i32, // 0x0010
pub static_metadata_count: i32, // 0x0014
pub static_metadata: Pointer64<SchemaMetadataEntryData>, // 0x0018
pub name: Pointer64<ReprCString>, // 0x0000
pub schema_type: Pointer64<SchemaType>, // 0x0008
pub single_inheritance_offset: i32, // 0x0010
pub metadata_count: i32, // 0x0014
pub metadata: Pointer64<SchemaMetadataEntryData>, // 0x0018
}

View File

@ -1,6 +1,9 @@
use memflow::prelude::v1::*;
use super::*;
use super::{
SchemaBaseClassInfoData, SchemaClassFieldData, SchemaMetadataEntryData, SchemaStaticFieldData,
SchemaSystemTypeScope, SchemaType,
};
pub type SchemaClassBinding = SchemaClassInfoData;
@ -12,13 +15,13 @@ pub struct SchemaClassInfoData {
pub name: Pointer64<ReprCString>, // 0x0008
pub module_name: Pointer64<ReprCString>, // 0x0010
pub size: i32, // 0x0018
pub field_count: u16, // 0x001C
pub static_field_count: u16, // 0x001E
pub static_metadata_count: u16, // 0x0020
pub alignment: u8, // 0x0022
pub base_class_count: u8, // 0x0023
pub multiple_inheritance_depth: u16, // 0x0024
pub single_inheritance_depth: u16, // 0x0026
pub fields_count: i16, // 0x001C
pub static_fields_count: i16, // 0x001E
pub static_metadata_count: i16, // 0x0020
pub align_of: u8, // 0x0022
pub has_base_class: u8, // 0x0023
pub total_class_size: i16, // 0x0024
pub derived_class_size: i16, // 0x0026
pub fields: Pointer64<[SchemaClassFieldData]>, // 0x0028
pub static_fields: Pointer64<[SchemaStaticFieldData]>, // 0x0030
pub base_classes: Pointer64<SchemaBaseClassInfoData>, // 0x0038

View File

@ -12,9 +12,9 @@ pub struct SchemaEnumInfoData {
pub name: Pointer64<ReprCString>, // 0x0008
pub module_name: Pointer64<ReprCString>, // 0x0010
pub size: u8, // 0x0018
pub alignment: u8, // 0x0019
pub flags: u16, // 0x001A
pub enumerator_count: u16, // 0x001C
pub align_of: u8, // 0x0019
pad_001a: [u8; 0x2], // 0x001A
pub enumerators_count: u16, // 0x001C
pub static_metadata_count: u16, // 0x001E
pub enumerators: Pointer64<[SchemaEnumeratorInfoData]>, // 0x0020
pub static_metadata: Pointer64<SchemaMetadataEntryData>, // 0x0028

View File

@ -5,11 +5,11 @@ use super::SchemaMetadataEntryData;
#[derive(Pod)]
#[repr(C)]
pub struct SchemaEnumeratorInfoData {
pub name: Pointer64<ReprCString>, // 0x0000
pub value: SchemaEnumeratorInfoDataUnion, // 0x0008
pub static_metadata_count: i32, // 0x0010
pad_0014: [u8; 0x4], // 0x0014
pub static_metadata: Pointer64<SchemaMetadataEntryData>, // 0x0018
pub name: Pointer64<ReprCString>, // 0x0000
pub value: SchemaEnumeratorInfoDataUnion, // 0x0008
pub metadata_count: i32, // 0x0010
pad_0014: [u8; 0x4], // 0x0014
pub metadata: Pointer64<SchemaMetadataEntryData>, // 0x0018
}
#[repr(C)]

View File

@ -5,8 +5,8 @@ use memflow::prelude::v1::*;
#[derive(Pod)]
#[repr(C)]
pub struct SchemaMetadataEntryData {
pub name: Pointer64<ReprCString>, // 0x0000
pub data: Pointer64<SchemaNetworkValue>, // 0x0008
pub name: Pointer64<ReprCString>, // 0x0000
pub network_value: Pointer64<SchemaNetworkValue>, // 0x0008
}
#[derive(Pod)]

View File

@ -5,10 +5,10 @@ use super::{SchemaMetadataEntryData, SchemaType};
#[derive(Pod)]
#[repr(C)]
pub struct SchemaStaticFieldData {
pub name: Pointer64<ReprCString>, // 0x0000
pub type_: Pointer64<SchemaType>, // 0x0008
pub instance: Pointer64<()>, // 0x0010
pub static_metadata_count: i32, // 0x0018
pad_001c: [u8; 0x4], // 0x001C
pub static_metadata: Pointer64<SchemaMetadataEntryData>, // 0x0020
pub name: Pointer64<ReprCString>, // 0x0000
pub type_: Pointer64<SchemaType>, // 0x0008
pub instance: Pointer64<()>, // 0x0010
pub metadata_count: i32, // 0x0018
pad_001c: [u8; 0x4], // 0x001C
pub metadata: Pointer64<SchemaMetadataEntryData>, // 0x0020
}

View File

@ -10,6 +10,6 @@ pub struct SchemaSystem {
pad_0000: [u8; 0x188], // 0x0000
pub type_scopes: UtlVector<Pointer64<SchemaSystemTypeScope>>, // 0x0188
pad_0198: [u8; 0x120], // 0x0198
pub num_registrations: u32, // 0x02B8
pub num_registrations: i32, // 0x02B8
pad_02bc: [u8; 0xAC], // 0x02BC
}