poedbg: External API for Packet Logging and more, C++, C#, Python menu

User Tag List

Page 1 of 2 12 LastLast
Results 1 to 15 of 16
  1. #1
    maper's Avatar Elite User __readgsqword(0x188); CoreCoins Purchaser
    Reputation
    496
    Join Date
    Nov 2013
    Posts
    356
    Thanks G/R
    26/353
    Trade Feedback
    0 (0%)
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)

    poedbg: External API for Packet Logging and more, C++, C#, Python

    Note: This project is no longer maintained. Source code attached.

    Ask and ye shall receive, exiles. I have pulled the packet logger into its own standalone module and implemented an external API that you can use to communicate with it. It currently supports C++, C#, and Python, with many other languages possible.

    Get Started

    GitHub - m4p3r/poedbg: External packet logger and API for Path of Exile.

    Source Code

    See attachment.

    Development

    I've included the packet sending and receiving features to start. I will be expanding the capabilities of the API to include other things such as memory manipulation, hooking, and more. If you have suggestions, feel free to leave them in this thread.
    Attached Files Attached Files
    Last edited by maper; 07-30-2018 at 02:56 AM. Reason: Adding source reference.

    poedbg: External API for Packet Logging and more, C++, C#, Python
  2. Thanks Sithylis, GameHelper, Pazitif, toadskin, Ewinz87, omnivore, everknown, Treasure_Box (8 members gave Thanks to maper for this useful post)
  3. #2
    GameHelper's Avatar ★ Elder ★ CoreCoins Purchaser
    Reputation
    2455
    Join Date
    Jun 2015
    Posts
    3,049
    Thanks G/R
    455/2200
    Trade Feedback
    0 (0%)
    Mentioned
    65 Post(s)
    Tagged
    1 Thread(s)
    I want to use that to implement
    “Is flask drink request responded from the server or not”
    This is greatly improve double drinking issues . Specially for instant flask... for now we manually use delay for those things.

    Going to look at the code and work on this tomorrow.

  4. Thanks everknown (1 members gave Thanks to GameHelper for this useful post)
  5. #3
    maper's Avatar Elite User __readgsqword(0x188); CoreCoins Purchaser
    Reputation
    496
    Join Date
    Nov 2013
    Posts
    356
    Thanks G/R
    26/353
    Trade Feedback
    0 (0%)
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)
    Originally Posted by zaafar View Post
    I want to use that to implement
    “Is flask drink request responded from the server or not”
    This is greatly improve double drinking issues . Specially for instant flask... for now we manually use delay for those things.

    Going to look at the code and work on this tomorrow.
    Packet 0x36 is sent up the the server when you initiate a flask drink, 0xf4 is received on the client when the server confirms that a flask drink has occurred (does not get sent if you're at full health or mana, etc.)

  6. Thanks everknown (1 members gave Thanks to maper for this useful post)
  7. #4
    GameHelper's Avatar ★ Elder ★ CoreCoins Purchaser
    Reputation
    2455
    Join Date
    Jun 2015
    Posts
    3,049
    Thanks G/R
    455/2200
    Trade Feedback
    0 (0%)
    Mentioned
    65 Post(s)
    Tagged
    1 Thread(s)
    Originally Posted by maper View Post
    Packet 0x36 is sent up the the server when you initiate a flask drink, 0xf4 is received on the client when the server confirms that a flask drink has occurred (does not get sent if you're at full health or mana, etc.)



    wow, ur love!

  8. #5
    ugabugaga's Avatar Member
    Reputation
    1
    Join Date
    Jan 2018
    Posts
    1
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Hi, excellent tool. Can you add some sort of filter or just logfile.

  9. #6
    amarat100's Avatar Member
    Reputation
    3
    Join Date
    Dec 2017
    Posts
    7
    Thanks G/R
    1/2
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    First problem I encountered is packets which send in groups. For example, I often see 0x0122 packet received, BUT sometime get 0x0122 000a ....
    This is two packets. One is 0x0122 and another is chat message. Sometimes I get 0x000a and at the end I see 0x0122.

    I guess, it is how their UDP reliability works (just resend if not approved), because they don't use TCP for determenistic lockstep synchronization.
    So, we can pretty reliably read "Send" packets, but there is problem in correctly deserialize "Received", because there can be multiple packets serialized one after another.

    Also, some of game mechanics is lockstep predicted, so in many cases your game version simulates what is happening on server instead of constatly updating what server send or actualized.
    Last edited by amarat100; 01-14-2018 at 03:00 PM.

  10. #7
    GameHelper's Avatar ★ Elder ★ CoreCoins Purchaser
    Reputation
    2455
    Join Date
    Jun 2015
    Posts
    3,049
    Thanks G/R
    455/2200
    Trade Feedback
    0 (0%)
    Mentioned
    65 Post(s)
    Tagged
    1 Thread(s)
    when i close the debugger, Poe crash....can we make it such that debugger gets removed safely.

  11. #8
    maper's Avatar Elite User __readgsqword(0x188); CoreCoins Purchaser
    Reputation
    496
    Join Date
    Nov 2013
    Posts
    356
    Thanks G/R
    26/353
    Trade Feedback
    0 (0%)
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)
    Originally Posted by zaafar View Post
    when i close the debugger, Poe crash....can we make it such that debugger gets removed safely.
    I will add an exposed function to "uninitialize" in the next update!

  12. #9
    maper's Avatar Elite User __readgsqword(0x188); CoreCoins Purchaser
    Reputation
    496
    Join Date
    Nov 2013
    Posts
    356
    Thanks G/R
    26/353
    Trade Feedback
    0 (0%)
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)
    I've updated it with the latest version, which now includes the "PoeDbgDestroy" function. This function will detach the internal debugger, un-set all hook locations, and free the memory and handles that the module was using. You can safely close your applications after calling this function.

  13. Thanks GameHelper (1 members gave Thanks to maper for this useful post)
  14. #10
    maper's Avatar Elite User __readgsqword(0x188); CoreCoins Purchaser
    Reputation
    496
    Join Date
    Nov 2013
    Posts
    356
    Thanks G/R
    26/353
    Trade Feedback
    0 (0%)
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)
    Updated this again. Added more status codes for better error handling, corrected a thread handle leaking and performance issue, as well as improved the sample C++ code to give an example of packet data printing and packet filtering.

    Also included a slightly longer list of packet IDs as I look more at different packets.

    Code:
    // Packet definitions.
    #define POE_C2S_HEARTBEAT 0x0d
    #define POE_C2S_MOVE_BEGIN 0xd4
    #define POE_C2S_MOVE_SUSTAIN 0xd6
    #define POE_C2S_MOVE_END 0xd8
    #define POE_C2S_FLASK_DRINK 0x36
    #define POE_S2C_LOGIN 0x02
    #define POE_S2C_CHARACTERS 0x04
    #define POE_S2C_TRANSITION 0x05
    #define POE_S2C_HEARTBEAT 0x22
    #define POE_S2C_CHAT 0x0a
    #define POE_S2C_ENTITY_POSITION_UPDATE 0xe5
    #define POE_S2C_ENTITY_STATE_UPDATE 0x0e
    #define POE_S2C_FLASK_DRINK_EFFECT 0xf4
    Let me know if there are other features that would be helpful.

  15. #11
    xcrossover25x's Avatar Active Member
    Reputation
    75
    Join Date
    Dec 2008
    Posts
    319
    Thanks G/R
    8/1
    Trade Feedback
    1 (100%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Are you able to tell if the client sends a packet to the server when you try to right-click off an active headhunter buff?

    My problem is that Headhunter - Official Path of Exile Wiki will occasionally grant a buff that teleports you to nearby enemies automatically. This can be dangerous, but it is mostly very annoying. Attempting to right-click off a Headhunter buff does not work. I am just curious whether or not right-clicking the buff will even send a packet to the server, or if the client says "You know you can't right-click this, I'm not even going to send a packet"

    And if the latter is true, what would happen if you attempted to send a packet to the server asking for the headhunter buff to be removed?
    Last edited by xcrossover25x; 01-24-2018 at 07:42 AM.

  16. #12
    amarat100's Avatar Member
    Reputation
    3
    Join Date
    Dec 2017
    Posts
    7
    Thanks G/R
    1/2
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Im 90% sure nothing will happen. Except it will be logged on server audit and if you happen to stumble into investigation team - it can be a proof of your malicious behavior. Do not send packets which are not possible in game finite-state-automata. So, you can't change state of the game in a way it will not permit - it will probably won't do a thing, and will be logged. Just like any FSA out there.

    On the other hand, if you don't care about your own anticheat durability - you can encounter some very funny bugs and/or exploits. Possibility is low, though. I know it because the first question in poe-developer task for public API is probably "how to protect it from malicious behavior". Its just like vaaling unique/rare - it will probably crap the item, but in some rare cases you can get great benefit (if developer unconsiciously created a bug, but believed that it will never happen because client won't allow it).

    Like noclip through walls, or brute-forcing recipes by not existing items in your inventory, or opening chests without need to move to them first, or pickuping items without cooldown. There is a lot of things that can be done, but most of them is probably already protected. Most of them is already protected by Deterministic LockStep algorithm, which basically run headless (without graphics and other unimportant things) copy of your client on server side
    Last edited by amarat100; 01-24-2018 at 11:01 AM.

  17. Thanks xcrossover25x, maper (2 members gave Thanks to amarat100 for this useful post)
  18. #13
    maper's Avatar Elite User __readgsqword(0x188); CoreCoins Purchaser
    Reputation
    496
    Join Date
    Nov 2013
    Posts
    356
    Thanks G/R
    26/353
    Trade Feedback
    0 (0%)
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)
    I've added the source code for the poedbg.dll module as well in the repository.

  19. #14
    Beanjuice's Avatar Member
    Reputation
    1
    Join Date
    Mar 2018
    Posts
    8
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    I'm having an issue where no data is being returned. In both the C# and python sample files, I can capture the in going and outgoing packets and their Id's and lengths come in correctly however when I examine the Data, its always empty (or at least a byte array of length 1 with just a 0 in it).

    The C++ sample works fine. In C# the data type of Data is byte[], is it actually a pointer instead?

    Any ideas?

    Thanks.
    Last edited by Beanjuice; 03-18-2018 at 11:52 PM.

  20. #15
    maper's Avatar Elite User __readgsqword(0x188); CoreCoins Purchaser
    Reputation
    496
    Join Date
    Nov 2013
    Posts
    356
    Thanks G/R
    26/353
    Trade Feedback
    0 (0%)
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)
    Originally Posted by Beanjuice View Post
    I'm having an issue where no data is being returned. In both the C# and python sample files, I can capture the in going and outgoing packets and their Id's and lengths come in correctly however when I examine the Data, its always empty (or at least a byte array of length 1 with just a 0 in it).

    The C++ sample works fine. In C# the data type of Data is byte[], is it actually a pointer instead?

    Any ideas?

    Thanks.
    You're right, there were problems with both the Python and C# code interpreting the packet data incorrectly.

    I have fixed both versions and pushed the fixes to GitHub. Thanks for pointing that out.

Page 1 of 2 12 LastLast

Similar Threads

  1. [Selling] Cheap cd keys for battle.net and more!!
    By SuinzZ in forum World of Warcraft Buy Sell Trade
    Replies: 0
    Last Post: 08-09-2014, 05:37 AM
  2. [Selling] X4 LVL55 READY FOR Nightmare OPS AND MORE
    By newbytr in forum Star Wars: The Old Republic Buy Sell Trade
    Replies: 1
    Last Post: 07-02-2013, 04:37 PM
  3. [Selling] Compare prices on Gold, Cdkeys and Time Cards for Diablo 3 and more!
    By shiftmmo in forum Diablo 3 Buy Sell Trade
    Replies: 0
    Last Post: 07-12-2012, 07:13 PM
  4. WTT WoW account with lvl 55 warrior and more for something
    By Trucido in forum Members Only Accounts And CD Keys Buy Sell
    Replies: 4
    Last Post: 01-26-2008, 07:48 PM
All times are GMT -5. The time now is 10:51 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