[Question] Sending a packet menu

User Tag List

Results 1 to 8 of 8
  1. #1
    IceFire32's Avatar Active Member
    Reputation
    47
    Join Date
    Feb 2009
    Posts
    33
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    [Question] Sending a packet

    Hey mmowned ^^

    I have a question about sending a packet with the WoW-internal function "SendPacket", which does the encryption for me.

    All I know about this topic, is the information I was able to get from this thread: http://www.mmowned.com/forums/world-...nd-packet.html

    I reversed a bit and found SendPacket at 0x0088E530 and g_clientConnection at 0x00BB43F0. I tried to use the CDataStore class from the "Help Send Packet" thread, but if i try to put some data into it with the "<<" operator, mysteriously my DLL unloads itself / stops execution.

    That's my code:
    Code:
    void loadUp()
    {
    	addChatMessage("|cff00ff00Loaded!") ;
    	
    	CDataStore dataStore ;
    	dataStore << 0x123 ;
    
    	__asm { 
    		mov edx, dataStore
    		push edx // push the pointer to dataStore
    
    		mov ecx, 0x00BB43F0 // move g_clientConnection to ecx
    		
    		mov eax, 0x0088E530 
    		call eax // call SendPacket
    	}
    
    	addChatMessage("|cff00ff00Finished!") ;
    }
    I hope you are able to help me

    Greetings,
    IceFire32

    PS:
    Sorry for my bad english :>

    [Question] Sending a packet
  2. #2
    Bananenbrot's Avatar Contributor
    Reputation
    153
    Join Date
    Nov 2009
    Posts
    384
    Thanks G/R
    1/3
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Code:
    CDataStore dataStore ;
    ...
    __asm
    {
        mov edx, &dataStore
        push edx // push the pointer to dataStore
        ...
    }
    ...
    I'm not at all familiar with the inline assembler, but I think you need to pass the pointer to your stackallocated CDataStore.

  3. #3
    IceFire32's Avatar Active Member
    Reputation
    47
    Join Date
    Feb 2009
    Posts
    33
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Originally Posted by Bananenbrot View Post
    Code:
    CDataStore dataStore ;
    ...
    __asm
    {
        mov edx, &dataStore
        push edx // push the pointer to dataStore
        ...
    }
    ...
    I'm not at all familiar with the inline assembler, but I think you need to pass the pointer to your stackallocated CDataStore.
    Thanks for the quick answer!

    The inline assembler isn't the problem, if I execute the following code, "dataStore << 0x123 ; | <- was executed" isn't written into the chat, so the problem seems to be in the CDataStore class :/

    Code:
    void loadUp()
    {
    	addChatMessage("|cff00ff00Loaded!") ;
    	
    	CDataStore dataStore ;
    	dataStore << 0x123 ;
    	addChatMessage("dataStore << 0x123 ; | <- was executed") ;
    	__asm { 
    		mov edx, dataStore
    		push edx // push the pointer to dataStore
    
    		mov ecx, 0x00BB43F0 // move g_clientConnection to ecx
    		
    		mov eax, 0x0088E530 
    		call eax // call SendPacket
    	}
    
    	addChatMessage("|cff00ff00Finished!") ;
    }
    It's not necessary to use the "&" operator in inline ASM (not just not necessary, it's not able).

  4. #4
    namreeb's Avatar Legendary

    Reputation
    658
    Join Date
    Sep 2008
    Posts
    1,023
    Thanks G/R
    7/215
    Trade Feedback
    0 (0%)
    Mentioned
    8 Post(s)
    Tagged
    0 Thread(s)
    Have you tried catching an exception and writing it out?

  5. #5
    caytchen's Avatar Contributor
    Reputation
    138
    Join Date
    Apr 2007
    Posts
    162
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    You probably have to assign your dataStore a buffer to store data in. Though if its trying to write to bad memory thats easily detectable with a debugger. If thats not the case and your CDataStore works as expected, check if the stack is sane and get rid of these engine calls to do your logging.

  6. #6
    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)
    Try

    Code:
    CDataStore* ds = new CDataStore();
    I think that will work. I'd give typedef's a try too, instead of inline asm.

  7. #7
    caytchen's Avatar Contributor
    Reputation
    138
    Join Date
    Apr 2007
    Posts
    162
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Originally Posted by lanman92 View Post
    Try

    Code:
    CDataStore* ds = new CDataStore();
    I think that will work. I'd give typedef's a try too, instead of inline asm.
    The only difference to creating the dataStore locally is that the object will persist beyond the function scope, but that is obviously not the issue here.

  8. #8
    xcyanx's Avatar Corporal
    Reputation
    11
    Join Date
    Apr 2010
    Posts
    23
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    you could prolly use:
    Code:
    void loadUp()
    {
    	addChatMessage("|cff00ff00Loaded!") ;
    	
    	CDataStore *dataStore ;
    	*dataStore << 0x123 ; //so you will get the pointer to the dataStore inside your  
                                           //asm block of code.
    
    	__asm { 
    		mov edx, dataStore
    		push edx // push the pointer to dataStore
    
    		mov ecx, 0x00BB43F0 // move g_clientConnection to ecx
    		
    		mov eax, 0x0088E530 
    		call eax // call SendPacket
                    add esp, 0x4 //based on lanman92 from the thread that you got the info from
    	}
    
    	addChatMessage("|cff00ff00Finished!") ;
    }
    It's not necessary to use the "&" operator in inline ASM (not just not necessary, it's not able).
    You can use the "&" operator in the inline ASM but not with that symbol. You could use [dataStore](or something like that, i don't remember exactly) to get the address of your object.
    Last edited by xcyanx; 06-14-2010 at 12:43 PM.

Similar Threads

  1. question about wow packets
    By mayainverse in forum World of Warcraft General
    Replies: 2
    Last Post: 08-25-2014, 12:15 AM
  2. Issues sending movement packets
    By namreeb in forum WoW Memory Editing
    Replies: 49
    Last Post: 06-09-2009, 06:17 PM
  3. [Question] Send money with paypal without a bank or VCC/CC
    By PublicEnemy219 in forum WoW Scams Help
    Replies: 2
    Last Post: 02-09-2009, 12:59 AM
  4. [Question] Send Keys to Window
    By TuFF in forum Programming
    Replies: 4
    Last Post: 10-09-2008, 05:55 PM
  5. where is send packets call address
    By metalqiang in forum WoW Memory Editing
    Replies: 9
    Last Post: 08-19-2008, 04:30 PM
All times are GMT -5. The time now is 10:04 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