diff --git a/src-tauri/Cargo.lock b/src-tauri/Cargo.lock index 132fc19..fb77f7d 100644 --- a/src-tauri/Cargo.lock +++ b/src-tauri/Cargo.lock @@ -719,7 +719,6 @@ dependencies = [ "http", "hudsucker", "is_elevated", - "libloading", "once_cell", "open", "rcgen", @@ -1887,16 +1886,6 @@ dependencies = [ "pkg-config", ] -[[package]] -name = "libloading" -version = "0.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "efbc0f03f9a775e9f6aed295c6a1ba2253c5757a9e03d55c6caa46a681abcddd" -dependencies = [ - "cfg-if 1.0.0", - "winapi", -] - [[package]] name = "line-wrap" version = "0.1.1" diff --git a/src-tauri/Cargo.toml b/src-tauri/Cargo.toml index 2ac2197..39dca36 100644 --- a/src-tauri/Cargo.toml +++ b/src-tauri/Cargo.toml @@ -56,7 +56,6 @@ futures-util = "0.3.14" rcgen = { version = "0.9", features = ["x509-parser"] } # metadata stuff -libloading = "0.7" regex = "1" # other diff --git a/src-tauri/mhycrypto.dll b/src-tauri/mhycrypto.dll deleted file mode 100644 index 111a2e4..0000000 Binary files a/src-tauri/mhycrypto.dll and /dev/null differ diff --git a/src-tauri/mhycrypto/metadata.cpp b/src-tauri/mhycrypto/metadata.cpp index 392112b..d40f358 100644 --- a/src-tauri/mhycrypto/metadata.cpp +++ b/src-tauri/mhycrypto/metadata.cpp @@ -53,7 +53,7 @@ bool gen_global_metadata_key(uint8_t* src, size_t srcn) { return true; } -extern "C" void decrypt_global_metadata(uint8_t *data, size_t size) { +void decrypt_global_metadata_inner(uint8_t *data, size_t size) { uint8_t longkey[0xB00]; uint8_t longkeyp[0xB0]; uint8_t shortkey[16]; @@ -87,7 +87,16 @@ extern "C" void decrypt_global_metadata(uint8_t *data, size_t size) { recrypt_global_metadata_header_string_literals(data, size, literal_dec_key); } -extern "C" void encrypt_global_metadata(uint8_t* data, size_t size) { +extern "C" int decrypt_global_metadata(uint8_t *data, size_t size) { + try { + decrypt_global_metadata_inner(data, size); + return 0; + } catch (...) { + return -1; + } +} + +void encrypt_global_metadata_inner(uint8_t* data, size_t size) { uint8_t literal_dec_key[0x5000]; gen_global_metadata_key(data + size - 0x4000, 0x4000); @@ -126,3 +135,12 @@ extern "C" void encrypt_global_metadata(uint8_t* data, size_t size) { } } } + +extern "C" int encrypt_global_metadata(uint8_t* data, size_t size) { + try { + encrypt_global_metadata_inner(data, size); + return 0; + } catch (...) { + return -1; + } +} diff --git a/src-tauri/mhycrypto/metadata.h b/src-tauri/mhycrypto/metadata.h index f2c8c5b..d92c18d 100644 --- a/src-tauri/mhycrypto/metadata.h +++ b/src-tauri/mhycrypto/metadata.h @@ -4,7 +4,7 @@ #include #include -extern "C" void decrypt_global_metadata(uint8_t *data, size_t size); -extern "C" void encrypt_global_metadata(uint8_t *data, size_t size); +extern "C" int decrypt_global_metadata(uint8_t *data, size_t size); +extern "C" int encrypt_global_metadata(uint8_t *data, size_t size); #endif //METADATA_H diff --git a/src-tauri/src/metadata_patcher.rs b/src-tauri/src/metadata_patcher.rs index d551330..7965676 100644 --- a/src-tauri/src/metadata_patcher.rs +++ b/src-tauri/src/metadata_patcher.rs @@ -4,29 +4,10 @@ use std::fs::OpenOptions; use std::io::Read; use std::io::Write; +// For these two functions, a non-zero return value indicates failure. extern "C" { - fn decrypt_global_metadata(data: *mut u8, size: u64); - fn encrypt_global_metadata(data: *mut u8, size: u64); -} - -fn dll_decrypt_global_metadata( - data: *mut u8, - size: u64, -) -> Result> { - unsafe { - decrypt_global_metadata(data, size); - Ok(true) - } -} - -fn dll_encrypt_global_metadata( - data: *mut u8, - size: u64, -) -> Result> { - unsafe { - encrypt_global_metadata(data, size); - Ok(true) - } + fn decrypt_global_metadata(data: *mut u8, size: usize) -> i32; + fn encrypt_global_metadata(data: *mut u8, size: usize) -> i32; } #[tauri::command] @@ -89,15 +70,13 @@ fn decrypt_metadata(file_path: &str) -> Vec { } // Decrypt metadata file - match dll_decrypt_global_metadata(data.as_mut_ptr(), data.len().try_into().unwrap()) { - Ok(_) => { - println!("Successfully decrypted global-metadata"); - data - } - Err(e) => { - println!("Failed to decrypt global-metadata: {}", e); - Vec::new() - } + let success = unsafe { decrypt_global_metadata(data.as_mut_ptr(), data.len()) } == 0; + if success { + println!("Successfully decrypted global-metadata"); + data + } else { + println!("Failed to decrypt global-metadata"); + Vec::new() } } @@ -150,15 +129,13 @@ fn replace_rsa_key(old_data: &str, to_replace: &str, file_name: &str) -> String fn encrypt_metadata(old_data: &[u8]) -> Vec { let mut data = old_data.to_vec(); - match dll_encrypt_global_metadata(data.as_mut_ptr(), data.len().try_into().unwrap()) { - Ok(_) => { - println!("Successfully encrypted global-metadata"); - data - } - Err(e) => { - println!("Failed to encrypt global-metadata: {}", e); - Vec::new() - } + let success = unsafe { encrypt_global_metadata(data.as_mut_ptr(), data.len()) } == 0; + if success { + println!("Successfully encrypted global-metadata"); + data + } else { + println!("Failed to encrypt global-metadata"); + Vec::new() } } diff --git a/src-tauri/tauri.conf.json b/src-tauri/tauri.conf.json index e5bc109..41b4c5a 100644 --- a/src-tauri/tauri.conf.json +++ b/src-tauri/tauri.conf.json @@ -40,7 +40,7 @@ "providerShortName": null, "signingIdentity": null }, - "resources": ["lang/*.json", "keys/*", "./mhycrypto.dll"], + "resources": ["lang/*.json", "keys/*"], "targets": "all", "windows": { "allowDowngrades": false,