I hope you realize that those offsets are for Windows only. You'll have to reverse the client yourself to find out the OSX offsets.
I'm an idiot, sorry for wasting your time.
What would be the best way to get these, sorry for the questions ;p I'm trying Bit Slicer atm, and have searched for the build number and found several addresses with it etc, I feel like a noob here, welp
I personally use IDA to reverse engineer the client. But I know OSX has Hopper as well which I think is good also. Start by reverse engineering the Lua functions, I'm thinking the data structures should all be similar so the majority of your work will be finding the global offsets such as the object manager, camera, etc. You can use the windows client to see how different the code is compared to the OSX one. Similar applications to Cheat Engine are helpful in figuring out these offsets as the game is running.
Can't figure out for the life of me why it won't attach to a vanilla client. I've tried selectByFindProcess() and selectByWindow(). selectByWindow() suggests that the process isn't valid. I'm still looking around but I thought maybe someone else had this issue and figure it out.
Can't figure out for the life of me why it won't attach to a vanilla client. I've tried selectByFindProcess() and selectByWindow(). selectByWindow() suggests that the process isn't valid. I'm still looking around but I thought maybe someone else had this issue and figure it out.
Trying to get it working with Vanilla client aswell, attempting to run chat_monitor.js.
It seems to stop at line 77 in game_instance.js, at
if (!process.isValid()) return false;
Did some testing
Code:
for (let window of Window.getList("World of Warcraft")){
console.log(window.isValid());
let pid = window.getPID();
let process = window.getProcess();
console.log(pid);
console.log(process.getPID());
console.log(process.open(pid));
console.log(process.isValid());
console.log(process.getName());
console.log(process.getPath());
}
> true
> 187864
> 0 // Should be the same as above
> false // From documentation: True if valid and selectable
> false // From documentation: Returns true if a process has been selected and is still currently accessible.
>
>
So, for some reason the process doesn't get selected it seems, or it's not accessible.
Code:
for (let window of Window.getList("Calculator")){
console.log(window.isValid());
let pid = window.getPID();
let process = window.getProcess();
console.log(pid);
console.log(process.getPID());
console.log(process.open(pid));
console.log(process.isValid());
console.log(process.getName());
console.log(process.getPath());
}
DrMight, I was doing the same thing. I was printing properties of the process object and seeing similar results. I still haven't figured it out, but I thought this was interesting. I attempted to use hacksniff by namreeb to learn possibly where or how offsets were determined to be cheat triggers (still very new to everything). Anyways, hacksniff uses hadesmem by jadd, and in my attempt to attach to the process I get a Windows error code of 5 or "Access Denied" according to documentation. I was running both the node.js script and hacksniff from an elevated command prompt, so I'm not sure why I'm still getting this issue. Just wanted to throw this out there in case it helps.
Trying to get it working with Vanilla client aswell, attempting to run chat_monitor.js.
Hey there, So window.getProcess already returns a process. You can check if it's valid by using process.isValid. If this function returns false then I suspect that you have insufficient privileges to open the process. Try running the command line in admin mode. Another issue is that you are trying to select a 64-Bit version of the game from a 32-Bit version of Node. I don't think this would be the case though since I don't think Vanilla has a 64-Bit client.
That being said, maybe whatever WoW client you're using has some weird protections? Or maybe it's something with your system. See if you can select the client with something like Cheat Engine. If that works but robot doesn't, I'm hoping it's not related to this issue. If you get it working, keep in mind that you'll have to reverse the client yourself to find the new memory offsets. I have no idea how chat differs in vanilla but I'm sure there's plenty of information online you can find.
Originally Posted by para_
Anyways, hacksniff uses hadesmem by jadd.
I thought HadesMem was written by Crypher. Regardless, robot-js is also available in C++ form in case you needed it. Blackbone is another good one, along with all the other white/gray/black magic memory libraries.
I thought HadesMem was written by Crypher. Regardless, robot-js is also available in C++ form in case you needed it. Blackbone is another good one, along with all the other white/gray/black magic memory libraries.
You're probably right. I thought I saw Jadd with a picture of a raptor as his icon and just assumed that github was his, but I'm probably misremembering things.
That being said, maybe whatever WoW client you're using has some weird protections? Or maybe it's something with your system. See if you can select the client with something like Cheat Engine. If that works but robot doesn't, I'm hoping it's not related to this issue. If you get it working, keep in mind that you'll have to reverse the client yourself to find the new memory offsets. I have no idea how chat differs in vanilla but I'm sure there's plenty of information online you can find.
I was able to attach Cheat Engine to WoW, but still got an invalid process using robot-js. It certainly finds the window. I'm printing a bunch of nonsense until the correct one is selected. I'll take a look at the C++, and also try to use one of my old tools to do a quick attach and see if I can't do it using my own codez.
I was able to attach Cheat Engine to WoW, but still got an invalid process using robot-js. It certainly finds the window. I'm printing a bunch of nonsense until the correct one is selected. I'll take a look at the C++, and also try to use one of my old tools to do a quick attach and see if I can't do it using my own codez.
Here's the code that does the actual opening of the process. You can try copying that and see why it's failing. The problem is probably going to be with OpenProcess in which case refer to Microsoft's documentation. That being said, I still think you should be able to open the process by passing in the PID directly into the open function. If it doesn't work because of an ERROR_ACCESS_DENIED (0x5) error and you're running as admin then that requires some further investigating.
Thanks for writing all this up. I'm relatively new to reading memory but I was working with your code to extract the NPC name and I haven't quite gotten it to work yet. I've no idea if I'm doing this correctly but in order for me to invoke memory.readString how can I find the unit32_length (per Robot for Node.js
Thanks for writing all this up. I'm relatively new to reading memory but I was working with your code to extract the NPC name and I haven't quite gotten it to work yet
Name 1 is a pointer to Name 2 which is a pointer to a string. You should use readPtr for Name1 and Name2, then use readString. Use Cheat engine to help you out.
Thanks for the quick reply. Still banging my head to get this to work. Say that I had an entity entry (given to me by entitydump.js) at 29DDF7B7A18. This is from offsets.Entity.EntryFirst and verified that its an NPC entry where type == 3. I would go enter in that address manually to cheat engine, hit pointer, add in the first offset name1 (0x16F0), then add in the name2 offset (0x00A0), it leads to an address where I would display as text and it just looks gibberish. Why?
Thanks for the quick reply. Still banging my head to get this to work. Say that I had an entity entry (given to me by entitydump.js) at 29DDF7B7A18. This is from offsets.Entity.EntryFirst and verified that its an NPC entry where type == 3. I would go enter in that address manually to cheat engine, hit pointer, add in the first offset name1 (0x16F0), then add in the name2 offset (0x00A0), it leads to an address where I would display as text and it just looks gibberish. Why?
You're probably right. I thought I saw Jadd with a picture of a raptor as his icon and just assumed that github was his, but I'm probably misremembering things.
I was able to attach Cheat Engine to WoW, but still got an invalid process using robot-js. It certainly finds the window. I'm printing a bunch of nonsense until the correct one is selected. I'll take a look at the C++, and also try to use one of my old tools to do a quick attach and see if I can't do it using my own codez.
I have the same issues, thus I gave up on trying to use robotJS for vanilla WoW. Still yet, it is a great node library and I appreciate this thread.
Ended up making a few cheats for Assault Cube just to see if I could. Great library!