예제 #1
0
        public static DPAPI_MODULE dpapiDecryptModule(DPAPI_MODULE oEncMod)
        {
            DPAPI_MODULE oMod = new DPAPI_MODULE();

            Byte[] bEncrypted = new Byte[oEncMod.iModSize];
            Marshal.Copy(oEncMod.pMod, bEncrypted, 0, oEncMod.iModSize);

            DATA_BLOB oPlainText  = new DATA_BLOB();
            DATA_BLOB oCipherText = makeBlob(bEncrypted);
            DATA_BLOB oEntropy    = makeBlob(bEntropy);

            String  sDescription = String.Empty;
            Boolean bStatus      = CryptUnprotectData(ref oCipherText, ref sDescription, ref oEntropy, IntPtr.Zero, IntPtr.Zero, 0, ref oPlainText);

            if (bStatus)
            {
                oMod.pMod = oPlainText.pbData;
                oMod.bMod = new Byte[oPlainText.cbData];
                Marshal.Copy(oPlainText.pbData, oMod.bMod, 0, oPlainText.cbData);
                oMod.iModSize    = oPlainText.cbData;
                oMod.iModVersion = oEncMod.iModVersion;
            }

            return(oMod);
        }
예제 #2
0
        public static DPAPI_MODULE dpapiEncryptModule(Byte[] bMod, String sModName, Int32 iModVersion = 0)
        {
            DPAPI_MODULE dpMod = new DPAPI_MODULE();

            DATA_BLOB oPlainText  = makeBlob(bMod);
            DATA_BLOB oCipherText = new DATA_BLOB();
            DATA_BLOB oEntropy    = makeBlob(bEntropy);

            Boolean bStatus = CryptProtectData(ref oPlainText, sModName, ref oEntropy, IntPtr.Zero, IntPtr.Zero, CRYPTPROTECT_LOCAL_MACHINE, ref oCipherText);

            if (bStatus)
            {
                dpMod.sModName    = sModName;
                dpMod.iModVersion = iModVersion;
                dpMod.iModSize    = oCipherText.cbData;
                dpMod.pMod        = oCipherText.pbData;
            }

            return(dpMod);
        }
예제 #3
0
 public static void freeMod(DPAPI_MODULE oMod)
 {
     //IntPtr piLen = (IntPtr)oMod.iModSize;
     //NtFreeVirtualMemory((IntPtr)(-1), ref oMod.pMod, ref piLen, AllocationType.Release);
     LocalFree(oMod.pMod);
 }