コード例 #1
0
ファイル: GeneratedSettings.cs プロジェクト: inrg/KryX2
 internal static void SetFilePaths()
 {
     BadCDKeysText = AppDirectory + @"\Text\BadCdKeys.txt";
     StarcraftExe  = AppDirectory + @"\Star\Starcraft.exe";
     StormDll      = AppDirectory + @"\Star\Storm.dll";
     BattleSnp     = AppDirectory + @"\Star\Battle.snp";
     StarBin       = AppDirectory + @"\Lockdown\Star.bin";
     LockdownPath  = AppDirectory + @"\Lockdown\";
     SetHashFiles();
     FilesBuffered.LoadFiles();
 }
コード例 #2
0
ファイル: PeFileLoader.cs プロジェクト: inrg/KryX2
//        public unsafe PeFileLoader(string path)
        public unsafe PeFileLoader(int fileType, int ldDigit)
        {
            //byte[] file = File.ReadAllBytes(path);
            byte[] file;

            switch (fileType)
            {
            case 0:
                file = FilesBuffered.ReturnBytes(0);
                break;

            case 1:
                file = FilesBuffered.ReturnBytes(1);
                break;

            case 2:
                file = FilesBuffered.ReturnBytes(2);
                break;

            case 3:
                file = FilesBuffered.ReturnBytes(ldDigit + 4);
                break;

            default:
                file = null;
                break;
            }


            m_ptr = Marshal.AllocHGlobal(file.Length);
            Marshal.Copy(file, 0, m_ptr, file.Length);
            file = null;

            PeFileReader.DosImageHeader *dosheader;
            PeFileReader.NtHeaders *     ntheader;

            byte *pFile = (byte *)m_ptr.ToPointer();

            dosheader = (PeFileReader.DosImageHeader *)pFile;

            if (dosheader->e_magic != DOS_SIGNATURE)
            {
                Marshal.FreeHGlobal(m_ptr);
                m_ptr = IntPtr.Zero;
                throw new FileLoadException("Invalid DOS signature.");
            }

            ntheader = (PeFileReader.NtHeaders *)(pFile + dosheader->e_lfanew);
            if (ntheader->Signature != NT_SIGNATURE)
            {
                Marshal.FreeHGlobal(m_ptr);
                m_ptr = IntPtr.Zero;
                throw new FileLoadException("Invalid NT signature.");
            }

            m_baseAddrPtr = Marshal.AllocHGlobal(ntheader->OptionalHeader.SizeOfImage);
            byte *baseaddr = (byte *)m_baseAddrPtr.ToPointer();

            Native.Memcpy((void *)baseaddr, (void *)dosheader, dosheader->e_lfanew + ntheader->OptionalHeader.SizeOfHeaders);
            int imageBase, relocOffset;

            imageBase = ntheader->OptionalHeader.ImageBase;
            CopySections(pFile, ntheader, baseaddr);
            relocOffset = (int)(baseaddr - imageBase);

            if (relocOffset != 0)
            {
                PerformBaseReloc(baseaddr, ntheader, relocOffset);
            }
        }