diff --git a/trigger/src/lib.rs b/trigger/src/lib.rs index 690ff8c..6319fbd 100644 --- a/trigger/src/lib.rs +++ b/trigger/src/lib.rs @@ -4,12 +4,9 @@ use std::{thread, time::Duration}; use interceptor::Interceptor; use modules::{ - censorship_patch::CensorshipPatch, - crypto::{ + censorship_patch::CensorshipPatch, crypto::{ initialize_rsa_public_key, monitor_network_state, replace_sdk_public_key_string_literal, - }, - network::Network, - NapModuleManager, + }, hoyopass_patch::HoyopassPatch, network::Network, NapModuleManager }; use windows::{ core::s, @@ -36,6 +33,7 @@ unsafe fn thread_fn() { let mut module_manager = NapModuleManager::default(); module_manager.add::(); module_manager.add::(); + module_manager.add::(); module_manager.init().expect("failed to initialize modules"); initialize_rsa_public_key(); diff --git a/trigger/src/modules/hoyopass_patch.rs b/trigger/src/modules/hoyopass_patch.rs new file mode 100644 index 0000000..6e6866c --- /dev/null +++ b/trigger/src/modules/hoyopass_patch.rs @@ -0,0 +1,32 @@ +use ilhook::x64::Registers; + +use crate::util::GAME_ASSEMBLY_BASE; + +use super::{ModuleInitError, NapModule, NapModuleContext}; + +const ON_COMBO_INIT_SUCCESS: usize = 0x18FAD620; +const STATICS: usize = 0x4EB7100; +const STATIC_ID: usize = 34352; +const FIELD_OFFSET: usize = 67; + +pub struct HoyopassPatch; + +impl NapModule for NapModuleContext { + unsafe fn init(&mut self) -> Result<(), ModuleInitError> { + self.interceptor.attach( + self.base.wrapping_add(ON_COMBO_INIT_SUCCESS), + HoyopassPatch::on_combo_init_success, + )?; + + Ok(()) + } +} + +impl HoyopassPatch { + pub unsafe extern "win64" fn on_combo_init_success(_: *mut Registers, _: usize) { + let statics = *(GAME_ASSEMBLY_BASE.wrapping_add(STATICS) as *mut usize); + let config_manager = *(statics.wrapping_add(STATIC_ID) as *mut usize); + *(config_manager.wrapping_add(FIELD_OFFSET) as *mut bool) = false; + println!("HoYoPassPatch - OnComboInitSuccess()"); + } +} \ No newline at end of file diff --git a/trigger/src/modules/mod.rs b/trigger/src/modules/mod.rs index dcd4437..1359c0f 100644 --- a/trigger/src/modules/mod.rs +++ b/trigger/src/modules/mod.rs @@ -4,6 +4,7 @@ use crate::{interceptor::Interceptor, util}; pub mod censorship_patch; pub mod crypto; +pub mod hoyopass_patch; pub mod network; #[derive(thiserror::Error, Debug)]