Форум программистов, компьютерный форум, киберфорум
Python
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.82/11: Рейтинг темы: голосов - 11, средняя оценка - 4.82
6 / 4 / 3
Регистрация: 25.07.2016
Сообщений: 65

Ctypes при использовании Module32First в python 64 и 32 bit разный результат

31.07.2018, 16:29. Показов 2292. Ответов 2

Студворк — интернет-сервис помощи студентам
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
    TH32CS_SNAPMODULE = 0x00000008
 
    class MODULEENTRY32(Structure):
        _fields_ = [('dwSize', DWORD),
                    ('th32ModuleID', DWORD),
                    ('th32ProcessID', DWORD),
                    ('GlblcntUsage', DWORD),
                    ('ProccntUsage', DWORD),
                    ('modBaseAddr', POINTER(BYTE)),
                    ('modBaseSize', DWORD),
                    ('hModule', HMODULE),
                    ('szModule', c_char * 256),
                    ('szExePath', c_char * 260)]
 
 
     def enumerate_modules(self):
        
        module = self.MODULEENTRY32()
        module_list = []
        snapshot = windll.kernel32.CreateToolhelp32Snapshot(TH32CS_SNAPMODULE, self.pid)
 
        if snapshot == INVALID_HANDLE_VALUE:
           raise ("CreateToolhelp32Snapshot(TH32CS_SNAPMODULE, %d" % self.pid, True)
 
        # we *must* set the size of the structure prior to using it, otherwise Module32First() will fail.
        module.dwSize = sizeof(module)
 
        found_mod = self.Module32First(snapshot, byref(module))
 
        while found_mod:
            module_list.append((module.szModule, module.modBaseAddr))
            found_mod = self.Module32Next(snapshot, byref(module))
 
        self.CloseHandle(snapshot)
        return module_list
Этот код выводит список библиотек и их начальный адрес. При запуске этого кода в интерпритаторе 64 и 32 результат разный. При запуске в 64:
[(b'hl.exe', <ctypes.wintypes.LP_c_byte object at 0x0000000001DBCD48>),
(b'ntdll.dll', <ctypes.wintypes.LP_c_byte object at 0x0000000001DBCDC8>),
(b'wow64.dll', <ctypes.wintypes.LP_c_byte object at 0x0000000001DBCE48>),
(b'wow64win.dll', <ctypes.wintypes.LP_c_byte object at 0x0000000001DBCEC8>),
(b'wow64cpu.dll', <ctypes.wintypes.LP_c_byte object at 0x0000000001DBCF48>),
(b'klhkum.dll', <ctypes.wintypes.LP_c_byte object at 0x0000000002C03048>)]

при запуске в 32 список другой:
[(b'hl.exe', <ctypes.wintypes.LP_c_byte object at 0x01FEE030>),
(b'ntdll.dll', <ctypes.wintypes.LP_c_byte object at 0x01FEE350>),
(b'kernel32.dll', <ctypes.wintypes.LP_c_byte object at 0x01FEE530>),
(b'KERNELBASE.dll', <ctypes.wintypes.LP_c_byte object at 0x01FEE580>)...]

Я как понимаю, выводит библиотеки, которые используются при запуске игры под 64bit. Мне нужно вывести всё.
P/s решение в гугле не нашел.
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
31.07.2018, 16:29
Ответы с готовыми решениями:

Почему разный тип возвращаемых данных при использовании await?
Привет! Есть такой класс: class TaskTests { public Task&lt;int&gt; GetIntAsync(int divider) { return Task.Run&lt;int&gt;(()...

Разный результат при одинаковом вводе
Суть задачи в следующем: нужно заданную квадратную матрицу n-размера умножить на вводимое число k и отдельно начальную матрицу возвести в...

Runas - разный результат при вводе
Итак, имеются две команды: runas /savecred /user:Admin cmd в результате запуска в bat-файле или в командной строке запускается cmd...

2
1741 / 913 / 480
Регистрация: 05.12.2013
Сообщений: 3,074
31.07.2018, 17:02
Лучший ответ Сообщение было отмечено LegionSSS как решение

Решение

Вот тут https://docs.microsoft.com/en-... 32snapshot написано, что флаг должен быть такой TH32CS_SNAPMODULE32
1
6 / 4 / 3
Регистрация: 25.07.2016
Сообщений: 65
31.07.2018, 18:03  [ТС]
Python
1
2
3
TH32CS_SNAPMODULE32 = 0x00000010 #.................
#.........
snapshot = windll.kernel32.CreateToolhelp32Snapshot(TH32CS_SNAPMODULE32 | TH32CS_SNAPMODULE, self.pid)
В итоге получилась такая строчка
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
31.07.2018, 18:03
Помогаю со студенческими работами здесь

При одинаковом коде разный результат
Почему при одинаковом коде абсолютно разный результат? мой код: &lt;!DOCTYPE html&gt; &lt;html&gt; &lt;head&gt; &lt;link...

Разный результат при запуске и при компиляции
Есть подключение типа: Provider=Microsoft.Jet.OLEDB.4.0; Data Source=.\*.mdb При запуске программы(Run) выдаёт ошибку подключения, При...

Почему при поиске в HashTable разный результат?
var superHashtable = new SuperHashTable&lt;Person&gt;(100); var person = new Person() { Name = &quot;Евгений&quot;, Age = 17, Gender = 0 }; ...

Разный результат при суммировании элементов массива
double a={0.50,0.51,0.52,0.53,0.54,0.55,0.56};// значеиня х double a2; double a3; double a4; double...

В GCC 4.6.2 32-bit, при использовании STL в 20 - 30 раз увеличивается размер exe
С примерно 20 килобайт до 600 с лишним. При использовании деструктора увеличивается почти на 200Kb. Уже думаю часть кода, где STL и...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru