Need a program to find data from WoW. menu

User Tag List

Page 3 of 4 FirstFirst 1234 LastLast
Results 31 to 45 of 46
  1. #31
    apollo0510's Avatar Active Member
    Reputation
    18
    Join Date
    Aug 2008
    Posts
    53
    Thanks G/R
    0/1
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Ok. At least hypnodok doesn't mind.

    This is about finding the key that the wow server uses to encrypt the message headers. My algorithm is able to calculate the key without knowledge about the login process.

    The message headers look like this:
    Code:
    struct CLIENTHEADER
    {
    	WORD  oplen;
    	DWORD opcode;
    };
    
    struct SERVERHEADER
    {
    	WORD  oplen;
    	WORD  opcode;
    };
    The weakness with this definition is, that the clientheader contains a lot of zeros and known bits for small messages. For example the oplen is known, if we have a nonfragmented message. Test have shown, that this is true for all messages with a len smaller than 256 bytes. Under special conditions, it is also possible to assume the opcode. Such a special condition can be created by right clicking into the wow window and turning the character heavily with the mouse for some seconds. You will find the one command for updating player position repeated multiple times.

    Due to the poor encryption sheme that wow uses, a single zero byte in the crypted area stopps the influence from former bytes in the stream. And because the client header contains multiple zeros, it is easy to see a repeating pattern after that in scenarios as described above. A manual analysis showed a pattern length of 40 bytes.

    Of course the original leaked client code gave a hint about the encryption method, but the following class for retreiving the key is originally mine.


    Code:
    #define KEY_LENGTH 40
    
    class CRYPT
    {
    public:
    
    	CRYPT();
    	void Reset();
    	BOOL HasKey() { return m_key_valid; }
    	BOOL FindKey(BYTE* pData,int len,BYTE* pSollData,BYTE* pSollMask);
    	void Decrypt(BYTE* pData,int len);
    
    protected:
    	BOOL m_key_valid;
    	BYTE m_key     [KEY_LENGTH];
    	BYTE m_key_mask[KEY_LENGTH];
    
    	BYTE m_last_recv;
    	int  m_key_index;
    	int  m_missing_keys;
    };
    
    CRYPT::CRYPT()
    {
    	Reset();
    }
    
    void CRYPT::Reset()
    {
    	memset(m_key     ,0,KEY_LENGTH);
    	memset(m_key_mask,0,KEY_LENGTH);
    	m_key_valid =FALSE;
    	m_last_recv =0;
    	m_key_index =0;
    	m_missing_keys=KEY_LENGTH;
    }
    
    BOOL CRYPT::FindKey(BYTE* pData,int len,BYTE* pSollData,BYTE* pSollMask)
    {
    	for (int t = 0; t < len; t++)
    	{
    		m_key_index %= KEY_LENGTH;
    		BYTE temp = pData[t] - m_last_recv;
    		if(pSollMask[t])
    		{
    			if(m_key_mask[m_key_index])
    			{
    				temp^=m_key[m_key_index];
    				if(temp!=pSollData[t])
    				{
    					Reset();
    					printf("Key not consistent in position %d. Starting new key\n",t);
    				}
    			}
    			else
    			{
    				m_key     [m_key_index]=pSollData[t]^temp; 
    				m_key_mask[m_key_index]=1;
    				m_missing_keys--;
    				if(!m_missing_keys)
    				{
    					m_key_valid=TRUE;
    					printf("Key found !\n");
    				}
    			}
    		}
    		m_key_index++;
    		m_last_recv = pData[t];
    		pData[t]    = temp;
    	}
    	return m_key_valid;
    }
    
    void CRYPT::Decrypt(BYTE* pData,int len)
    {
    	for (int t = 0; t < len; t++)
    	{
    		m_key_index %= KEY_LENGTH;
    		BYTE temp = (pData[t] - m_last_recv)^m_key[m_key_index++];
    		m_last_recv = pData[t];
    		pData[t]    = temp;
    	}
    }
    Then you hook the outgoing traffic from your wow client and use the crypt class like this (the following is a code fragment from my wow proxy) :

    Code:
    void GAME_CONNECT::OnClientData (int size)
    {
    	CLIENTHEADER header; 
    
    	if(!m_crypt.HasKey())
    	{
    		memcpy(&header,m_buffer,sizeof(CLIENTHEADER));
    		if(size>sizeof(CLIENTHEADER) && (size<256) )
    		{
    			BYTE soll_data[6]={ 0x00,0x20,0xee,0x00,0x00,0x00 };
    			BYTE soll_mask[6]={    0,   1,   0,   1,   1,   1 };
    			soll_data[1]=size-2;
    			m_crypt.FindKey((BYTE*)&header,6,soll_data,soll_mask);
    		}
    		send(m_server_sock,m_buffer,size,0);
    	}
    	else
    	{
    		int decoded=0;
    		do
    		{
    			memcpy(&header,&m_buffer[decoded],sizeof(CLIENTHEADER));
    			decoded+=sizeof(CLIENTHEADER);
    			m_crypt.Decrypt((BYTE*)&header,sizeof(CLIENTHEADER));
    			header.oplen=htons(header.oplen)-4;
    			int missing=(header.oplen+sizeof(CLIENTHEADER))-size;
    			while(m_connected && (missing>0))
    			{   // read in the missing data to have the complete command block
    				int r=recv(m_client_sock,&m_buffer[size],missing,0);
    				if(r>0)
    				{
    					missing-=r;
    					size+=r;
    				}
    				else m_connected=FALSE;
    			}
    			OnClientCommand(header,&m_buffer[decoded]);
    
    			decoded+=header.oplen;
    		}while(m_connected && (decoded<size));
    
    		send(m_server_sock,m_buffer,size,0);
    		// printf("CLIENT->SERVER %d bytes\n",size);
    		// hexdump("Out",m_buffer,size);
    	}
    }
    WoW uses the same key for incoming and outgoing traffic, so once you found the key in the outgoing traffic, you can use the same key for incoming traffic.


    Greetings

    Apollo

    Need a program to find data from WoW.
  2. #32
    hypnodok's Avatar Member
    Reputation
    19
    Join Date
    Nov 2007
    Posts
    65
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Very interesting, thanks for sharing.

  3. #33
    kynox's Avatar Account not activated by Email
    Reputation
    830
    Join Date
    Dec 2006
    Posts
    888
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Just FYI, they store the key in the CNetClient class.

  4. #34
    wat-u-doin's Avatar Banned
    Reputation
    7
    Join Date
    Nov 2008
    Posts
    38
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    ive read through all this i understand nothing but im trying my best to look up guides on how to do this

  5. #35
    undrgrnd59's Avatar Active Member
    Reputation
    16
    Join Date
    May 2008
    Posts
    140
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Originally Posted by wat-u-doin View Post
    im 15 ive got school stuff to do i dont have much time.
    I started programming when I was 16 (might even have been 15). Don't let your age get in the way of anything. I'm 18 now, and it took a while but now I'm making leaps in programming that I never thought I'd be able to make while teaching myself. There are a lot of resources if you look hard enough for them, I suggest learning a different language because I don't think the examples are going to be in VB.

    Btw, @ 15 the school work is a joke, who are you kidding?
    (If you end up learning C# this helped me out the most: 2008 June « Shynd’s WoW Modification Journal)
    U59

  6. #36
    wat-u-doin's Avatar Banned
    Reputation
    7
    Join Date
    Nov 2008
    Posts
    38
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    actually i havent been on for a week because ive been catching up on all my math homework i dont have much time and im lucky i have time for the computer

  7. #37
    typedef's Avatar Banned
    Reputation
    8
    Join Date
    Nov 2008
    Posts
    96
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Originally Posted by Cypher View Post

    AAAAAAAHHH!

    AVERT YOUR EYES! It may take on another form!
    Role-Play that way ->

  8. #38
    wat-u-doin's Avatar Banned
    Reputation
    7
    Join Date
    Nov 2008
    Posts
    38
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    ive given up on this **** it im not spending my weekend tryign to figure out this pointless BS that i wont understand until i learn how to script better or if a guide gets posted thats like step by step. Ive tryed and failed.

    ill spend my time to figure out different features to throw onto my program

  9. #39
    argh44z's Avatar Member
    Reputation
    19
    Join Date
    Nov 2007
    Posts
    93
    Thanks G/R
    0/1
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Originally Posted by wat-u-doin View Post
    ive given up on this **** it im not spending my weekend tryign to figure out this pointless BS that i wont understand until i learn how to script better or if a guide gets posted thats like step by step. Ive tryed and failed.

    ill spend my time to figure out different features to throw onto my program
    Good luck with your pre-Algebra I homework.

  10. #40
    wat-u-doin's Avatar Banned
    Reputation
    7
    Join Date
    Nov 2008
    Posts
    38
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    advanced geometry thank you

  11. #41
    Cypher's Avatar Kynox's Sister's Pimp
    Reputation
    1356
    Join Date
    Apr 2006
    Posts
    5,368
    Thanks G/R
    0/4
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Originally Posted by wat-u-doin View Post
    advanced geometry thank you

    Geometry: Serious business.

    Here's your homework:

    How many sides does a square have?

    Let me know if its too hard, I have some easier questions.

  12. #42
    lanman92's Avatar Active Member
    Reputation
    50
    Join Date
    Mar 2007
    Posts
    1,033
    Thanks G/R
    0/1
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    LOL, advanced geometry? Go read a book, retard. Honors or bust!

  13. #43
    wat-u-doin's Avatar Banned
    Reputation
    7
    Join Date
    Nov 2008
    Posts
    38
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    cypher im sry that question is way to hard for me you should go a bit easier

  14. #44
    apollo0510's Avatar Active Member
    Reputation
    18
    Join Date
    Aug 2008
    Posts
    53
    Thanks G/R
    0/1
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Originally Posted by kynox View Post
    Just FYI, they store the key in the CNetClient class.
    dammed, thats too easy. But good to know !
    I never did a memory search for it ....

    Thanks.

    Apollo

  15. #45
    galpha's Avatar Member
    Reputation
    5
    Join Date
    Nov 2007
    Posts
    48
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Decryption done here (correct me if I'm wrong):

    Code:
    0042097C    .  8B46 1C           MOV EAX,DWORD PTR DS:[ESI+1C]
    0042097F    .  8A1408            MOV DL,BYTE PTR DS:[EAX+ECX]
    00420982    .  0FB6BE 1C010000   MOVZX EDI,BYTE PTR DS:[ESI+11C]
    00420989    .  03C1              ADD EAX,ECX
    0042098B    .  8ADA              MOV BL,DL
    0042098D    .  2A9E 1D010000     SUB BL,BYTE PTR DS:[ESI+11D]
    00420993    .  83C1 01           ADD ECX,1
    00420996    .  329C37 1F010000   XOR BL,BYTE PTR DS:[EDI+ESI+11F]
    0042099D    .  BF 14000000       MOV EDI,14
    004209A2    .  8818              MOV BYTE PTR DS:[EAX],BL
    004209A4    .  8A86 1C010000     MOV AL,BYTE PTR DS:[ESI+11C]
    004209AA    .  04 01             ADD AL,1
    004209AC    .  0FB6C0            MOVZX EAX,AL
    004209AF    .  8896 1D010000     MOV BYTE PTR DS:[ESI+11D],DL
    004209B5    .  99                CDQ
    004209B6    .  F7FF              IDIV EDI
    004209B8    .  3B4D EC           CMP ECX,DWORD PTR SS:[EBP-14]
    004209BB    .  8B7D FC           MOV EDI,DWORD PTR SS:[EBP-4]
    004209BE    .  8896 1C010000     MOV BYTE PTR DS:[ESI+11C],DL
    004209C4    .^ 7C AD             JL SHORT WoW.00420973

Page 3 of 4 FirstFirst 1234 LastLast

Similar Threads

  1. [Bot] Are there any programs that let you control wow remotely from say an android phone ?
    By sharkyx1x in forum World of Warcraft Bots and Programs
    Replies: 6
    Last Post: 09-23-2013, 07:53 PM
  2. [Database] Get item data from WoW Servers
    By Saij in forum WoW EMU Questions & Requests
    Replies: 5
    Last Post: 11-19-2010, 11:51 AM
  3. Need help finding someone in WoW
    By crixu in forum World of Warcraft General
    Replies: 6
    Last Post: 12-25-2009, 04:01 PM
  4. [Request] I need a program to edit the maps of wow 2.4.3
    By jejuasji in forum WoW ME Questions and Requests
    Replies: 2
    Last Post: 07-28-2008, 07:48 AM
  5. [Program+Guide] Protect yourself from 99% of all WoW related keyloggers !!!
    By Flying Piggy in forum World of Warcraft Bots and Programs
    Replies: 27
    Last Post: 08-05-2007, 10:32 PM
All times are GMT -5. The time now is 05:16 PM. Powered by vBulletin® Version 4.2.3
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved. User Alert System provided by Advanced User Tagging (Pro) - vBulletin Mods & Addons Copyright © 2024 DragonByte Technologies Ltd.
Digital Point modules: Sphinx-based search