Извлечь пользовательский ресурс из exe, используя только php - PullRequest
0 голосов
/ 30 января 2019

Я должен извлечь пользовательский ресурс из разных файлов EXE и DLL.Ресурс содержит информацию о версии, которую мне нужно сохранить, и которую я смогу отобразить позже, но данные не сохраняются в ресурсе стандартной версии.Автор файлов написал код для извлечения необходимых данных, но исходный код написан на C #.У меня есть исходный код исходного автора для извлечения необходимого ресурса, но я не могу понять, как повторить процесс в PHP.

Вот код C #, используемый для извлечения необходимой информации из ресурса:

static void Main(string[] args) {
    System.IntPtr moduleHandle = LoadLibraryEx(@"C:\examplefile.exe", IntPtr.Zero, LoadLibraryFlags.LOAD_LIBRARY_AS_DATAFILE);
    if (moduleHandle != IntPtr.Zero) {
        System.IntPtr hrsrc = FindResource(moduleHandle, (IntPtr)7777, "FILES");
        System.IntPtr hglob = LoadResource(moduleHandle, hrsrc);
        System.IntPtr rdata = LockResource(hglob);

        byte[] m_pBytes = new byte[6];
        Marshal.Copy(rdata, m_pBytes, 0, 6);

        int vv1 = m_pBytes[0];
        int vv2 = m_pBytes[1];
        int v1 = vv1 * 256 + vv2;
        int v2 = m_pBytes[2];
        int v3 = m_pBytes[3];
        vv1 = m_pBytes[4];
        vv2 = m_pBytes[5];
        int v4 = vv1 * 256 + vv2;
        FreeLibrary(moduleHandle);

        Console.WriteLine(string.Format("{0}.{1}.{2}-{3}", v3, v2, v1, v4));


    }
}

Я застрял в строке: System.IntPtr hrsrc = FindResource (moduleHandle, (IntPtr) 7777, "FILES");

Я не могу точно понять, что происходит на этом этапе,Похоже, что указатель на ресурс возвращается, но я не знаю, как повторить это в PHP.Документация Microsoft для findResource недостаточно детальна, чтобы я мог определить, что происходит внутри.

Я использовал ResourceHacker для просмотра всех ресурсов в файле, а ресурс типа FILES отображается с записью с именем7777. Я вижу двоичные данные, содержащиеся в ресурсе, и вижу, как они используются для получения результата в коде выше.Чего мне не хватает, так это способа поиска и извлечения ресурса по типу с использованием PHP.

Я был бы очень признателен, если бы кто-то смог пролить свет на это и помочь мне.

AЧистое решение PHP было бы лучше, потому что наши серверы сейчас являются машинами Windows, но мы планируем перейти на Linux, поэтому решение, которое работает на обеих платформах, идеально.

...