Ok, so I understand that to write a packet editor you have to detour a process's calls to winsock's send() and recv() functions. My question is once you've wrote your dll file that detours the functions and you have injected it into a process, how do you get your injected .dll file to give the packet data to your main gui application for manipulation? I don't understand this part.
You can also just export a function in your dll that registers a callback. Then another dll can access what your PE dll provides (intraprocess but still seperate).