| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455 |
- using System;
- using System.Runtime.InteropServices;
- using EasyHook;
- using Log;
- namespace Hooks
- {
- [UnmanagedFunctionPointer(CallingConvention.StdCall, CharSet = CharSet.Unicode,
- SetLastError = true)]
- public delegate int DRecv(IntPtr handle, IntPtr buf, int count, int flag);
- public class RecvHook: IDisposable
- {
- [DllImport("Ws2_32.dll", EntryPoint = "recv")]
- public static extern int Recv(IntPtr handle, IntPtr buf, int count, int flag);
- private readonly LocalHook localHook;
- public RecvHook(DRecv dRecv)
- {
- try
- {
- this.localHook = LocalHook.Create(
- LocalHook.GetProcAddress("Ws2_32.dll", "recv"), new DRecv(dRecv), this);
- this.localHook.ThreadACL.SetInclusiveACL(new[] { 0 });
- }
- catch (Exception)
- {
- Logger.Debug("Error creating recv Hook");
- throw;
- }
- }
- public void Dispose()
- {
- this.localHook.Dispose();
- }
- //static int RecvHooked(IntPtr socketHandle, IntPtr buf, int count, int socketFlags)
- //{
- // int bytesCount = recv(socketHandle, buf, count, socketFlags);
- // if (bytesCount > 0)
- // {
- // var newBuffer = new byte[bytesCount];
- // Marshal.Copy(buf, newBuffer, 0, bytesCount);
- // string s = Encoding.ASCII.GetString(newBuffer);
- // TextWriter tw = new StreamWriter("recv.txt");
- // tw.Write(s);
- // tw.Close();
- // Logger.Debug(string.Format("Hooked:>{0}", s));
- // }
- // return bytesCount;
- //}
- }
- }
|