-
Private
please someone enlight me how do i get this baseaddress cuz all i get is 0x400000 ...
-
Code:
MEMORY_BASIC_INFORMATION mbi;
uint Traverse;
VirtualQueryEx(hProcess,(LPVOID)Traverse,&mbi,sizeof(mbi));
mbi.BaseAddress
-
Private
Last edited by punkedalex; 11-15-2012 at 02:23 AM.
-
Active Member
Originally Posted by
DarkLinux
Code:
MEMORY_BASIC_INFORMATION mbi;
uint Traverse;
VirtualQueryEx(hProcess,(LPVOID)Traverse,&mbi,sizeof(mbi));
mbi.BaseAddress
Process.MainModule.BaseAddress == very first mbi's base? why doesn't that seem right?...
alex, if you're on an older machine (without ASLR) it will always be that number. (I'm on windows xp sp3 - same thing)
-
Banned
I Suck At This
I dont want to burn your thread up. (Wish i could borrow that sarcasm someone used a few pages ago) But Just a quick question, and slightly bent topic. But what is a good book to learn C#(Forgive me if I sound like I was born addicted to crack). But I want to run an experiment. Please only people who have a clue respond via Inbox. **And i'll tell you the experiment,**-****Shhh****
-
Private
-
Everything is detectable... Even the bots that do not write to memory... It just depends on how bad Blizz wants your ass XD
-
-
Member
I'm getting a 'Win32Exception was unhandled' exception, meaning that it doesn't have the rights to execute the project, if I start it up as administrator it works, though it doesn't work when I just press F5. Is there any way I can start up my project as administrator automatically?
-
Sergeant
Stany8. ofc there is a way. what program do you use to make the program in? visual studio? if y open visual studio with adminstrator.
//edit: for more info about the error you get. make f.eks. a try function to see if it can handle it or show the error
Last edited by flowtek333; 02-01-2013 at 11:28 AM.
-
Originally Posted by
Stany8
I'm getting a 'Win32Exception was unhandled' exception, meaning that it doesn't have the rights to execute the project, if I start it up as administrator it works, though it doesn't work when I just press F5. Is there any way I can start up my project as administrator automatically?
Add an app manifest.
-
Private
Hi, I completed this tutorial, my character name is printed to the listbox but I'm not getting the xyz coordinates, can someone put a newbie like me in the correct way?.
I'm ingame and running the app as admin, here is the little code.
Code:
private void button1_Click(object sender, EventArgs e)
{
BlackMagic wow = new BlackMagic();
wow.OpenProcessAndThread(SProcess.GetProcessFromProcessName("Wow"));
IntPtr baseWOW = wow.MainModule.BaseAddress;
string playername = wow.ReadASCIIString((uint)baseWOW + 0xE28468, 256);
float playerx = wow.ReadFloat((uint)baseWOW + 0x7E8);
float playery = wow.ReadFloat((uint)baseWOW + 0x7EC);
float playerz = wow.ReadFloat((uint)baseWOW + 0x7F0);
listBox1.Items.Add(playername);
listBox1.Items.Add(playerx.ToString());
listBox1.Items.Add(playery.ToString());
listBox1.Items.Add(playerz.ToString());
}
The xyz values I'm getting are 0.
Thanks in advance.
Last edited by Decodex; 02-04-2013 at 02:45 PM.
-
Sergeant
Decodex by finding the xyz with BaseWOW aint the best idea at all..
use movementdata to get xyz. most allways 100% right
uint movementdata = wow.ReadUInt(playerbase + 0x100);
float playerx = wow.ReadFloat(movementdata + 0x10);
float playery = wow.ReadFloat(movementdata + 0x14);
float playerz = wow.ReadFloat(movementdata + 0x18 );
ps.. offset old, find the offset on the forum
-
Active Member
dereferencing "memory reading is impossible"
Good morning.
I have inject dll with ChatListener for 3.3.5a:
WoWChat.h
Code:
#ifndef WOWCHAT_H
#define WOWCHAT_H
class WoWChatClass
{
private:
unsigned int index;
struct WoWChatStruct
{
long long SenderGuid;
unsigned int Unknow[13];
char FormattedMessage[3000];
char Text[3000];
unsigned int MessageType;
unsigned int ChannelNumber;
unsigned int Sequence;
unsigned int Time;
} *pWoWChatStruct;
public:
WoWChatClass();
~WoWChatClass();
long long getSenderGuid() { return pWoWChatStruct->SenderGuid; }
char* getFormattedMessage() { return pWoWChatStruct->FormattedMessage; }
char* getText() { return pWoWChatStruct->Text; }
unsigned int getMessageType() { return pWoWChatStruct->MessageType; }
unsigned int getChannelNumber() { return pWoWChatStruct->ChannelNumber; }
unsigned int getSequence() { return pWoWChatStruct->Sequence; }
unsigned int getTime(){ return pWoWChatStruct->Time; }
WoWChatStruct* getPointWoWChat() { return pWoWChatStruct; }
void setPointWoWChat(unsigned int address) { pWoWChatStruct = (WoWChatStruct*)address; }
char* CheckNewMessage();
void Init();
};
#endif
WoWChat.cpp
Code:
void WoWChatClass::Init(){
setPointWoWChat(Memory::Read<unsigned int>(Offsets::Chat::ChatBuffer_start));
index = Memory::Read<unsigned int>(Offsets::Chat::ChatBuffer_count);
}
WoWChatClass::WoWChatClass(){
setPointWoWChat(Memory::Read<unsigned int>(Offsets::Chat::ChatBuffer_start));
index = Memory::Read<unsigned int>(Offsets::Chat::ChatBuffer_count);
}
WoWChatClass::~WoWChatClass(){ delete this->pWoWChatStruct; }
char* WoWChatClass::CheckNewMessage(){
unsigned int newIndex = 0;
unsigned int newAddress = 0;
newIndex = Memory::Read<unsigned int>(Offsets::Chat::ChatBuffer_count);
if (newIndex == index) return NULL;
if (newIndex < index){
for (; index < 60 ; index++){
newAddress = Offsets::Chat::ChatBuffer_start + (Offsets::Chat::ChatBuffer_next * index);
setPointWoWChat(newAddress);
if (getText()[0] == '.') {
if (index == 59) index = 0; else index++;
return getText();
}
}
index = 0;
}
for (; index < newIndex; index++){
newAddress = Offsets::Chat::ChatBuffer_start + (Offsets::Chat::ChatBuffer_next * index);
setPointWoWChat(newAddress);
if (getText()[0] == '.') {
if (index == 59) index = 0; else index++;
return getText();
}
}
return NULL;
}
Sometimes when i set a new pointer (setPointWoWChat(newAddress)) in the char* WoWChatClass::CheckNewMessage() i can get issue:
Code:
pWoWChatStruct->SenderGuid; // <--memory reading is impossible, but a new pointer of struct is fine
PS: I'm just using dereferencing like reading of variables and struct
-
Active Member
Your code is a little confusing, and I'm not familiar with the chat message structures, but that "delete" in the constructor is a very obvious bug. You don't own that memory; don't try to delete it. Bizarre things will happen. Maybe that's causing your problems, maybe not. In fact, I would just get rid of that member -- keeping your class structured like this is going to give you headaches; the less state variables you have, the better. I would do this:
* Move all of those methods for retrieving chat fields (text, channel number, etc.) onto the WoWChat struct. If you want to avoid c++ fanciness, just leave all the fields public.
* Add a method that returns index of the latest message, however that is determined (looks like a ring buffer?), and a method that advances the index.
*
ChatBuffer_start + ChatBuffer_next * index
feels like you should have a struct of size ChatBuffer_next, and just do ChatBuffer[index].
* Now CheckNewMessage() can look something like:
Code:
if (index != GetLatestIndex()) {
index = GetNextIndex();
return ChatMessageAt(index);
} else {
return nullptr;
}
Calling code would look like:
Code:
WowChat* message;
while (message = wow_chat_manager.CheckNewMessage()) {
DoSomethingWithMessageText(message->getText());
}
-
Post Thanks / Like - 1 Thanks
zdohdds (1 members gave Thanks to ioctl for this useful post)