예제 #1
0
 private void SetThreadContext(IntPtr hThread, ref NativeMethods.CONTEXT context)
 {
     if (!NativeMethods.SetThreadContext(hThread, ref context))
     {
         throw new Win32Exception();
     }
 }
예제 #2
0
        public PacketSpy(AddressAndRegisters send, AddressAndRegisters recv, PacketHandler packetHandler)
        {
            m_Send          = send;
            m_Recv          = recv;
            m_PacketHandler = packetHandler;

            m_ContextBuffer = new NativeMethods.CONTEXT();
            m_ContextBuffer.ContextFlags = NativeMethods.ContextFlags.CONTEXT_CONTROL | NativeMethods.ContextFlags.CONTEXT_INTEGER;
            m_DEventBuffer = new NativeMethods.DEBUG_EVENT_EXCEPTION();

            m_ToStop  = false;
            m_Stopped = new ManualResetEvent(true);
        }
예제 #3
0
        private uint GetContextRegister(NativeMethods.CONTEXT context, Register register)
        {
            switch (register)
            {
            case Register.Eax: return(context.Eax);

            case Register.Ebp: return(context.Ebp);

            case Register.Ebx: return(context.Ebx);

            case Register.Ecx: return(context.Ecx);

            case Register.Edi: return(context.Edi);

            case Register.Edx: return(context.Edx);

            case Register.Esi: return(context.Esi);

            case Register.Esp: return(context.Esp);

            default: throw new ArgumentException();
            }
        }
예제 #4
0
		public PacketSpy( AddressAndRegisters send, AddressAndRegisters recv, PacketHandler packetHandler )
		{
			m_Send = send;
			m_Recv = recv;
			m_PacketHandler = packetHandler;

			m_ContextBuffer = new NativeMethods.CONTEXT();
			m_ContextBuffer.ContextFlags = NativeMethods.ContextFlags.CONTEXT_CONTROL | NativeMethods.ContextFlags.CONTEXT_INTEGER;
			m_DEventBuffer = new NativeMethods.DEBUG_EVENT_EXCEPTION();

			m_ToStop = false;
			m_Stopped = new ManualResetEvent( true );
		}