2.3_rework (#4)

Reviewed-on: WutheringSlaves/wicked-waifus-win-patch#4
This commit is contained in:
xavo95 2025-04-03 18:24:00 +00:00
parent 1d367f370b
commit fae28ec132
7 changed files with 168 additions and 143 deletions

182
Cargo.lock generated
View file

@ -1,6 +1,6 @@
# This file is automatically @generated by Cargo.
# It is not intended for manual editing.
version = 3
version = 4
[[package]]
name = "aho-corasick"
@ -13,9 +13,9 @@ dependencies = [
[[package]]
name = "bitflags"
version = "2.8.0"
version = "2.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8f68f53c83ab957f72c32642f3868eec03eb974d1fb82e453128456482613d36"
checksum = "5c8214115b7bf84099f1309324e63141d4c5d7cc26862f97a0a857dbefe165bd"
[[package]]
name = "iced-x86"
@ -57,9 +57,9 @@ checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe"
[[package]]
name = "libc"
version = "0.2.169"
version = "0.2.171"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b5aba8db14291edd000dfcc4d620c7ebfb122c613afb886ca8803fa4e128a20a"
checksum = "c19937216e9d3aa9956d9bb8dfc0b0c8beb6058fc4f7a4dc4d850edf86a237d6"
[[package]]
name = "memchr"
@ -69,18 +69,18 @@ checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3"
[[package]]
name = "proc-macro2"
version = "1.0.93"
version = "1.0.94"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "60946a68e5f9d28b0dc1c21bb8a97ee7d018a8b322fa57838ba31cc878e22d99"
checksum = "a31971752e70b8b2686d7e46ec17fb38dad4051d94024c88df49b667caea9c84"
dependencies = [
"unicode-ident",
]
[[package]]
name = "quote"
version = "1.0.38"
version = "1.0.40"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0e4dccaaaf89514f546c693ddc140f729f958c247918a13380cccc6078391acc"
checksum = "1885c039570dc00dcb4ff087a89e185fd56bae234ddc7f056a945bf36467248d"
dependencies = [
"proc-macro2",
]
@ -116,9 +116,9 @@ checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c"
[[package]]
name = "syn"
version = "2.0.96"
version = "2.0.100"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d5d0adab1ae378d7f53bdebc67a39f1f151407ef230f0ce2883572f5d8985c80"
checksum = "b09a44accad81e1ba1cd74a32461ba89dee89095ba17b32f5d03683b1b1fc2a0"
dependencies = [
"proc-macro2",
"quote",
@ -147,14 +147,14 @@ dependencies = [
[[package]]
name = "unicode-ident"
version = "1.0.14"
version = "1.0.18"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "adb9e6ca4f869e1180728b7950e35922a7fc6397f7b641499e8f3ef06e50dc83"
checksum = "5a5f39404a5da50712a4c1eecf25e90dd62b613502b7e925fd4e4d19b5c96512"
[[package]]
name = "unreal-niggery-rs"
version = "0.1.0"
source = "git+https://git.xeondev.com/xavo95/unreal-niggery-rs.git#f4043b9cd0def3939e2904415626071b945b0b3e"
source = "git+https://git.xeondev.com/xavo95/unreal-niggery-rs.git#07330a27e1e49f0544f5fde51698c0a2300cc737"
dependencies = [
"widestring",
]
@ -173,38 +173,60 @@ dependencies = [
[[package]]
name = "widestring"
version = "1.1.0"
version = "1.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7219d36b6eac893fa81e84ebe06485e7dcbb616177469b142df14f1f4deb1311"
checksum = "dd7cf3379ca1aac9eea11fba24fd7e315d621f8dfe35c8d7d2be8b793726e07d"
[[package]]
name = "windows"
version = "0.59.0"
version = "0.61.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7f919aee0a93304be7f62e8e5027811bbba96bcb1de84d6618be56e43f8a32a1"
checksum = "c5ee8f3d025738cb02bad7868bbb5f8a6327501e870bf51f1b455b0a2454a419"
dependencies = [
"windows-collections",
"windows-core",
"windows-future",
"windows-link",
"windows-numerics",
]
[[package]]
name = "windows-collections"
version = "0.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3beeceb5e5cfd9eb1d76b381630e82c4241ccd0d27f1a39ed41b2760b255c5e8"
dependencies = [
"windows-core",
"windows-targets",
]
[[package]]
name = "windows-core"
version = "0.59.0"
version = "0.61.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "810ce18ed2112484b0d4e15d022e5f598113e220c53e373fb31e67e21670c1ce"
checksum = "4763c1de310c86d75a878046489e2e5ba02c649d185f21c67d4cf8a56d098980"
dependencies = [
"windows-implement",
"windows-interface",
"windows-link",
"windows-result",
"windows-strings",
"windows-targets",
]
[[package]]
name = "windows-future"
version = "0.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7a1d6bbefcb7b60acd19828e1bc965da6fcf18a7e39490c5f8be71e54a19ba32"
dependencies = [
"windows-core",
"windows-link",
]
[[package]]
name = "windows-implement"
version = "0.59.0"
version = "0.60.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "83577b051e2f49a058c308f17f273b570a6a758386fc291b5f6a934dd84e48c1"
checksum = "a47fddd13af08290e67f4acabf4b459f647552718f683a7b415d290ac744a836"
dependencies = [
"proc-macro2",
"quote",
@ -213,9 +235,9 @@ dependencies = [
[[package]]
name = "windows-interface"
version = "0.59.0"
version = "0.59.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "cb26fd936d991781ea39e87c3a27285081e3c0da5ca0fcbc02d368cc6f52ff01"
checksum = "bd9211b69f8dcdfa817bfd14bf1c97c9188afa36f4750130fcdf3f400eca9fa8"
dependencies = [
"proc-macro2",
"quote",
@ -223,21 +245,37 @@ dependencies = [
]
[[package]]
name = "windows-result"
version = "0.3.0"
name = "windows-link"
version = "0.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d08106ce80268c4067c0571ca55a9b4e9516518eaa1a1fe9b37ca403ae1d1a34"
checksum = "76840935b766e1b0a05c0066835fb9ec80071d4c09a16f6bd5f7e655e3c14c38"
[[package]]
name = "windows-numerics"
version = "0.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9150af68066c4c5c07ddc0ce30421554771e528bde427614c61038bc2c92c2b1"
dependencies = [
"windows-targets",
"windows-core",
"windows-link",
]
[[package]]
name = "windows-result"
version = "0.3.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c64fd11a4fd95df68efcfee5f44a294fe71b8bc6a91993e2791938abcc712252"
dependencies = [
"windows-link",
]
[[package]]
name = "windows-strings"
version = "0.3.0"
version = "0.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b888f919960b42ea4e11c2f408fadb55f78a9f236d5eef084103c8ce52893491"
checksum = "7a2ba9642430ee452d5a7aa78d72907ebe8cfda358e8cb7918a2050581322f97"
dependencies = [
"windows-targets",
"windows-link",
]
[[package]]
@ -246,29 +284,13 @@ version = "0.42.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5a3e1820f08b8513f676f7ab6c1f99ff312fb97b553d30ff4dd86f9f15728aa7"
dependencies = [
"windows_aarch64_gnullvm 0.42.2",
"windows_aarch64_msvc 0.42.2",
"windows_i686_gnu 0.42.2",
"windows_i686_msvc 0.42.2",
"windows_x86_64_gnu 0.42.2",
"windows_x86_64_gnullvm 0.42.2",
"windows_x86_64_msvc 0.42.2",
]
[[package]]
name = "windows-targets"
version = "0.53.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b1e4c7e8ceaaf9cb7d7507c974735728ab453b67ef8f18febdd7c11fe59dca8b"
dependencies = [
"windows_aarch64_gnullvm 0.53.0",
"windows_aarch64_msvc 0.53.0",
"windows_i686_gnu 0.53.0",
"windows_i686_gnullvm",
"windows_i686_msvc 0.53.0",
"windows_x86_64_gnu 0.53.0",
"windows_x86_64_gnullvm 0.53.0",
"windows_x86_64_msvc 0.53.0",
"windows_aarch64_gnullvm",
"windows_aarch64_msvc",
"windows_i686_gnu",
"windows_i686_msvc",
"windows_x86_64_gnu",
"windows_x86_64_gnullvm",
"windows_x86_64_msvc",
]
[[package]]
@ -277,86 +299,38 @@ version = "0.42.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8"
[[package]]
name = "windows_aarch64_gnullvm"
version = "0.53.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "86b8d5f90ddd19cb4a147a5fa63ca848db3df085e25fee3cc10b39b6eebae764"
[[package]]
name = "windows_aarch64_msvc"
version = "0.42.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43"
[[package]]
name = "windows_aarch64_msvc"
version = "0.53.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c7651a1f62a11b8cbd5e0d42526e55f2c99886c77e007179efff86c2b137e66c"
[[package]]
name = "windows_i686_gnu"
version = "0.42.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f"
[[package]]
name = "windows_i686_gnu"
version = "0.53.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c1dc67659d35f387f5f6c479dc4e28f1d4bb90ddd1a5d3da2e5d97b42d6272c3"
[[package]]
name = "windows_i686_gnullvm"
version = "0.53.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9ce6ccbdedbf6d6354471319e781c0dfef054c81fbc7cf83f338a4296c0cae11"
[[package]]
name = "windows_i686_msvc"
version = "0.42.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060"
[[package]]
name = "windows_i686_msvc"
version = "0.53.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "581fee95406bb13382d2f65cd4a908ca7b1e4c2f1917f143ba16efe98a589b5d"
[[package]]
name = "windows_x86_64_gnu"
version = "0.42.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36"
[[package]]
name = "windows_x86_64_gnu"
version = "0.53.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2e55b5ac9ea33f2fc1716d1742db15574fd6fc8dadc51caab1c16a3d3b4190ba"
[[package]]
name = "windows_x86_64_gnullvm"
version = "0.42.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3"
[[package]]
name = "windows_x86_64_gnullvm"
version = "0.53.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0a6e035dd0599267ce1ee132e51c27dd29437f63325753051e71dd9e42406c57"
[[package]]
name = "windows_x86_64_msvc"
version = "0.42.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0"
[[package]]
name = "windows_x86_64_msvc"
version = "0.53.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "271414315aff87387382ec3d271b52d7ae78726f5d44ac98b4f4030c91880486"

View file

@ -9,8 +9,8 @@ crate-type = ["cdylib"]
[features]
advanced = []
cn_beta_2_2_1 = []
os_live_2_1_0 = []
cn_beta_2_3_0 = []
os_live_2_2_0 = []
enable-sdk = []
only-sig-bypass = []
regular = ["dep:regex", "dep:widestring"]
@ -20,8 +20,8 @@ ilhook = "2.1.1"
interceptor-rs = { git = "https://git.xeondev.com/xavo95/interceptor-rs.git" }
regex = { version = "1.11.1", optional = true }
unreal-niggery-rs = { git = "https://git.xeondev.com/xavo95/unreal-niggery-rs.git" }
widestring = { version = "1.1.0", optional = true }
windows = { version = "0.59.0", features = [
widestring = { version = "1.2.0", optional = true }
windows = { version = "0.61.1", features = [
"Win32_Foundation",
"Win32_System_LibraryLoader",
"Win32_System_SystemServices",

View file

@ -1,3 +1,37 @@
# OS LIVE 2.1.0
```rust
#[cfg(feature = "os_live_2_1_0")]
pub(crate) const CONFIG: InjectConfiguration = InjectConfiguration {
f_pak_file_check: 0x40A6840,
f_pak_file_check_preamble: 0x8D48574157565540,
resize_grow: 0x08D1430,
f_print_f: 0x2736C10,
add_pak_folders_entry: 0x40ADD20,
add_pak_folders_ret: 0x40B05C0,
#[cfg(all(not(feature = "only-sig-bypass"), feature = "regular"))]
ue_curl_config: CurlConfig {
handle_rcx_relative_offset: 0x110,
url_handle_relative_offset: 0x880,
curl_easy_setopt: 0x6415920,
curl_easy_perform: 0x3A430D0,
},
#[cfg(all(not(feature = "only-sig-bypass"), feature = "regular"))]
replacement_config: ReplacementConfig {
config_server_regex: r#"^(https|http)://.*/([a-zA-Z0-9]{32}/index\.json)$"#,
// hotpatch_server_regex: "",
log_server_regex: r#"^(https|http)://.*\.cos\..*\.myqcloud\.com/(.*)$"#,
// sdk_server_regex: "",
},
#[cfg(all(not(feature = "enable-sdk"), not(feature = "only-sig-bypass"), feature = "regular"))]
disable_sdk: DisableSdkConfiguration {
sdk_dll: s!("KRSDK.dll"),
eula_accept: 0x96800,
sdk_go_away: 0xA2680,
},
};
```
# CN BETA 2.2.0
```rust

View file

@ -13,8 +13,8 @@ EXIT /B 0
:buildAllVariants
SETLOCAL ENABLEDELAYEDEXPANSION
call:cargoReleaseBuild "cn_beta_2_2_1,%~1" %~1
call:cargoReleaseBuild "os_live_2_1_0,%~1" %~1
call:cargoReleaseBuild "cn_beta_2_3_0,%~1" %~1
call:cargoReleaseBuild "os_live_2_2_0,%~1" %~1
ENDLOCAL
EXIT /B 0

View file

@ -48,20 +48,20 @@ pub(crate) struct InjectConfiguration {
pub(crate) disable_sdk: DisableSdkConfiguration,
}
#[cfg(feature = "cn_beta_2_2_1")]
#[cfg(feature = "cn_beta_2_3_0")]
pub(crate) const CONFIG: InjectConfiguration = InjectConfiguration {
f_pak_file_check: 0x41CE7F0,
f_pak_file_check: 0x4274440,
f_pak_file_check_preamble: 0x8D48574157565540,
resize_grow: 0x08D9510,
f_print_f: 0x2852CE0,
add_pak_folders_entry: 0x41D5CD0,
add_pak_folders_ret: 0x41D8570,
resize_grow: 0x8E2D30,
f_print_f: 0x28E5F70,
add_pak_folders_entry: 0x427B910,
add_pak_folders_ret: 0x427E1B0,
#[cfg(all(not(feature = "only-sig-bypass"), feature = "regular"))]
ue_curl_config: CurlConfig {
handle_rcx_relative_offset: 0x110,
url_handle_relative_offset: 0x880,
curl_easy_setopt: 0x657A660,
curl_easy_perform: 0x3B6A440,
curl_easy_setopt: 0x66325A0,
curl_easy_perform: 0x3C0BFA0,
},
#[cfg(all(not(feature = "only-sig-bypass"), feature = "regular"))]
replacement_config: ReplacementConfig {
@ -73,25 +73,25 @@ pub(crate) const CONFIG: InjectConfiguration = InjectConfiguration {
#[cfg(all(not(feature = "enable-sdk"), not(feature = "only-sig-bypass"), feature = "regular"))]
disable_sdk: DisableSdkConfiguration {
sdk_dll: s!("KRSDKEx.dll"),
eula_accept: 0x4ED80,
sdk_go_away: 0x91FE0,
eula_accept: 0x4ED80, // TODO:
sdk_go_away: 0x93620,
},
};
#[cfg(feature = "os_live_2_1_0")]
#[cfg(feature = "os_live_2_2_0")]
pub(crate) const CONFIG: InjectConfiguration = InjectConfiguration {
f_pak_file_check: 0x40A6840,
f_pak_file_check: 0x418A2F0,
f_pak_file_check_preamble: 0x8D48574157565540,
resize_grow: 0x08D1430,
f_print_f: 0x2736C10,
add_pak_folders_entry: 0x40ADD20,
add_pak_folders_ret: 0x40B05C0,
resize_grow: 0x08D6D70,
f_print_f: 0x280B240,
add_pak_folders_entry: 0x41917D0,
add_pak_folders_ret: 0x4194070,
#[cfg(all(not(feature = "only-sig-bypass"), feature = "regular"))]
ue_curl_config: CurlConfig {
handle_rcx_relative_offset: 0x110,
url_handle_relative_offset: 0x880,
curl_easy_setopt: 0x6415920,
curl_easy_perform: 0x3A430D0,
curl_easy_setopt: 0x64FF840,
curl_easy_perform: 0x3B21490,
},
#[cfg(all(not(feature = "only-sig-bypass"), feature = "regular"))]
replacement_config: ReplacementConfig {

View file

@ -72,9 +72,10 @@ pub(crate) fn configure_extras(interceptor: &mut interceptor_rs::Interceptor) {
}
};
interceptor
.replace((krsdk_ex.0 as usize) + CONFIG.disable_sdk.eula_accept, dummy, None)
.unwrap();
// TODO: Not needed, temporarily disable it
// interceptor
// .replace((krsdk_ex.0 as usize) + CONFIG.disable_sdk.eula_accept, dummy, None)
// .unwrap();
interceptor
.replace((krsdk_ex.0 as usize) + CONFIG.disable_sdk.sdk_go_away, dummy, None)

View file

@ -1,12 +1,11 @@
use ilhook::x64::Registers;
use interceptor_rs::Interceptor;
use std::sync::OnceLock;
use std::thread;
use std::time::Duration;
use ilhook::x64::Registers;
use interceptor_rs::Interceptor;
use unreal_niggery_rs::Add;
use unreal_niggery_rs::f_string::{FString, Printf};
use unreal_niggery_rs::t_array::TArray;
use unreal_niggery_rs::Add;
use windows::core::{PCSTR, PCWSTR};
use windows::Win32::Foundation::HINSTANCE;
use windows::Win32::System::Console;
@ -17,11 +16,11 @@ use config::CONFIG;
mod config;
#[cfg(all(not(feature = "only-sig-bypass"), feature = "regular"))]
mod replacer;
mod curl_utils;
#[cfg(all(not(feature = "only-sig-bypass"), feature = "regular"))]
mod extras;
#[cfg(all(not(feature = "only-sig-bypass"), feature = "regular"))]
mod curl_utils;
mod replacer;
static CUSTOM_PAK_FOLDER: OnceLock<String> = OnceLock::new();
@ -43,7 +42,11 @@ fn thread_func() {
let mut interceptor = Interceptor::new();
interceptor
.replace((module.0 as usize) + CONFIG.f_pak_file_check, fpakfile_check_replacement, None)
.replace(
(module.0 as usize) + CONFIG.f_pak_file_check,
fpakfile_check_replacement,
None,
)
.unwrap();
TArray::set_t_array_resize_grow_ptr(module.0 as usize + CONFIG.resize_grow);
@ -53,14 +56,26 @@ fn thread_func() {
println!("Found custom location for pak files: {value}");
let _ = CUSTOM_PAK_FOLDER.set(value).unwrap();
interceptor
.attach((module.0 as usize) + CONFIG.add_pak_folders_entry, add_pak_folders, None)
.attach(
(module.0 as usize) + CONFIG.add_pak_folders_entry,
add_pak_folders,
None,
)
.unwrap();
interceptor
.attach((module.0 as usize) + CONFIG.add_pak_folders_ret, debug_get_pak_folders, None)
.attach(
(module.0 as usize) + CONFIG.add_pak_folders_ret,
debug_get_pak_folders,
None,
)
.unwrap();
}
#[cfg(all(not(feature = "only-sig-bypass"), feature = "regular", feature = "advanced"))]
#[cfg(all(
not(feature = "only-sig-bypass"),
feature = "regular",
feature = "advanced"
))]
wicked_waifus_win_payload_advanced::enable_advanced_features(
module.0 as usize,
&mut interceptor,
@ -70,7 +85,8 @@ fn thread_func() {
enable_dump_paks: false,
enable_dump_buffer_contents: false,
enable_hook_find_file_in_pak: false,
}
enable_dump_magic: false,
},
);
#[cfg(all(not(feature = "only-sig-bypass"), feature = "regular"))]
@ -113,4 +129,4 @@ unsafe extern "system" fn DllMain(_: HINSTANCE, call_reason: u32, _: *mut ()) ->
}
true
}
}