Add() public method

public Add ( KiServiceTableEntry kiServiceTableEntry ) : void
kiServiceTableEntry KiServiceTableEntry
return void
示例#1
0
        //opens a driver device and gets the complete KiServiceTable
        public unsafe KiServiceTable GetKiServiceTable()
        {
            //the service table we will fill out and return later
            KiServiceTable kiServiceTable = new KiServiceTable();
            int            NumberOfServices;

            //open driver
            try
            {
                //our in and out buffer
                byte[] inBuffer  = new byte[0];
                byte[] outBuffer = new byte[0x1000]; //should be big enough

                //
                Interact(IOCTL_GET_SERVICE_TABLE(), inBuffer, outBuffer);

                //didn't found a byte[4] to int convertion method ...
                //First dword is NumberOfServices
                NumberOfServices = 0;
                fixed(byte *pOut = outBuffer)         //unmanaged data
                {
                    //first dword is cnt for number of services in this os
                    NumberOfServices = ((int *)pOut)[0];

                    //and then the complete service table ...
                    for (int cnt = 0; cnt < NumberOfServices; cnt++)
                    {
                        //get address
                        uint address = ((uint *)pOut)[cnt + 1];

                        //create new entry
                        KiServiceTableEntry entry = new KiServiceTableEntry(address);
                        //resolve module name for that address
                        entry.Module = GetModuleName(address);
                        kiServiceTable.Add(entry);
                    }
                }
            }
            catch (Exception e)
            {
                string msg = e.StackTrace + "\n\n" +
                             e.Message + "\n\n" +
                             e.HelpLink + "\n please contact the developer";

                MessageBox.Show(msg);
            }

            return(kiServiceTable);
        }
示例#2
0
        //opens a driver device and gets the complete KiServiceTable
        public unsafe KiServiceTable GetKiServiceTable()
        {
            //the service table we will fill out and return later
            KiServiceTable kiServiceTable = new KiServiceTable();
            int NumberOfServices;

            //open driver
            try
            {
                //our in and out buffer
                byte[] inBuffer = new byte[0];
                byte[] outBuffer = new byte[0x1000]; //should be big enough

                //
                Interact(IOCTL_GET_SERVICE_TABLE(), inBuffer, outBuffer);

                //didn't found a byte[4] to int convertion method ...
                //First dword is NumberOfServices
                NumberOfServices = 0;
                fixed (byte* pOut = outBuffer)        //unmanaged data
                {
                    //first dword is cnt for number of services in this os
                    NumberOfServices = ((int*)pOut)[0];

                    //and then the complete service table ...
                    for (int cnt = 0; cnt < NumberOfServices; cnt++)
                    {
                        //get address
                        uint address = ((uint*)pOut)[cnt + 1];

                        //create new entry
                        KiServiceTableEntry entry = new KiServiceTableEntry(address);
                        //resolve module name for that address
                        entry.Module = GetModuleName(address);
                        kiServiceTable.Add(entry);
                    }
                }
            }
            catch (Exception e)
            {
                string msg = e.StackTrace + "\n\n" +
                             e.Message + "\n\n" +
                             e.HelpLink + "\n please contact the developer";

                MessageBox.Show(msg);
            }

            return kiServiceTable;
        }