private int length() { int i, i0; int length = 0x10; for (i = 0; i < Array.Length; i++) { ENRSEntry enrs = Array[i]; length += GetSize(i > 0 ? enrs.Offset - Array[i - 1].Offset : enrs.Offset); length += GetSize(enrs.Count); length += GetSize(enrs.Size); length += GetSize(enrs.Repeat); if (enrs.Repeat < 1) { continue; } for (i0 = 0; i0 < enrs.Count; i0++) { if (enrs.Sub[i0].Type <ENRSEntry.Type.WORD || enrs.Sub[i0].Type> ENRSEntry.Type.QWORD) { return(length.A(0x10)); } length += GetSizeType(i0 > 0 ? enrs.Sub[i0].Skip - enrs.Sub[i0 - 1].SizeSkip : enrs.Sub[i0].Skip); length += GetSize(enrs.Sub[i0].Reverse); } } return(length.A(0x10));
private int length() { if (Array == null) { return(0); } int i, i0; int length = 0x10; for (i = 0; i < Array.Length; i++) { ENRSEntry enrs = Array[i]; if (GetSize(enrs.Offset, ref length)) { goto End; } if (GetSize(enrs.Count, ref length)) { goto End; } if (GetSize(enrs.Size, ref length)) { goto End; } if (GetSize(enrs.Repeat, ref length)) { goto End; } if (enrs.Repeat < 1) { continue; } for (i0 = 0; i0 < enrs.Count; i0++) { if (enrs.Sub[i0].Type <ENRSEntry.Type.WORD || enrs.Sub[i0].Type> ENRSEntry.Type.QWORD) { return(length.A(0x10)); } if (GetSizeType(enrs.Sub[i0].Skip, ref length)) { goto End; } if (GetSize(enrs.Sub[i0].Reverse, ref length)) { goto End; } } } End: return(length.A(0x10));
public static void Encrypt(this string file) { byte[] data; using (Stream _IO = File.OpenReader(file)) data = _IO.ToArray(); int fileLengthOrigin = data.Length; int fileLength = fileLengthOrigin.A(16); byte[] dataAlign = new byte[fileLength]; Array.Copy(data, dataAlign, data.Length); data = null; byte[] encrypted = new byte[fileLength]; using (AesManaged crypto = new AesManaged()) { crypto.Key = Key; crypto.IV = new byte[16]; crypto.Mode = CipherMode.ECB; crypto.Padding = PaddingMode.Zeros; using CryptoStream cryptoData = new CryptoStream(new MSIO.MemoryStream(dataAlign), crypto.CreateEncryptor(crypto.Key, crypto.IV), CryptoStreamMode.Read); cryptoData.Read(encrypted, 0, fileLength); } using (Stream _IO = File.OpenWriter(file, dataAlign.Length)) { _IO.W(0x454C494641564944); _IO.W(fileLength); _IO.W(fileLengthOrigin); _IO.W(encrypted); } }