Compare commits
2 commits
03225afd01
...
642edcf684
Author | SHA1 | Date | |
---|---|---|---|
642edcf684 | |||
64d36ab148 |
5 changed files with 91 additions and 17 deletions
49
Cargo.lock
generated
49
Cargo.lock
generated
|
@ -153,9 +153,9 @@ checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b"
|
|||
|
||||
[[package]]
|
||||
name = "windows"
|
||||
version = "0.54.0"
|
||||
version = "0.58.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "9252e5725dbed82865af151df558e754e4a3c2c30818359eb17465f1346a1b49"
|
||||
checksum = "dd04d41d93c4992d421894c18c8b43496aa748dd4c081bac0dc93eb0489272b6"
|
||||
dependencies = [
|
||||
"windows-core",
|
||||
"windows-targets",
|
||||
|
@ -163,20 +163,55 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "windows-core"
|
||||
version = "0.54.0"
|
||||
version = "0.58.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "12661b9c89351d684a50a8a643ce5f608e20243b9fb84687800163429f161d65"
|
||||
checksum = "6ba6d44ec8c2591c134257ce647b7ea6b20335bf6379a27dac5f1641fcf59f99"
|
||||
dependencies = [
|
||||
"windows-implement",
|
||||
"windows-interface",
|
||||
"windows-result",
|
||||
"windows-strings",
|
||||
"windows-targets",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "windows-result"
|
||||
version = "0.1.2"
|
||||
name = "windows-implement"
|
||||
version = "0.58.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "5e383302e8ec8515204254685643de10811af0ed97ea37210dc26fb0032647f8"
|
||||
checksum = "2bbd5b46c938e506ecbce286b6628a02171d56153ba733b6c741fc627ec9579b"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "windows-interface"
|
||||
version = "0.58.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "053c4c462dc91d3b1504c6fe5a726dd15e216ba718e84a0e46a88fbe5ded3515"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "windows-result"
|
||||
version = "0.2.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "1d1043d8214f791817bab27572aaa8af63732e11bf84aa21a45a78d6c317ae0e"
|
||||
dependencies = [
|
||||
"windows-targets",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "windows-strings"
|
||||
version = "0.1.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "4cd9b125c486025df0eabcb585e62173c6c9eddcec5d117d3b6e8c30e2ee4d10"
|
||||
dependencies = [
|
||||
"windows-result",
|
||||
"windows-targets",
|
||||
]
|
||||
|
||||
|
|
|
@ -7,9 +7,13 @@ edition = "2021"
|
|||
name = "shorekeeper"
|
||||
crate-type = ["cdylib"]
|
||||
|
||||
[features]
|
||||
cn_beta_1_3_0 = []
|
||||
os_live_1_3_0 = []
|
||||
|
||||
[dependencies]
|
||||
ilhook = "2.1.0"
|
||||
windows = { version = "0.54.0", features = [
|
||||
ilhook = "2.1.1"
|
||||
windows = { version = "0.58.0", features = [
|
||||
"Win32_Foundation",
|
||||
"Win32_System_LibraryLoader",
|
||||
"Win32_System_SystemServices",
|
||||
|
|
4
build.bat
Normal file
4
build.bat
Normal file
|
@ -0,0 +1,4 @@
|
|||
: Build for cn_beta_1_3_0
|
||||
cargo build --release --no-default-features -F cn_beta_1_3_0
|
||||
: Build for os_live_1_3_0
|
||||
cargo build --release --no-default-features -F os_live_1_3_0
|
20
src/lib.rs
20
src/lib.rs
|
@ -3,15 +3,19 @@ use std::time::Duration;
|
|||
|
||||
use ilhook::x64::Registers;
|
||||
use interceptor::Interceptor;
|
||||
use windows::core::{s, w, PCSTR, PCWSTR};
|
||||
use windows::core::{w, PCSTR, PCWSTR};
|
||||
use windows::Win32::System::Console;
|
||||
use windows::Win32::System::SystemServices::DLL_PROCESS_ATTACH;
|
||||
use windows::Win32::{Foundation::HINSTANCE, System::LibraryLoader::GetModuleHandleA};
|
||||
|
||||
mod interceptor;
|
||||
mod offsets;
|
||||
|
||||
const FPAKFILE_CHECK: usize = 0x3D2F460;
|
||||
const KUROHTTP_GET: usize = 0xFC8CF0;
|
||||
#[cfg(feature = "cn_beta_1_3_0")]
|
||||
use offsets::CN_BETA_1_3_0_CONFIG as CONFIG;
|
||||
|
||||
#[cfg(feature = "os_live_1_3_0")]
|
||||
use offsets::OS_LIVE_1_3_0_CONFIG as CONFIG;
|
||||
|
||||
unsafe fn thread_func() {
|
||||
Console::AllocConsole().unwrap();
|
||||
|
@ -24,28 +28,28 @@ unsafe fn thread_func() {
|
|||
let mut interceptor = Interceptor::new();
|
||||
interceptor
|
||||
.replace(
|
||||
(module.0 as usize) + FPAKFILE_CHECK,
|
||||
(module.0 as usize) + CONFIG.f_pak_file_check,
|
||||
fpakfile_check_replacement,
|
||||
)
|
||||
.unwrap();
|
||||
|
||||
interceptor
|
||||
.attach((module.0 as usize) + KUROHTTP_GET, on_kurohttp_get)
|
||||
.attach((module.0 as usize) + CONFIG.kuro_http_get, on_kurohttp_get)
|
||||
.unwrap();
|
||||
|
||||
let krsdk_ex = loop {
|
||||
match GetModuleHandleA(s!("KRSDKEx.dll")) {
|
||||
match GetModuleHandleA(CONFIG.sdk_dll) {
|
||||
Ok(handle) => break handle,
|
||||
Err(_) => thread::sleep(Duration::from_millis(1)),
|
||||
}
|
||||
};
|
||||
|
||||
interceptor
|
||||
.replace((krsdk_ex.0 as usize) + 0x4A690, dummy)
|
||||
.replace((krsdk_ex.0 as usize) + CONFIG.eula_accept, dummy)
|
||||
.unwrap();
|
||||
|
||||
interceptor
|
||||
.replace((krsdk_ex.0 as usize) + 0x8BB80, dummy)
|
||||
.replace((krsdk_ex.0 as usize) + CONFIG.sdk_go_away, dummy)
|
||||
.unwrap();
|
||||
|
||||
println!("Successfully initialized!");
|
||||
|
|
27
src/offsets.rs
Normal file
27
src/offsets.rs
Normal file
|
@ -0,0 +1,27 @@
|
|||
use windows::core::{PCSTR, s};
|
||||
|
||||
pub(crate) struct InjectConfiguration {
|
||||
pub(crate) f_pak_file_check: usize,
|
||||
pub(crate) kuro_http_get: usize,
|
||||
pub(crate) sdk_dll: PCSTR,
|
||||
pub(crate) eula_accept: usize,
|
||||
pub(crate) sdk_go_away: usize,
|
||||
}
|
||||
|
||||
#[cfg(feature = "cn_beta_1_3_0")]
|
||||
pub(crate) const CN_BETA_1_3_0_CONFIG: InjectConfiguration = InjectConfiguration {
|
||||
f_pak_file_check: 0x3D2F460,
|
||||
kuro_http_get: 0xFC8CF0,
|
||||
sdk_dll: s!("KRSDKEx.dll"),
|
||||
eula_accept: 0x4A690,
|
||||
sdk_go_away: 0x8BB80
|
||||
};
|
||||
|
||||
#[cfg(feature = "os_live_1_3_0")]
|
||||
pub(crate) const OS_LIVE_1_3_0_CONFIG: InjectConfiguration = InjectConfiguration {
|
||||
f_pak_file_check: 0x3CDC430,
|
||||
kuro_http_get: 0xFC6C20,
|
||||
sdk_dll: s!("KRSDK.dll"),
|
||||
eula_accept: 0x94710,
|
||||
sdk_go_away: 0x9FE10
|
||||
};
|
Loading…
Reference in a new issue