Имя: Пароль:
1C
 
Что находится в последних 32 Кб DLL?
0 H A D G E H O G s
 
25.11.24
20:56
Дня доброго.

С какой-то версии платформы старше 8.3.20 1С перестала загружать внешнюю компоненту на клиенте из макета, если dll собрана без отладочной информации. Даже до входа в DllMain не доходит.
При этом по абсолютному пути отлично работает, DLL собранную с отладочной информацией (добавлена только отладочная информация, все остальное - релизное) - тоже загружает. Но отладочная DLL весит в 2.5 раза больше.

ProcMon-ом сравнил 2 трассы с обычной и отладочной DLL - 1С разворачивает dll-ку в C:\AppData\Roaming\1C\1cv8\ExtCompT
потом копирует ее в AppData\Local\Temp (причем делает это крайне забавно)

а потом считывает 32 Кбайта (32768 байт) хвоста DLL и завершает процесс для обычной DLL.

Отладочную DLL она снова копирует в другой временный файл и нормально подключает.

Что такого хранится в хвосте DLL, кто в курсе?
1 Волшебник
 
25.11.24
20:58
ну как что, проверка лицензии
2 Звездец
 
25.11.24
21:36
(1) какой? речь явно о своей DLL
3 Asmody
 
25.11.24
21:44
В файлах DLL (Dynamic Link Library) последние 32 Кб могут содержать различные данные в зависимости от структуры и содержимого конкретного файла. Однако, в общем случае, последние 32 Кб DLL-файла могут включать следующие элементы:

1. **Секции данных**:
   - **.data**: Секция, содержащая инициализированные глобальные и статические переменные.
   - **.rdata**: Секция, содержащая только для чтения данные, такие как строки и константы.
   - **.bss**: Секция, содержащая неинициализированные глобальные и статические переменные.

2. **Секции кода**:
   - **.text**: Секция, содержащая исполняемый код функций и процедур.

3. **Ресурсы**:
   - **.rsrc**: Секция, содержащая ресурсы, такие как иконки, строки, меню и диалоги.

4. **Импорт и экспорт таблицы**:
   - **.idata**: Секция, содержащая таблицу импорта, которая указывает на функции и переменные, импортируемые из других DLL.
   - **.edata**: Секция, содержащая таблицу экспорта, которая указывает на функции и переменные, экспортируемые из текущей DLL.

5. **Таблицы релокаций**:
   - **.reloc**: Секция, содержащая таблицу релокаций, которая используется для корректировки адресов при загрузке DLL в память.

6. **Метаданные и заголовки**:
   - **Заголовки PE (Portable Executable)**: Включают информацию о структуре файла, такие как заголовки DOS, PE и секционные заголовки.

7. **Дополнительные данные**:
   - **.tls**: Секция, содержащая данные для потоково-локального хранилища (Thread Local Storage).
   - **.debug**: Секция, содержащая отладочную информацию.

### Пример структуры DLL-файла

```plaintext
+---------------------+
| DOS Header          |
+---------------------+
| PE Header           |
+---------------------+
| Section Headers     |
+---------------------+
| .text               |
+---------------------+
| .data               |
+---------------------+
| .rdata              |
+---------------------+
| .rsrc               |
+---------------------+
| .idata              |
+---------------------+
| .edata              |
+---------------------+
| .reloc              |
+---------------------+
| .tls                |
+---------------------+
| .debug              |
+---------------------+
```

### Заключение

Последние 32 Кб DLL-файла могут содержать различные секции данных, кода, ресурсов, таблиц импорта и экспорта, а также метаданные и заголовки. Конкретное содержимое зависит от структуры и содержимого конкретного DLL-файла. Для точного анализа содержимого последних 32 Кб DLL-файла можно использовать инструменты, такие как `dumpbin` (в Visual Studio) или `objdump` (в Unix-подобных системах).
4 Asmody
 
25.11.24
21:47
The contents of the last 32KB of a DLL (Dynamic Link Library) file can vary greatly depending on the specific DLL and its purpose. However, I can provide some general information about what you might find in the last 32KB of a DLL.

In general, the last 32KB of a DLL typically contains the following:

1. **Export Directory Table**: This table contains information about the functions and variables that the DLL exports, making them available for use by other programs.
2. **Import Directory Table**: This table contains information about the functions and variables that the DLL imports from other DLLs.
3. **Resource Directory**: This directory contains resources such as strings, bitmaps, and icons that are used by the DLL.
4. **Debugging information**: Some DLLs may contain debugging information, such as symbol tables and line numbers, which can be used by debuggers and other development tools.
5. **Checksums and digital signatures**: Some DLLs may contain checksums or digital signatures that are used to verify the integrity and authenticity of the DLL.
6. **Padding and alignment**: The last 32KB of a DLL may also contain padding bytes or alignment bytes, which are used to ensure that the DLL's sections are properly aligned in memory.

Some common DLLs that you might find in the last 32KB of a DLL include:

* `kernel32.dll`: This DLL is a core component of the Windows operating system and provides access to many system functions.
* `user32.dll`: This DLL provides access to the Windows user interface and graphics functions.
* `advapi32.dll`: This DLL provides access to advanced Windows API functions, including registry and security functions.
* `msvcrt.dll`: This DLL provides access to the C runtime library functions.

Keep in mind that the specific contents of the last 32KB of a DLL can vary greatly depending on the DLL and its purpose. If you're interested in examining the contents of a specific DLL, I recommend using a tool like `dumpbin` or `objdump` to disassemble the DLL and view its contents.
5 H A D G E H O G s
 
25.11.24
21:51
(4) Скинь ссылку пожалуйста
6 H A D G E H O G s
 
25.11.24
21:51
(4) На источник
7 Кирпич
 
25.11.24
22:08
Может они так проверяют та ли эта dll или не та. Ну какой нибудь хеш от этих 32 кб вычисляют.
А может просто сам чота понапрограммировал :)
8 Кирпич
 
25.11.24
22:10
а может какой нибудь вирус ищут
9 H A D G E H O G s
 
25.11.24
22:15
(7) (8) На сервере 1С то все работает
10 Asmody
 
25.11.24
22:35
11 Asmody
 
25.11.24
22:41
12 Asmody
 
25.11.24
22:44
кстати, может она подпись ищет? точнее даже не она, а ОС?
13 trdm
 
26.11.24
09:35
(9) на клиентах мейби более современные версии осей стоят, а они более параноидальны и по этому (12)