Получить иконку процесса средствами ntdll

Тема в разделе "WASM.WIN32", создана пользователем Flasher, 25 мар 2010.

  1. Flasher

    Flasher Member

    Публикаций:
    0
    Регистрация:
    31 янв 2004
    Сообщения:
    640
    Есть процесс в памяти, надо получить его иконку средствами ntdll и сохранить в файл.
    Нашел несколько функций для работы с ресурсами:
    LdrEnumResources
    LdrFindResourceDirectory_U
    LdrAccessResource
    LdrFindResourceEx_U
    LdrFindResource_U
    Но в гугле не густо инфы как юзать эти функции :dntknw:

    Не подскажите с чего надо и кудать копать?
     
  2. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    Посмотри, как эти функции вызываются из их Win32API-врапперов FindResource, LoadResource, ...
     
  3. d2k9

    d2k9 Алексей

    Публикаций:
    0
    Регистрация:
    14 сен 2008
    Сообщения:
    325
    Опять небось мега анти-чит :lol:
    Загрузить в IDA нтдлл и отреверсить ети функции для их понимания. Для безгеморройности советую заюзать символы.
    А исчо есть LdrResFindResource, LdrResFindResourceDirectory, LdrResSearchResource, LdrpResGetResourceDirectory...
     
  4. KeSqueer

    KeSqueer Сергей

    Публикаций:
    0
    Регистрация:
    19 июл 2007
    Сообщения:
    1.183
    Адрес:
    Москва
    [offtop]
    Видел один компилятор под win32, хз какого языка (помесь паскаля и си, авторская разработка), он делал странные секции ресурсов.
    Обычно ресурсы представлены тремя ступенями - тип_ресурса-язык-идентификатор, а тот компилятор для ресурсов, у которых язык не важен (скажем, иконки или изображения), создавал деревья вида тип_ресурса-идентификатор. Как ни странно, приложение корректно работало и оторбражалось.
    [/offtop]
     
  5. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    Flasher
    Нэйтив поможет только найти ресурс, все манипуляции по извлечению иконки придётся выполнять в ручную http://www.wasm.ru/forum/viewtopic.php?id=31344. Есть апи, незачем вручную это выполнять. Нэйтив нужен для низкоуровневых манипуляций.
     
  6. punxer

    punxer Андрей

    Публикаций:
    0
    Регистрация:
    16 окт 2006
    Сообщения:
    1.327
    Адрес:
    Ржев
    или рипни себе в код FindResource, LoadResource, ...
     
  7. ohne

    ohne New Member

    Публикаций:
    0
    Регистрация:
    28 фев 2009
    Сообщения:
    431
    Flasher
    Задача выполняется без проблем вручную. Как парсить ресурсы, их формат и тп можно найти в сети
     
  8. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    ohne
    Проблем там много, причина - разнообразие форматов. Например размеры изображения. Когдато я писал парсер извлекающий иконки, это было весьма геморно.
     
  9. Flasher

    Flasher Member

    Публикаций:
    0
    Регистрация:
    31 янв 2004
    Сообщения:
    640
    Clerk, исходники не сохранились? :)
     
  10. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    Flasher
    Пропали вместе с горевшим жёстким диском.
     
  11. dign

    dign Дмитрий Игнатьев

    Публикаций:
    0
    Регистрация:
    29 мар 2010
    Сообщения:
    3
    Адрес:
    Херсон
    http://code.jeefo.net/listing?repname=checker&path=/nt/&rev=1
    Код (Text):
    1. NTSYSAPI
    2. NTSTATUS
    3. NTAPI
    4. LdrFindResourceDirectory_U(
    5.     IN PVOID DllHandle,
    6.     IN CONST ULONG_PTR* ResourceIdPath,
    7.     IN ULONG ResourceIdPathLength,
    8.     OUT PIMAGE_RESOURCE_DIRECTORY *ResourceDirectory
    9.     );
    10.  
    11. NTSYSAPI
    12. NTSTATUS
    13. NTAPI
    14. LdrFindResource_U(
    15.     IN PVOID DllHandle,
    16.     IN CONST ULONG_PTR* ResourceIdPath,
    17.     IN ULONG ResourceIdPathLength,
    18.     OUT PIMAGE_RESOURCE_DATA_ENTRY *ResourceDataEntry
    19.     );
    20.  
    21. NTSTATUS
    22. NTAPI
    23. LdrFindResourceEx_U(
    24.     ULONG Flags,
    25.     IN PVOID DllHandle,
    26.     IN CONST ULONG_PTR* ResourceIdPath,
    27.     IN ULONG ResourceIdPathLength,
    28.     OUT PIMAGE_RESOURCE_DATA_ENTRY *ResourceDataEntry
    29.     );
    30.  
    31. NTSYSAPI
    32. NTSTATUS
    33. NTAPI
    34. LdrEnumResources(
    35.     IN PVOID DllHandle,
    36.     IN CONST ULONG_PTR* ResourceIdPath,
    37.     IN ULONG ResourceIdPathLength,
    38.     IN OUT PULONG NumberOfResources,
    39.     OUT PLDR_ENUM_RESOURCE_ENTRY Resources OPTIONAL
    40.     );
    41.  
    42. NTSYSAPI
    43. NTSTATUS
    44. NTAPI
    45. LdrAccessResource(
    46.     IN PVOID DllHandle,
    47.     IN CONST IMAGE_RESOURCE_DATA_ENTRY* ResourceDataEntry,
    48.     OUT PVOID *Address OPTIONAL,
    49.     OUT PULONG Size OPTIONAL
    50.     );
     
  12. CrystalMS

    CrystalMS New Member

    Публикаций:
    0
    Регистрация:
    20 сен 2010
    Сообщения:
    51
    @dign

    Что это за шняга?

    http://code.jeefo.net