diff --git a/vivian/src/lib.rs b/vivian/src/lib.rs index e008517..f5c5dd3 100644 --- a/vivian/src/lib.rs +++ b/vivian/src/lib.rs @@ -32,12 +32,14 @@ unsafe fn thread_fn() { thread::sleep(Duration::from_secs(5)); util::disable_memory_protection(); - println!("vivian-patch (2.0.4 BETA) is initializing"); + println!("vivian-patch (2.0.5 BETA) is initializing"); println!( "to work with vivian-rs: https://git.xeondev.com/vivian-rs/vivian-rs/src/branch/2.0_beta" ); + println!("\nJoin us on Discord at https://discord.gg/reversedrooms\n\n\n"); + let mut module_manager = NapModuleManager::default(); module_manager.add::(); module_manager.add::(); diff --git a/vivian/src/modules/censorship_patch.rs b/vivian/src/modules/censorship_patch.rs index aed303e..ff10d27 100644 --- a/vivian/src/modules/censorship_patch.rs +++ b/vivian/src/modules/censorship_patch.rs @@ -3,11 +3,11 @@ use std::sync::atomic::{AtomicU32, Ordering}; use super::{ModuleInitError, NapModule, NapModuleContext}; -const SET_DITHER_CONFIG: usize = 0x8DF8980; +const SET_DITHER_CONFIG: usize = 0x86FE960; const DITHER_CONFIG_AVATAR_USING_DITHER_ALPHA: usize = 0x41; -const ON_ENTER_SCENE_SC_NOTIFY: usize = 0x83862A0; -const ENTER_SCENE_SC_NOTIFY_SCENE_DATA: usize = 0x18; +const ON_ENTER_SCENE_SC_NOTIFY: usize = 0x85088C0; +const ENTER_SCENE_SC_NOTIFY_SCENE_DATA: usize = 0x20; const SCENE_DATA_SCENE_TYPE: usize = 0x6C; const SCENE_TYPE_HALL: u32 = 1; diff --git a/vivian/src/modules/crypto.rs b/vivian/src/modules/crypto.rs index 3a8b714..93b77ef 100644 --- a/vivian/src/modules/crypto.rs +++ b/vivian/src/modules/crypto.rs @@ -7,14 +7,14 @@ use crate::{ util::{import, GAME_ASSEMBLY_BASE}, }; -import!(rsa_create() -> usize = 0x1B56B2E0); -import!(rsa_from_xml_string(instance: usize, xml_string: usize) -> usize = 0x1B56B520); -import!(il2cpp_string_new(cstr: *const u8) -> usize = 0x115F1B0); +import!(rsa_create() -> usize = 0x1B582F20); +import!(rsa_from_xml_string(instance: usize, xml_string: usize) -> usize = 0x1B583160); +import!(il2cpp_string_new(cstr: *const u8) -> usize = 0x1158AA0); pub unsafe fn initialize_rsa_public_key() { const SERVER_PUBLIC_KEY: &str = include_str!("../../server_public_key.xml"); let rsa_public_key_backdoor_field = - ((*(GAME_ASSEMBLY_BASE.wrapping_add(0x5552100) as *const usize)) + 252792) as *mut usize; + ((*(GAME_ASSEMBLY_BASE.wrapping_add(0x554E500) as *const usize)) + 252856) as *mut usize; let rsa = rsa_create(); rsa_from_xml_string( @@ -33,18 +33,36 @@ pub unsafe fn initialize_rsa_public_key() { pub unsafe fn replace_sdk_public_key_string_literal() { const SDK_PUBLIC_KEY: &str = include_str!("../../sdk_public_key.xml"); - *(GAME_ASSEMBLY_BASE.wrapping_add(0x5954398) as *mut usize) = il2cpp_string_new( + *(GAME_ASSEMBLY_BASE.wrapping_add(0x5950C50) as *mut usize) = il2cpp_string_new( CString::new(SDK_PUBLIC_KEY) .unwrap() .to_bytes_with_nul() .as_ptr(), ) as usize; + + *(GAME_ASSEMBLY_BASE.wrapping_add(0x5974060) as *mut usize) = il2cpp_string_new( + [27818, 40348, 47410, 27936, 51394, 33172, 51987, 8709, 44748, + 23705, 45753, 21092, 57054, 52661, 369, 62630, 11725, 7496, 36921, 28271, + 34880, 52645, 31515, 18214, 3108, 2077, 13490, 25459, 58590, 47504, 15163, + 8951, 44748, 23705, 45753, 29284, 57054, 52661] + .into_iter() + .enumerate() + .flat_map(|(i, v)| { + let b = (((i + ((i >> 31) >> 29)) & 0xF8).wrapping_sub(i)) as i16; + (((v << ((b + 11) & 0xF)) | (v >> ((-11 - b) & 0xF))) & 0xFFFF_u16) + .to_be_bytes() + .into_iter() + }) + .chain([0]) + .collect::>() + .as_ptr(), + ) as usize; } pub unsafe fn monitor_network_state(interceptor: &mut Interceptor) { interceptor .attach( - GAME_ASSEMBLY_BASE.wrapping_add(0xD8AAEC0), + GAME_ASSEMBLY_BASE.wrapping_add(0xDE96720), on_network_state_change, ) .unwrap(); diff --git a/vivian/src/modules/hoyopass_patch.rs b/vivian/src/modules/hoyopass_patch.rs index 27f5abf..a6b4b5a 100644 --- a/vivian/src/modules/hoyopass_patch.rs +++ b/vivian/src/modules/hoyopass_patch.rs @@ -4,10 +4,10 @@ use crate::util::GAME_ASSEMBLY_BASE; use super::{ModuleInitError, NapModule, NapModuleContext}; -const ON_COMBO_INIT_SUCCESS: usize = 0x1ACA72F0; -const STATICS: usize = 0x5552100; -const STATIC_ID: usize = 34512; -const FIELD_OFFSET: usize = 64; +const ON_COMBO_INIT_SUCCESS: usize = 0x1ACCE700; +const STATICS: usize = 0x554E500; +const STATIC_ID: usize = 34496; +const FIELD_OFFSET: usize = 0x44; pub struct HoyopassPatch; diff --git a/vivian/src/modules/network.rs b/vivian/src/modules/network.rs index b39299d..2137bf6 100644 --- a/vivian/src/modules/network.rs +++ b/vivian/src/modules/network.rs @@ -6,8 +6,8 @@ use crate::util::{self, import, read_csharp_string}; use super::{ModuleInitError, NapModule, NapModuleContext}; -const MAKE_INITIAL_URL: usize = 0x1D1458E0; -const WEB_REQUEST_CREATE: usize = 0x1CC2D2A0; +const MAKE_INITIAL_URL: usize = 0x1D172280; +const WEB_REQUEST_CREATE: usize = 0x1CC5EC00; pub struct Network; @@ -37,7 +37,7 @@ unsafe extern "win64" fn on_web_request_create(reg: *mut Registers, _: usize) { } } -import!(il2cpp_string_new(cstr: *const u8) -> usize = 0x115F1B0); +import!(il2cpp_string_new(cstr: *const u8) -> usize = 0x1158AA0); impl Network { const SDK_URL: &str = "http://127.0.0.1:20100";