Ejemplo n.º 1
0
        public static IntPtr NtCreateThreadEx(ref IntPtr threadHandle, Execution.Win32.WinNT.ACCESS_MASK desiredAccess,
                                              IntPtr objectAttributes, IntPtr processHandle, IntPtr startAddress, IntPtr parameter,
                                              Execution.Win32.NtDll.NT_CREATION_FLAGS creationFlags, int stackZeroBits, int sizeOfStack, int maximumStackSize,
                                              IntPtr attributeList)
        {
            //Craft an array for the arguments
            object[] funcargs =
            {
                threadHandle, desiredAccess,    objectAttributes, processHandle, startAddress, parameter, creationFlags, stackZeroBits,
                sizeOfStack,  maximumStackSize, attributeList
            };

            return((IntPtr)Generic.DynamicAPIInvoke(@"ntdll.dll", @"NtCreateThreadEx",
                                                    typeof(DELEGATES.NtCreateThreadEx), ref funcargs));
        }
Ejemplo n.º 2
0
        public static Execution.Win32.NtDll.NTSTATUS NtCreateThreadEx(ref IntPtr threadHandle, Execution.Win32.WinNT.ACCESS_MASK desiredAccess,
                                                                      IntPtr objectAttributes, IntPtr processHandle, IntPtr startAddress, IntPtr parameter,
                                                                      bool createSuspended, int stackZeroBits, int sizeOfStack, int maximumStackSize,
                                                                      IntPtr attributeList)
        {
            // Craft an array for the arguments
            object[] funcargs =
            {
                threadHandle, desiredAccess,    objectAttributes, processHandle, startAddress, parameter, createSuspended, stackZeroBits,
                sizeOfStack,  maximumStackSize, attributeList
            };

            // Update the modified variables
            threadHandle = (IntPtr)funcargs[0];

            return((Execution.Win32.NtDll.NTSTATUS)Generic.DynamicAPIInvoke(@"ntdll.dll", @"NtCreateThreadEx",
                                                                            typeof(DELEGATES.NtCreateThreadEx), ref funcargs));
        }