Skip to content

Commit 36da461

Browse files
committed
Logging and version check
1 parent 38b6518 commit 36da461

File tree

5 files changed

+218
-64
lines changed

5 files changed

+218
-64
lines changed

Cargo.lock

Lines changed: 100 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 23 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,28 @@ edition = "2021"
77
crate-type = ["cdylib"]
88

99
[dependencies]
10-
egui = "0.17"
11-
egui-hook = { git = "https://github.com/jac3km4/egui-hook", rev = "v0.0.3" }
1210
rhai = "1.5"
13-
phf = { version = "0.10", features = ["macros"] }
1411
heck = "0.4"
12+
log = "0.4"
13+
14+
[dependencies.pelite]
15+
version = "0.9"
16+
default-features = false
17+
18+
[dependencies.flexi_logger]
19+
version = "0.22"
20+
default-features = false
21+
22+
[dependencies.phf]
23+
version = "0.10"
24+
default-features = false
25+
features = ["macros"]
26+
27+
[dependencies.egui]
28+
version = "0.17"
29+
default-features = false
30+
features = ["single_threaded"]
31+
32+
[dependencies.egui-hook]
33+
git = "https://github.com/jac3km4/egui-hook"
34+
rev = "v0.0.4"

src/elex.rs

Lines changed: 18 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,24 @@
11
use std::borrow::Cow;
2-
use std::mem::transmute;
2+
use std::{mem, ptr};
33

44
use egui_hook::import_foreign;
5+
use pelite::pe64::{Pe, PeView};
56

67
pub fn get_all_functions<'a>() -> impl Iterator<Item = (Cow<'a, str>, FunctionPtr)> {
78
unsafe { &*get_function_registry() }
89
.functions()
910
.map(|fun| (fun.name(), fun.ptr()))
1011
}
1112

13+
#[inline]
1214
pub fn get_player() -> Entity {
1315
Entity(get_player_ptr())
1416
}
1517

18+
#[inline]
1619
pub fn get_player_look_at() -> Entity {
1720
let player = get_player();
18-
let mut entity = Entity(std::ptr::null());
21+
let mut entity = Entity(ptr::null());
1922
get_player_look_at_ptr(&player, &mut entity);
2023
entity
2124
}
@@ -92,14 +95,14 @@ pub struct FunctionPtr(usize);
9295
impl FunctionPtr {
9396
#[inline]
9497
pub fn invoke_default<A>(&self, val: A) -> i64 {
95-
let ptr = get_player();
96-
let func: extern "C" fn(Entity, Entity, A) -> i64 = unsafe { transmute(self.0) };
97-
func(ptr, ptr, val)
98+
let player = get_player();
99+
let func: extern "C" fn(Entity, Entity, A) -> i64 = unsafe { mem::transmute(self.0) };
100+
func(player, player, val)
98101
}
99102

100103
#[inline]
101104
pub fn invoke_with<A>(&self, a: Entity, b: Entity, val: A) -> i64 {
102-
let func: extern "C" fn(Entity, Entity, A) -> i64 = unsafe { transmute(self.0) };
105+
let func: extern "C" fn(Entity, Entity, A) -> i64 = unsafe { mem::transmute(self.0) };
103106
func(a, b, val)
104107
}
105108
}
@@ -145,3 +148,12 @@ pub struct Type;
145148
// TODO: reverse
146149
#[repr(C)]
147150
pub struct GameObject;
151+
152+
const SUPPORTED_VERSION_TS: u32 = 1646857151;
153+
154+
pub fn version_check() -> bool {
155+
let handle = unsafe { egui_hook::GetModuleHandleA(egui_hook::PSTR(ptr::null())) };
156+
let pe = unsafe { PeView::module(handle.0 as *const _) };
157+
let pe_ts = pe.file_header().TimeDateStamp;
158+
SUPPORTED_VERSION_TS == pe_ts
159+
}

0 commit comments

Comments
 (0)