CNBeta 1.7.0 Support

This commit is contained in:
traffic95 2025-03-11 15:50:55 +01:00
parent c264b37593
commit f0d9bee50a
4 changed files with 29 additions and 13 deletions

View file

@ -12,7 +12,7 @@ use windows::Win32::System::Threading::{
PROCESS_INFORMATION, STARTUPINFOA, PROCESS_INFORMATION, STARTUPINFOA,
}; };
const GAME_EXECUTABLE: PCSTR = s!("ZenlessZoneZero.exe"); const GAME_EXECUTABLE: PCSTR = s!("ZenlessZoneZeroBeta.exe");
const INJECT_DLL: &str = "trigger.dll"; const INJECT_DLL: &str = "trigger.dll";
fn inject_standard(h_target: HANDLE, dll_path: &str) -> bool { fn inject_standard(h_target: HANDLE, dll_path: &str) -> bool {

View file

@ -2,7 +2,7 @@ use ilhook::x64::Registers;
use super::{ModuleInitError, NapModule, NapModuleContext}; use super::{ModuleInitError, NapModule, NapModuleContext};
const SET_DITHER_CONFIG: usize = 0x95BCFF0; const SET_DITHER_CONFIG: usize = 0x73A07B0;
pub struct CensorshipPatch; pub struct CensorshipPatch;

View file

@ -7,14 +7,14 @@ use crate::{
util::{import, read_csharp_string, GAME_ASSEMBLY_BASE}, util::{import, read_csharp_string, GAME_ASSEMBLY_BASE},
}; };
import!(rsa_create() -> usize = 0x18F33050); import!(rsa_create() -> usize = 0x1919B9A0);
import!(rsa_from_xml_string(instance: usize, xml_string: usize) -> usize = 0x18F33290); import!(rsa_from_xml_string(instance: usize, xml_string: usize) -> usize = 0x1919BBE0);
import!(il2cpp_string_new(cstr: *const u8) -> usize = 0x2E7FC0); import!(il2cpp_string_new(cstr: *const u8) -> usize = 0x2961D0);
pub unsafe fn initialize_rsa_public_key() { pub unsafe fn initialize_rsa_public_key() {
const SERVER_PUBLIC_KEY: &str = include_str!("../../server_public_key.xml"); const SERVER_PUBLIC_KEY: &str = include_str!("../../server_public_key.xml");
let rsa_public_key_backdoor_field = let rsa_public_key_backdoor_field =
((*(GAME_ASSEMBLY_BASE.wrapping_add(0x4EB7100) as *const usize)) + 244072) as *mut usize; ((*(GAME_ASSEMBLY_BASE.wrapping_add(0x5034B50) as *const usize)) + 246200) as *mut usize;
let rsa = rsa_create(); let rsa = rsa_create();
rsa_from_xml_string( rsa_from_xml_string(
@ -33,14 +33,14 @@ pub unsafe fn initialize_rsa_public_key() {
pub unsafe fn replace_sdk_public_key_string_literal() { pub unsafe fn replace_sdk_public_key_string_literal() {
const SDK_PUBLIC_KEY: &str = include_str!("../../sdk_public_key.xml"); const SDK_PUBLIC_KEY: &str = include_str!("../../sdk_public_key.xml");
*(GAME_ASSEMBLY_BASE.wrapping_add(0x51C92D8) as *mut usize) = il2cpp_string_new( *(GAME_ASSEMBLY_BASE.wrapping_add(0x5358BD0) as *mut usize) = il2cpp_string_new(
CString::new(SDK_PUBLIC_KEY) CString::new(SDK_PUBLIC_KEY)
.unwrap() .unwrap()
.to_bytes_with_nul() .to_bytes_with_nul()
.as_ptr(), .as_ptr(),
) as usize; ) as usize;
*(GAME_ASSEMBLY_BASE.wrapping_add(0x5257950) as *mut usize) = il2cpp_string_new( *(GAME_ASSEMBLY_BASE.wrapping_add(0x5378FD0) as *mut usize) = il2cpp_string_new(
[ [
27818, 40348, 47410, 27936, 51394, 33172, 51987, 33287, 44524, 39195, 47922, 8238, 27818, 40348, 47410, 27936, 51394, 33172, 51987, 33287, 44524, 39195, 47922, 8238,
53932, 42445, 929, 38470, 27758, 56475, 5938, 26471, 58462, 55701, 37675, 22326, 36428, 53932, 42445, 929, 38470, 27758, 56475, 5938, 26471, 58462, 55701, 37675, 22326, 36428,
@ -63,14 +63,14 @@ pub unsafe fn replace_sdk_public_key_string_literal() {
pub unsafe fn monitor_network_state(interceptor: &mut Interceptor) { pub unsafe fn monitor_network_state(interceptor: &mut Interceptor) {
interceptor interceptor
.attach( .attach(
GAME_ASSEMBLY_BASE.wrapping_add(0x773B460), GAME_ASSEMBLY_BASE.wrapping_add(0x97EA020),
on_network_state_change, on_network_state_change,
) )
.unwrap(); .unwrap();
interceptor interceptor
.attach( .attach(
GAME_ASSEMBLY_BASE.wrapping_add(0x8F88960), GAME_ASSEMBLY_BASE.wrapping_add(0xAB8AE80),
download_data_slave, download_data_slave,
) )
.unwrap(); .unwrap();

View file

@ -2,11 +2,12 @@ use std::ffi::CString;
use ilhook::x64::Registers; use ilhook::x64::Registers;
use crate::util::{self, import}; use crate::util::{self, import, read_csharp_string};
use super::{ModuleInitError, NapModule, NapModuleContext}; use super::{ModuleInitError, NapModule, NapModuleContext};
const MAKE_INITIAL_URL: usize = 0x6D2C560; const MAKE_INITIAL_URL: usize = 0x657B460;
const WEB_REQUEST_CREATE: usize = 0x1A647CD0;
pub struct Network; pub struct Network;
@ -17,11 +18,26 @@ impl NapModule for NapModuleContext<Network> {
Network::on_make_initial_url, Network::on_make_initial_url,
)?; )?;
self.interceptor.attach(
self.base.wrapping_add(WEB_REQUEST_CREATE),
on_web_request_create,
)?;
Ok(()) Ok(())
} }
} }
import!(il2cpp_string_new(cstr: *const u8) -> usize = 0x2E7FC0); unsafe extern "win64" fn on_web_request_create(reg: *mut Registers, _: usize) {
let s = read_csharp_string((*reg).rcx as usize);
if s.contains("StandaloneWindows64/cn/") {
let s = s.replace("StandaloneWindows64/cn/", "StandaloneWindows64/oversea/");
println!("replaced: {s}");
(*reg).rcx =
il2cpp_string_new(CString::new(s).unwrap().to_bytes_with_nul().as_ptr()) as u64;
}
}
import!(il2cpp_string_new(cstr: *const u8) -> usize = 0x2961D0);
impl Network { impl Network {
const SDK_URL: &str = "http://127.0.0.1:20100"; const SDK_URL: &str = "http://127.0.0.1:20100";