Comments (14)
At which line in the FastyBoy.rs
example you get this error?
Have you tried again multiple times, is it always the same error?
Which OS? Which arch (32bit, 64bit) does the FastBoy.rs example run on, which arch the target process (they may be different)?
from rs-process-memory.
I'm getting the error at 69
I have tried it many times; results the same each time
And I was using my own exe (x86), complied with nightly in x86
from rs-process-memory.
L69 is just a call to set_offset
, which does no API calls.
from rs-process-memory.
Correction, My bad #77
Edit: This happens when reading/writing any memory.
from rs-process-memory.
I am able to reproduce the error, but I have no clue what might cause it. The syscall issued looks correct, I have permissions, and the address on the other process exists too. Sorry, no clue :/
from rs-process-memory.
Alright, glad to know it wasn't just me.
Will a fix be put in place? (If even possible).
from rs-process-memory.
I won't fix stuff, and I'm not the maintainer. Your guess is as good as mine.
from rs-process-memory.
Alright, Hopefully this is fixed, I suppose all we can do in the meantime is wait.
Thanks for the help :).
from rs-process-memory.
The fastyboy.rs
example is specifically for Mirror's Edge Catalyst, so I can't really help if you've changed it to use a different program. What's probably happening (given your error message) is that the types of data members are too wide for the offsets you're using. Could you try changing them to DataMember::<bool>
s instead of DataMember::<f32>
s?
from rs-process-memory.
I also have the same issue with a simple assaultcube
game test (which is supposed to be super easily hackable). I ran the executable as admin and even tried building for 32 bit (considering the game is also 32bit) but the issue persists. It happens whenever I try to read/get something (.get_offset()
, .read()
). When I use .write(...)
it doesnt output any error but it doesn't actually change the value at the address either (i triple-checked the offsets and they work fine in C++).
I should also mention that I tried changing the type in DataMember::<>
to bool / other more narrow int types but there's no difference (I know for a fact that the value the address is pointing to is a 4byte int since I'm using it in C++ as a normal int)
from rs-process-memory.
@wowvain-dev would you be able to give some example code for assaultcube
? I'd like to try this out to track down what might be happening here
from rs-process-memory.
I may not be correct about this because im new to rust still. But this is what I have and I'm getting the same error
fn main() -> std::io::Result<()> {
let name = "ac_client.exe";
let mut pid = None;
while pid.is_none() {
pid = get_pid(name);
}
let test = 3000_u32;
let process_handle = (pid.unwrap() as Pid).try_into_process_handle()?;
let mut player_health = DataMember::<u32>::new(process_handle);
player_health.set_offset(vec![0x00_17_E3_06, 0xE8 ]);
player_health.write(&test);
unsafe {
println!("Player Health: {}", player_health.read().unwrap());
}
Ok(())
}
thread 'main' panicked at 'called `Result::unwrap()` on an `Err` value: Os { code: 299, kind: Uncategorized, message: "Only part of a ReadProcessMemory or WriteProcessMemory request was completed." }', src\main.rs:22:56
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
error: process didn't exit successfully: `target\debug\mk.exe` (exit code: 101)
from rs-process-memory.
0x00_17_E3_06 is the ptr
and this is where it shows in kinda new to this
player_health.set_offset(vec![0x00_17_E3_06, 0xE8 ]);
is just the playerobj I think its vec![0x00_17_E3_06, 0xE8, 0x04 ] for the health still?
But still getting the error
from rs-process-memory.
0x00_17_E3_06 is the ptr and this is where it shows in kinda new to this player_health.set_offset(vec![0x00_17_E3_06, 0xE8 ]); is just the playerobj I think its vec![0x00_17_E3_06, 0xE8, 0x04 ] for the health still? But still getting the error
I may find out the reason why your program is panicked:
player_health.set_offset(vec![0x00_17_E3_06, 0xE8 ]);
acctually you should change your code to:
player_health.set_offset(vec![0x00_82_61_48]);
or:
player_health.set_offset(vec![0x00_82_60_60, 0xE8 ])
That's because "???.exe" + 0017E306
is a pointer point to an address(0x00826060), not an offset.
Note: I'm not a native English speaker, please ignore my writing mistakes.Hope my solution is of help to you.
from rs-process-memory.
Related Issues (8)
- `DataMember::read` is unsound HOT 3
- Expose rs-process-memory as a simple cdylib
- Generic type for offsets
- Move architecture handling to be on `ProcessHandle`s, not `DataMember`s
- A way to read strings? HOT 4
- 64bit process reading from 32bit process copies too large addresses. HOT 3
- Cannot create ProcessHandle on macOS HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from rs-process-memory.