diff --git a/src/handler.rs b/src/handler.rs index bd512f6..65987f6 100644 --- a/src/handler.rs +++ b/src/handler.rs @@ -8,59 +8,59 @@ use windows::Win32::{ }; const VERSION_DATA: [u8; 64usize] = [ - 0x48u8, 0x89u8, 0x5cu8, 0x24u8, 0x10u8, 0x57u8, 0x48u8, 0x81u8, 0xecu8, 0xb0u8, 0x0u8, 0x0u8, - 0x0u8, 0x48u8, 0x8bu8, 0x5u8, 0x5cu8, 0xb4u8, 0x2au8, 0x0u8, 0x48u8, 0x33u8, 0xc4u8, 0x48u8, - 0x89u8, 0x44u8, 0x24u8, 0x40u8, 0x66u8, 0xfu8, 0x6fu8, 0x5u8, 0xacu8, 0xbfu8, 0x1fu8, 0x0u8, - 0x48u8, 0x8du8, 0x15u8, 0xadu8, 0xd5u8, 0x1au8, 0x0u8, 0x33u8, 0xc0u8, 0x48u8, 0x8bu8, 0xd9u8, - 0x48u8, 0x8du8, 0x4cu8, 0x24u8, 0x20u8, 0x66u8, 0x89u8, 0x44u8, 0x24u8, 0x20u8, 0xf3u8, 0xfu8, - 0x7fu8, 0x44u8, 0x24u8, 0x30u8, + 0xf3u8, 0x0fu8, 0x10u8, 0x87u8, 0xccu8, 0x17u8, 0x00u8, 0x00u8, 0xf2u8, 0x0fu8, 0x59u8, 0xcbu8, + 0x0fu8, 0x5au8, 0xc0u8, 0xf2u8, 0x0fu8, 0x5cu8, 0xd1u8, 0xf2u8, 0x0fu8, 0x58u8, 0xd0u8, 0xf2u8, + 0x0fu8, 0x11u8, 0x53u8, 0x28u8, 0xf3u8, 0x0fu8, 0x10u8, 0x8fu8, 0x10u8, 0x11u8, 0x00u8, 0x00u8, + 0xf2u8, 0x0fu8, 0x10u8, 0x06u8, 0x0fu8, 0x5au8, 0xc9u8, 0xf2u8, 0x0fu8, 0x59u8, 0xcbu8, 0xf2u8, + 0x0fu8, 0x5cu8, 0xc1u8, 0xf2u8, 0x0fu8, 0x11u8, 0x43u8, 0x20u8, 0x0fu8, 0x28u8, 0x74u8, 0x24u8, + 0x40u8, 0x48u8, 0x8bu8, 0x5cu8, ]; // I have to use the same number of bytes for each opcode because of spaghetti. I hate this -pub const NO_SEARCH_LOCKING_DATA: [(usize, [u8; 15usize], [u8; 15usize]); 3usize] = [ +pub const NO_SEARCH_LOCKING_DATA: [(usize, [u8; 18usize], [u8; 18usize]); 3usize] = [ ( - 0x3e6276usize, + 0x3e62c6usize, [ 0x0fu8, 0xb6u8, 0x8bu8, 0x41u8, 0x66u8, 0x02u8, 0x00u8, 0x8bu8, 0xc7u8, 0x83u8, 0xf9u8, - 0x01u8, 0x0fu8, 0x1fu8, 0x00u8, + 0x01u8, 0x0fu8, 0x1fu8, 0x00u8, 0xbau8, 0x04u8, 0x00u8, ], [ 0x3bu8, 0x8bu8, 0xd0u8, 0x05u8, 0x00u8, 0x00u8, 0x8bu8, 0xc7u8, 0x0fu8, 0xb6u8, 0x8bu8, - 0x41u8, 0x66u8, 0x02u8, 0x00u8, + 0x41u8, 0x66u8, 0x02u8, 0x00u8, 0xbau8, 0x04u8, 0x00u8, ], ), ( - 0x3e989ausize, + 0x3e98eausize, [ 0x0fu8, 0xb6u8, 0xfau8, 0x48u8, 0x8bu8, 0xd9u8, 0x80u8, 0xb9u8, 0x41u8, 0x66u8, 0x02u8, - 0x00u8, 0x01u8, 0xebu8, 0x03u8, + 0x00u8, 0x01u8, 0x0fu8, 0x1fu8, 0x44u8, 0x00u8, 0x00u8, ], [ 0x8bu8, 0x81u8, 0xd4u8, 0x05u8, 0x00u8, 0x00u8, 0x0fu8, 0xb6u8, 0xfau8, 0x48u8, 0x8bu8, - 0xd9u8, 0x3bu8, 0x81u8, 0xd0u8, + 0xd9u8, 0x3bu8, 0x81u8, 0xd0u8, 0x05u8, 0x00u8, 0x00u8, ], ), ( - 0x3e9ac2usize, + 0x3e9b12usize, [ 0x80u8, 0xb9u8, 0x41u8, 0x66u8, 0x02u8, 0x00u8, 0x01u8, 0x0fu8, 0x1fu8, 0x44u8, 0x00u8, - 0x00u8, 0x0fu8, 0x85u8, 0x82u8, + 0x00u8, 0x0fu8, 0x85u8, 0x82u8, 0x00u8, 0x00u8, 0x00u8, ], [ 0x8bu8, 0x81u8, 0xd4u8, 0x05u8, 0x00u8, 0x00u8, 0x3bu8, 0x81u8, 0xd0u8, 0x05u8, 0x00u8, - 0x00u8, 0x0fu8, 0x85u8, 0x82u8, + 0x00u8, 0x0fu8, 0x85u8, 0x82u8, 0x00u8, 0x00u8, 0x00u8, ], ), ]; pub const CHTHONIA_FILTER_DATA: (usize, [u8; 7usize], [u8; 7usize]) = ( - 0x3e8d49usize, + 0x3e8d99usize, [0xb8u8, 0x07u8, 0x00u8, 0x00u8, 0x00u8, 0x66u8, 0x90u8], [0x41u8, 0x8bu8, 0x41u8, 0x08u8, 0x4du8, 0x8bu8, 0xd1u8], ); pub const ACCURATE_TEMP_FILTER_DATA: (usize, [u8; 1usize], [u8; 1usize]) = - (0x3e8e4busize, [0x48u8], [0x4cu8]); + (0x3e8e9busize, [0x48u8], [0x4cu8]); type Opcodes = Vec<(usize, Vec, Vec)>; @@ -146,19 +146,19 @@ impl CompactPatch { pub struct NoMaxSearchRadius(); impl NoMaxSearchRadius { - const NMSR_DATA_OLD: (usize, u8, u8) = (0x3e990eusize, 0xebu8, 0x74u8); + const NMSR_DATA_OLD: (usize, u8, u8) = (0x3e995eusize, 0xebu8, 0x74u8); const NMSR_DATA_NEW: [(usize, [u8; 8usize], [u8; 8usize]); 2usize] = [ ( - 0x3e9918usize, + 0x3e9968usize, [ - 0x66u8, 0x0fu8, 0x2fu8, 0x05u8, 0xe8u8, 0x6bu8, 0xa1u8, 0xffu8, + 0x66u8, 0x0fu8, 0x2fu8, 0x05u8, 0x98u8, 0x6bu8, 0xa1u8, 0xffu8, ], [ - 0x66u8, 0x0fu8, 0x2fu8, 0x05u8, 0x40u8, 0x0au8, 0x2bu8, 0x00u8, + 0x66u8, 0x0fu8, 0x2fu8, 0x05u8, 0x20u8, 0x0au8, 0x2bu8, 0x00u8, ], ), ( - 0x3e9924usize, + 0x3e9974usize, // We don't need this [0x00u8; 8usize], [ @@ -306,43 +306,43 @@ pub struct EsiFilter(); impl EsiFilter { pub const ESI_FILTER_DATA_0: (usize, [u8; 6usize], [u8; 6usize]) = ( - 0x3e8e63usize, - [0xe9u8, 0x98u8, 0x71u8, 0xa1u8, 0xffu8, 0x90u8], + 0x3e8eb3usize, + [0xe9u8, 0x48u8, 0x71u8, 0xa1u8, 0xffu8, 0x90u8], [0x41u8, 0x8bu8, 0x01u8, 0x83u8, 0xf8u8, 0x07u8], ); pub const ESI_FILTER_DATA_1: [u8; 457usize] = [ - 0x0fu8, 0x87u8, 0x53u8, 0x92u8, 0x5eu8, 0x00u8, 0x48u8, 0x89u8, 0x1du8, 0xf3u8, 0x0fu8, + 0x0fu8, 0x87u8, 0xa3u8, 0x92u8, 0x5eu8, 0x00u8, 0x48u8, 0x89u8, 0x1du8, 0xf3u8, 0x0fu8, 0x00u8, 0x00u8, 0x48u8, 0x89u8, 0x0du8, 0xf4u8, 0x0fu8, 0x00u8, 0x00u8, 0x48u8, 0x89u8, 0x15u8, 0xf5u8, 0x0fu8, 0x00u8, 0x00u8, 0x4cu8, 0x89u8, 0x05u8, 0xf6u8, 0x0fu8, 0x00u8, 0x00u8, 0x4cu8, 0x89u8, 0x0du8, 0xf7u8, 0x0fu8, 0x00u8, 0x00u8, 0x4cu8, 0x89u8, 0x15u8, 0xf8u8, 0x0fu8, 0x00u8, 0x00u8, 0x4cu8, 0x89u8, 0x25u8, 0xf9u8, 0x0fu8, 0x00u8, 0x00u8, - 0x49u8, 0x8bu8, 0xd8u8, 0x49u8, 0x8bu8, 0xc8u8, 0xe8u8, 0xfeu8, 0x1bu8, 0x6au8, 0x00u8, - 0x0fu8, 0x28u8, 0xf0u8, 0xe8u8, 0xb6u8, 0x1fu8, 0x6au8, 0x00u8, 0xf3u8, 0x0fu8, 0x10u8, + 0x49u8, 0x8bu8, 0xd8u8, 0x49u8, 0x8bu8, 0xc8u8, 0xe8u8, 0x5eu8, 0x1cu8, 0x6au8, 0x00u8, + 0x0fu8, 0x28u8, 0xf0u8, 0xe8u8, 0x16u8, 0x20u8, 0x6au8, 0x00u8, 0xf3u8, 0x0fu8, 0x10u8, 0x9bu8, 0xa4u8, 0x1cu8, 0x00u8, 0x00u8, 0x0fu8, 0x28u8, 0xf8u8, 0xf2u8, 0x44u8, 0x0fu8, - 0x10u8, 0x05u8, 0x02u8, 0xbfu8, 0x89u8, 0x00u8, 0x0fu8, 0x28u8, 0xd3u8, 0xf3u8, 0x0fu8, - 0x5cu8, 0x15u8, 0xd7u8, 0xacu8, 0x89u8, 0x00u8, 0xf3u8, 0x0fu8, 0x58u8, 0x1du8, 0xcfu8, - 0xacu8, 0x89u8, 0x00u8, 0xf3u8, 0x44u8, 0x0fu8, 0x10u8, 0x15u8, 0xb2u8, 0x98u8, 0x89u8, + 0x10u8, 0x05u8, 0x32u8, 0xbfu8, 0x89u8, 0x00u8, 0x0fu8, 0x28u8, 0xd3u8, 0xf3u8, 0x0fu8, + 0x5cu8, 0x15u8, 0x07u8, 0xadu8, 0x89u8, 0x00u8, 0xf3u8, 0x0fu8, 0x58u8, 0x1du8, 0xffu8, + 0xacu8, 0x89u8, 0x00u8, 0xf3u8, 0x44u8, 0x0fu8, 0x10u8, 0x15u8, 0xe2u8, 0x98u8, 0x89u8, 0x00u8, 0xf3u8, 0x44u8, 0x0fu8, 0x10u8, 0x9bu8, 0x48u8, 0x12u8, 0x00u8, 0x00u8, 0x41u8, 0x0fu8, 0x28u8, 0xc2u8, 0xf3u8, 0x0fu8, 0x5eu8, 0xd3u8, 0x0fu8, 0x5au8, 0xcau8, 0x41u8, 0x0fu8, 0x54u8, 0xc8u8, 0x66u8, 0x0fu8, 0x5au8, 0xd1u8, 0xf3u8, 0x0fu8, 0x10u8, 0x0du8, - 0xfau8, 0x93u8, 0x89u8, 0x00u8, 0xf3u8, 0x0fu8, 0x5cu8, 0xc2u8, 0xe8u8, 0x39u8, 0xabu8, + 0x2au8, 0x94u8, 0x89u8, 0x00u8, 0xf3u8, 0x0fu8, 0x5cu8, 0xc2u8, 0xe8u8, 0x39u8, 0xabu8, 0x35u8, 0x00u8, 0x44u8, 0x0fu8, 0x28u8, 0xc8u8, 0x0fu8, 0x28u8, 0xceu8, 0xf3u8, 0x0fu8, - 0x5cu8, 0x0du8, 0xa2u8, 0xa4u8, 0x89u8, 0x00u8, 0xf3u8, 0x0fu8, 0x58u8, 0x35u8, 0x9au8, + 0x5cu8, 0x0du8, 0xd2u8, 0xa4u8, 0x89u8, 0x00u8, 0xf3u8, 0x0fu8, 0x58u8, 0x35u8, 0xcau8, 0xa4u8, 0x89u8, 0x00u8, 0x0fu8, 0x57u8, 0xc0u8, 0xf3u8, 0x0fu8, 0x5eu8, 0xceu8, 0xf3u8, 0x0fu8, 0x5au8, 0xc1u8, 0x41u8, 0x0fu8, 0x54u8, 0xc0u8, 0x66u8, 0x0fu8, 0x5au8, 0xc8u8, 0x41u8, 0x0fu8, 0x28u8, 0xc2u8, 0xf3u8, 0x0fu8, 0x5cu8, 0xc1u8, 0xf3u8, 0x0fu8, 0x10u8, - 0x0du8, 0x77u8, 0x94u8, 0x89u8, 0x00u8, 0xe8u8, 0xfau8, 0xaau8, 0x35u8, 0x00u8, 0xf3u8, + 0x0du8, 0xa7u8, 0x94u8, 0x89u8, 0x00u8, 0xe8u8, 0xfau8, 0xaau8, 0x35u8, 0x00u8, 0xf3u8, 0x0fu8, 0x10u8, 0x0du8, 0x9au8, 0x84u8, 0xa3u8, 0x00u8, 0x0fu8, 0x28u8, 0xd7u8, 0xf3u8, 0x0fu8, 0x5cu8, 0xd1u8, 0xf3u8, 0x44u8, 0x0fu8, 0x59u8, 0xc8u8, 0x0fu8, 0x57u8, 0xc0u8, 0xf3u8, 0x0fu8, 0x58u8, 0xcfu8, 0xf3u8, 0x0fu8, 0x5eu8, 0xd1u8, 0xf3u8, 0x0fu8, 0x5au8, 0xc2u8, 0x41u8, 0x0fu8, 0x54u8, 0xc0u8, 0x66u8, 0x0fu8, 0x5au8, 0xc8u8, 0x41u8, 0x0fu8, - 0x28u8, 0xc2u8, 0xf3u8, 0x0fu8, 0x5cu8, 0xc1u8, 0xf3u8, 0x0fu8, 0x10u8, 0x0du8, 0xabu8, + 0x28u8, 0xc2u8, 0xf3u8, 0x0fu8, 0x5cu8, 0xc1u8, 0xf3u8, 0x0fu8, 0x10u8, 0x0du8, 0xdbu8, 0x93u8, 0x89u8, 0x00u8, 0xe8u8, 0xbau8, 0xaau8, 0x35u8, 0x00u8, 0x41u8, 0x0fu8, 0x28u8, - 0xd3u8, 0xf3u8, 0x44u8, 0x0fu8, 0x59u8, 0xc8u8, 0xf3u8, 0x0fu8, 0x5cu8, 0x15u8, 0xa1u8, - 0xa9u8, 0x89u8, 0x00u8, 0xf3u8, 0x44u8, 0x0fu8, 0x58u8, 0x1du8, 0x98u8, 0xa9u8, 0x89u8, + 0xd3u8, 0xf3u8, 0x44u8, 0x0fu8, 0x59u8, 0xc8u8, 0xf3u8, 0x0fu8, 0x5cu8, 0x15u8, 0xd1u8, + 0xa9u8, 0x89u8, 0x00u8, 0xf3u8, 0x44u8, 0x0fu8, 0x58u8, 0x1du8, 0xc8u8, 0xa9u8, 0x89u8, 0x00u8, 0xf3u8, 0x41u8, 0x0fu8, 0x5eu8, 0xd3u8, 0x0fu8, 0x5au8, 0xcau8, 0x41u8, 0x0fu8, - 0x54u8, 0xc8u8, 0x66u8, 0x0fu8, 0x5au8, 0xd1u8, 0xf3u8, 0x0fu8, 0x10u8, 0x0du8, 0x40u8, + 0x54u8, 0xc8u8, 0x66u8, 0x0fu8, 0x5au8, 0xd1u8, 0xf3u8, 0x0fu8, 0x10u8, 0x0du8, 0x70u8, 0x99u8, 0x89u8, 0x00u8, 0xf3u8, 0x44u8, 0x0fu8, 0x5cu8, 0xd2u8, 0x41u8, 0x0fu8, 0x28u8, 0xc2u8, 0xe8u8, 0x7au8, 0xaau8, 0x35u8, 0x00u8, 0xf3u8, 0x44u8, 0x0fu8, 0x59u8, 0xc8u8, 0x41u8, 0x0fu8, 0x28u8, 0xd1u8, 0x48u8, 0x8bu8, 0x1du8, 0x8au8, 0x0eu8, 0x00u8, 0x00u8, @@ -351,9 +351,9 @@ impl EsiFilter { 0x8bu8, 0x0du8, 0x8eu8, 0x0eu8, 0x00u8, 0x00u8, 0x4cu8, 0x8bu8, 0x15u8, 0x8fu8, 0x0eu8, 0x00u8, 0x00u8, 0x4cu8, 0x8bu8, 0x25u8, 0x90u8, 0x0eu8, 0x00u8, 0x00u8, 0xf3u8, 0x0fu8, 0x10u8, 0x05u8, 0x58u8, 0x03u8, 0x00u8, 0x00u8, 0x0fu8, 0x2fu8, 0xc2u8, 0x0fu8, 0x87u8, - 0xa8u8, 0x90u8, 0x5eu8, 0x00u8, 0x0fu8, 0x2fu8, 0x15u8, 0x4cu8, 0x03u8, 0x00u8, 0x00u8, - 0x0fu8, 0x87u8, 0x9bu8, 0x90u8, 0x5eu8, 0x00u8, 0x41u8, 0x8bu8, 0x01u8, 0x83u8, 0xf8u8, - 0x07u8, 0xe9u8, 0xa0u8, 0x8cu8, 0x5eu8, 0x00u8, + 0xf8u8, 0x90u8, 0x5eu8, 0x00u8, 0x0fu8, 0x2fu8, 0x15u8, 0x4cu8, 0x03u8, 0x00u8, 0x00u8, + 0x0fu8, 0x87u8, 0xebu8, 0x90u8, 0x5eu8, 0x00u8, 0x41u8, 0x8bu8, 0x01u8, 0x83u8, 0xf8u8, + 0x07u8, 0xe9u8, 0xf0u8, 0x8cu8, 0x5eu8, 0x00u8, ]; pub fn new(handler: &Handler) -> Self { @@ -495,7 +495,7 @@ impl Handler { return Self { reason: Some(Reason::TooManyInstances), ..Default::default() - } + }; } let pid = match sys.processes_by_exact_name("SpaceEngine.exe").nth(0usize) { @@ -555,12 +555,12 @@ impl Handler { buffer == VERSION_DATA }; - if !version { - return Self { - reason: Some(Reason::WrongVersion), - ..Default::default() - }; - } + // if !version { + // return Self { + // reason: Some(Reason::WrongVersion), + // ..Default::default() + // }; + // } Self { reason: None,