EVENTS in 3.3.5.12340 menu

User Tag List

Page 1 of 2 12 LastLast
Results 1 to 15 of 17
  1. #1
    maphack122's Avatar Private
    Reputation
    1
    Join Date
    Mar 2010
    Posts
    9
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    EVENTS in 3.3.5.12340

    I have a problem with events. For example, when i hook BroadcastEvent and recieve CHAT_MSG_SAY i got 13 args
    Code:
    %s%s%s%s%s%s%d%d%s%d%d%s%u
    .
    Got this by
    Code:
    void BroadcastEvent( DWORD dwEventID, const char * pszFmt, void *... )
    {
    	OutputDebugString(pszFmt);
    /// CODE + restore stack
    oBroadcastEvent( dwEventID, pszFmt );
    }
    The event looks like
    Code:
    [6064] %s%s%s%s%s%s%d%d%s%d%d%s%u
    [6064] 0 field: CHAT_MSG_SAY
    [6064] 1 field: 0н›ьл›\/Ь˜ь›ИЂкяћ
    [6064] 2 field: <э›ЪЁP
    [6064] 3 field: ѓД<_^[‹е]Г3яйqяяяММММММММММММММU‹мS3Ы9шпј
    [6064] 4 field: 
    [6064] 5 field: %s%s%s%s%s%s%d%d%s%d%d%s%u
    [6064] 6 field: say 
    [6064] 7 field: 60550140 
    [6064] 8 field: 148647772  
    [6064] 9 field:   
    [6064] 10 field: 418021576  
    [6064] 11 field: 10360063  
    [6064] 12 field:   
    [6064] 13 field:
    6 Field : the message i have typed in chat.

    The normal event is
    Code:
    ("message", "sender", "language", "channelString", "target", "flags", unknown, channelNumber, "channelName", unknown, counter)
    
    Arguments:
    
    •message - The message thats received (string) 
    •sender - The sender's username. (string) 
    •language - The language the message is in. (string) 
    •channelString - The full name of the channel, including number. (string) 
    •target - The username of the target of the action. Not used by all events. (string) 
    •flags - The various chat flags. Like, DND or AFK. (string) 
    •unknown - This variable has an unkown purpose, although it may be some sort of internal channel id. That however is not confirmed. (number) 
    •channelNumber - The numeric ID of the channel. (number) 
    •channelName - The full name of the channel, does not include the number. (string) 
    •unknown - This variable has an unkown purpose although it always seems to be 0. (number) 
    •counter - This variable appears to be a counter of chat events that the client recieves. (number)
    What could be the source of problem?
    Last edited by maphack122; 07-21-2010 at 11:20 AM.

    EVENTS in 3.3.5.12340
  2. #2
    Robske's Avatar Contributor
    Reputation
    305
    Join Date
    May 2007
    Posts
    1,062
    Thanks G/R
    3/4
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    I have the same problem.

    Flipped a bool and switched back to a lua callback to get event data untill I can gather enough care to look closer into it.
    "Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live." - Martin Golding
    "I cried a little earlier when I had to poop" - Sku

  3. #3
    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)
    Well, what is your problem? Except that your stack handling might be ****ed up and that you got a string encoding problem, none of which we can help you solve by what you provided.

    Originally Posted by Robske
    Flipped a bool and switched back to a lua callback to get event data untill I can gather enough care to look closer into it.
    Might just stay at that. Hooking BroadcastEvent seems like a honeypot yearning to be scanned.
    Last edited by caytchen; 07-21-2010 at 12:29 PM.

  4. #4
    maphack122's Avatar Private
    Reputation
    1
    Join Date
    Mar 2010
    Posts
    9
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Originally Posted by caytchen View Post
    Well, what is your problem? Except that your stack handling might be ****ed up and that you got a string encoding problem, none of which we can help you solve by what you provided.



    Might just stay at that. Hooking BroadcastEvent seems like a honeypot yearning to be scanned.
    So i need to hook LUA SignalEvent ? (I do not need to make hack warden-proof.) (Sorry for my english, i am not a native speaker)

  5. #5
    Cypher's Avatar Kynox's Sister's Pimp
    Reputation
    1358
    Join Date
    Apr 2006
    Posts
    5,368
    Thanks G/R
    0/6
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Originally Posted by Robske View Post
    I have the same problem.

    Flipped a bool and switched back to a lua callback to get event data untill I can gather enough care to look closer into it.
    Using a LUA callback is a much better method anyway imo.

  6. #6
    Robske's Avatar Contributor
    Reputation
    305
    Join Date
    May 2007
    Posts
    1,062
    Thanks G/R
    3/4
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Originally Posted by Cypher View Post
    Using a LUA callback is a much better method anyway imo.
    They both have their advantages and disadvantages I suppose. Personally I prefer detouring Framescript__SignalEvent.

    Lua in this case can be compared to a retarded infant who needs monitoring and special attention. (As you have to keep your Lua frame object and event callback alive)
    Then again, the detour code for Framescript__SignalEvent in C# can be compared to something you'd 'man the harpoons' for. (I know of no elegant way to detour a variadic function in C#)

    In the end, both implementations require a function detour to work and the LUA version has more ways to be detected and causes (minimal) overhead.

    So, why do you prefer Lua?
    Last edited by Robske; 07-21-2010 at 02:55 PM.
    "Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live." - Martin Golding
    "I cried a little earlier when I had to poop" - Sku

  7. #7
    Cypher's Avatar Kynox's Sister's Pimp
    Reputation
    1358
    Join Date
    Apr 2006
    Posts
    5,368
    Thanks G/R
    0/6
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Because it doesn't require a function detour. You're doing it wrong.

    Also, keeping your Lua crap alive is fairly easy. From memory you can just put this in your OnFrame handler:
    if (pPlayerPrev != GetActivePlayer()) { RegisterLuaShit(); }

    Btw, the 'overhead' you're referring to is negligible in all the tests I've performed.

  8. #8
    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 Cypher View Post
    Because it doesn't require a function detour. You're doing it wrong.

    Also, keeping your Lua crap alive is fairly easy. From memory you can just put this in your OnFrame handler:
    if (pPlayerPrev != GetActivePlayer()) { RegisterLuaShit(); }

    Btw, the 'overhead' you're referring to is negligible in all the tests I've performed.
    Do you register a new function? I'm detouring an existing lua function, one that is rarely (read: never) called and even if it was I can seperate a legitimate call from an event one, since the legitimate one won't have any arguments.
    Not quite sure which is the best way here. You'll need a code cave for registering a new function (okay, not that big of a problem), plus it's been done by public hacks previously.

  9. #9
    Unkn0wn0x's Avatar Member
    Reputation
    6
    Join Date
    Aug 2009
    Posts
    39
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Originally Posted by caytchen View Post
    Do you register a new function? I'm detouring an existing lua function, one that is rarely (read: never) called and even if it was I can seperate a legitimate call from an event one, since the legitimate one won't have any arguments.
    Not quite sure which is the best way here. You'll need a code cave for registering a new function (okay, not that big of a problem), plus it's been done by public hacks previously.
    And you need to detour FrameScript__UnregisterFunction() , because WoW unloads your self registered function on a (for me) random time.

  10. #10
    Cypher's Avatar Kynox's Sister's Pimp
    Reputation
    1358
    Join Date
    Apr 2006
    Posts
    5,368
    Thanks G/R
    0/6
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Originally Posted by caytchen View Post
    Do you register a new function? I'm detouring an existing lua function, one that is rarely (read: never) called and even if it was I can seperate a legitimate call from an event one, since the legitimate one won't have any arguments.
    Not quite sure which is the best way here. You'll need a code cave for registering a new function (okay, not that big of a problem), plus it's been done by public hacks previously.
    Yes I register a new function. Obviously that has its own caveats (Warden could check the callback list for consistency), but tbh I'm not really worried about that. Warden is primarily (almost exclusively) aimed at detecting public bots/hacks/etc, and just can't see Blizzard implementing such an 'aggressive' feature like that given Warden's current state (read: highly targeted).

    For example, it would be trivial for Warden to scan the entire .text and .rdata section, but it doesn't. I have no idea why it doesn't, but that's just the way it is. All the scans are very targeted.

    Hijacking an existing function is an interesting approach, but probably about the same as registering a new function in terms of detectability (they can no longer detect you via callback list consistency checks, but they can detect you via calling the function or looking for your hook).

    How are you hooking the function btw? Just a normal code hook? Debug registers? Guard page (or similar page attribute attack)?

    P.S. You don't need a 'code cave' for registering a new function. You don't even need to hook anything. Just register a function pointer that is 'valid' as far as WoW is concerned, but actually raises an exception when it's called, then you can catch that exception using VEH and perform redirection to the 'real' callback.

    EDIT:

    Whoops, said 'private' when I meant 'public'. Thanks Rob.
    Last edited by Cypher; 07-21-2010 at 10:13 PM.

  11. #11
    Robske's Avatar Contributor
    Reputation
    305
    Join Date
    May 2007
    Posts
    1,062
    Thanks G/R
    3/4
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Originally Posted by Cypher View Post
    Because it doesn't require a function detour. You're doing it wrong.

    Also, keeping your Lua crap alive is fairly easy. From memory you can just put this in your OnFrame handler:
    if (pPlayerPrev != GetActivePlayer()) { RegisterLuaShit(); }

    Btw, the 'overhead' you're referring to is negligible in all the tests I've performed.
    Oh that would do it. I was using one of the *_RegisterScripts() functions.
    "Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live." - Martin Golding
    "I cried a little earlier when I had to poop" - Sku

  12. #12
    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 Cypher View Post

    How are you hooking the function btw? Just a normal code hook? Debug registers? Guard page (or similar page attribute attack)?
    Normal code hook. You said it already, they don't scan all of .text and .rdata but only hash a few bytes at prominent places to catch some public hack, so I couldn't care less. It's my only hook besides EndScene, and they will never ban for the EndScene one.
    I might switch to other means of hooking (VEH or even hardware breakpoints), though, since detecting those would mean implementing an 'aggressive' feature. Just in case they change their mind on hashing everything.

  13. #13
    Cypher's Avatar Kynox's Sister's Pimp
    Reputation
    1358
    Join Date
    Apr 2006
    Posts
    5,368
    Thanks G/R
    0/6
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Originally Posted by caytchen View Post
    Normal code hook. You said it already, they don't scan all of .text and .rdata but only hash a few bytes at prominent places to catch some public hack, so I couldn't care less. It's my only hook besides EndScene, and they will never ban for the EndScene one.
    I might switch to other means of hooking (VEH or even hardware breakpoints), though, since detecting those would mean implementing an 'aggressive' feature. Just in case they change their mind on hashing everything.
    Yep. That's what I'd do. If you swap to a 'stealthier' hooking method then you're pretty much 'Warden-proof' in the practical sense, as they'd have to be 'aggressive' to detect you.

  14. #14
    MaiN's Avatar Elite User
    Reputation
    335
    Join Date
    Sep 2006
    Posts
    1,047
    Thanks G/R
    0/10
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Originally Posted by Robske View Post
    They both have their advantages and disadvantages I suppose. Personally I prefer detouring Framescript__SignalEvent.

    Lua in this case can be compared to a retarded infant who needs monitoring and special attention. (As you have to keep your Lua frame object and event callback alive)
    Then again, the detour code for Framescript__SignalEvent in C# can be compared to something you'd 'man the harpoons' for. (I know of no elegant way to detour a variadic function in C#)

    In the end, both implementations require a function detour to work and the LUA version has more ways to be detected and causes (minimal) overhead.

    So, why do you prefer Lua?
    Psst. Hook the function at 0x81AC90 instead of the real FrameScript::SignalEvent (like I told you on MSN). It has the signature sub_81AC90(DWORD event, const char* fmt, va_list args) - which means the third argument is a pointer to the stack (usually) of args. You can just get them by memory reading. This is the function I call to signal events from my lua wrapper.
    [16:15:41] Cypher: caus the CPU is a dick
    [16:16:07] kynox: CPU is mad
    [16:16:15] Cypher: CPU is all like
    [16:16:16] Cypher: whatever, i do what i want

  15. #15
    Robske's Avatar Contributor
    Reputation
    305
    Join Date
    May 2007
    Posts
    1,062
    Thanks G/R
    3/4
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Originally Posted by MaiN View Post
    Psst. Hook the function at 0x81AC90 instead of the real FrameScript::SignalEvent (like I told you on MSN). It has the signature sub_81AC90(DWORD event, const char* fmt, va_list args) - which means the third argument is a pointer to the stack (usually) of args. You can just get them by memory reading. This is the function I call to signal events from my lua wrapper.
    As I said on msn, that's the very function I'm having troubles with.
    "Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live." - Martin Golding
    "I cried a little earlier when I had to poop" - Sku

Page 1 of 2 12 LastLast

Similar Threads

  1. Replies: 3
    Last Post: 02-01-2013, 03:34 AM
  2. EVENT: The Final Model Edit
    By Fault in forum World of Warcraft Model Editing
    Replies: 40
    Last Post: 01-29-2007, 06:44 AM
  3. Ending Beta Event
    By Paperboi in forum World of Warcraft General
    Replies: 0
    Last Post: 01-13-2007, 04:53 PM
  4. UBRS Rend event bug.
    By issuesbunny in forum World of Warcraft Exploits
    Replies: 4
    Last Post: 01-07-2007, 05:39 AM
  5. Gold Duping Event
    By Ensui in forum World of Warcraft General
    Replies: 1
    Last Post: 12-12-2006, 04:23 PM
All times are GMT -5. The time now is 01:42 AM. Powered by vBulletin® Version 4.2.3
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved. User Alert System provided by Advanced User Tagging (Pro) - vBulletin Mods & Addons Copyright © 2025 DragonByte Technologies Ltd.
Google Authenticator verification provided by Two-Factor Authentication (Free) - vBulletin Mods & Addons Copyright © 2025 DragonByte Technologies Ltd.
Digital Point modules: Sphinx-based search