diff --git a/Cargo.lock b/Cargo.lock index 9bd515a..9b2ecd1 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -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" diff --git a/Cargo.toml b/Cargo.toml index 6c524d3..c431cf6 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -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", diff --git a/archive.md b/archive.md index d37a5d7..e32c159 100644 --- a/archive.md +++ b/archive.md @@ -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 diff --git a/build.bat b/build.bat index 2b9e24d..5960dae 100644 --- a/build.bat +++ b/build.bat @@ -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 diff --git a/src/config.rs b/src/config.rs index eeee21e..093c5ae 100644 --- a/src/config.rs +++ b/src/config.rs @@ -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 { diff --git a/src/extras.rs b/src/extras.rs index eedf9ba..4cc4ab8 100644 --- a/src/extras.rs +++ b/src/extras.rs @@ -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) diff --git a/src/lib.rs b/src/lib.rs index 561d636..6ee7ca3 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -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 = 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 -} \ No newline at end of file +}