Сейчас на форуме: jinoweb (+4 невидимых) |
eXeL@B —› Программирование —› Найти сборку из натива |
Посл.ответ | Сообщение |
|
Создано: 01 марта 2020 14:43 · Личное сообщение · #1 |
|
Создано: 01 марта 2020 14:53 · Личное сообщение · #2 |
|
Создано: 01 марта 2020 15:05 · Личное сообщение · #3 |
|
Создано: 01 марта 2020 15:15 · Личное сообщение · #4 galenkane Не понятно, что такое "имя сборки в памяти" ? С памятью может быть связан файл, это если файловая проекция. Что бы его имя получить есть два способа. MemoryMappedFilenameInformation/GetMappedFileName() или отобразить файловую секцию и найти соответствие NtAreMappedFilesTheSame/LdrGetDllHandleByMapping(). ----- vx |
|
Создано: 01 марта 2020 15:25 · Поправил: ClockMan · Личное сообщение · #5 r_e пишет: Если вдруг кто не знает то GetModuleHandle и прочие не видят managed сборки потому что те не грузятся через LoadLibrary. если сборка грузилась в ручнуя минуя LoadLibrary то её и не будет в таблице загруженных модулей))) r_e пишет: Есть ли метода чтобы получить базу сборки в памяти по имени? если у сборки есть таблица экспорта, то скан памяти + поиск имени в таблице экспорта ----- Чтобы правильно задать вопрос, нужно знать большую часть ответа. Р.Шекли. |
|
Создано: 01 марта 2020 16:04 · Личное сообщение · #6 Сборка - это managed assembly module. Скан памяти - не вариант. Во-первых, для нагруженных участков кода слишком тормозной (впрочем, может кеширование и поможет). Во-вторых, маппинг по имени потребует отдельных танцев с бубном для сопоставления образа в памяти с образом на диске. Судя по интернетам, то официальный способ будет через Добавлено спустя 11 минут Попутно, может кто пробовал. Можно ли подгрузить сборку через LoadLibrary и будет ли она при этом "закеширована" в том смысле что последующий резолв вернет уже отмапленную, а не загрузит по новой? ----- старый пень |
|
Создано: 01 марта 2020 23:33 · Личное сообщение · #7 |
|
Создано: 02 марта 2020 00:35 · Личное сообщение · #8 r_e > танцев с бубном для сопоставления образа в памяти с образом на диске. Что то на подобие этого, модуль есть в загрузчике, но его нет и небыло на диске ? ca11_02.03.2020_EXELAB.rU.tgz - ld.7z ----- vx |
|
Создано: 02 марта 2020 01:50 · Поправил: UniSoft · Личное сообщение · #9 r_e пишет: Есть ли метода чтобы получить базу сборки в памяти по имени? Как мне кажется: смысла в такой функции мало. После Я как-то делал прокси dll, патчил сборку в памяти процесса. ставил хук на _CorValidateImage() (точнее, сначала хук ставил на LoadLibraryW(), где ожидал загрузку "mscoree.dll" и тут же ставился хук на "_CorValidateImage") А дальше было все просто. _CorValidateImage вызывается еще до _CorDllMain, так что можно свободно патчить managed код (он еще не пережеван). Code:
| Сообщение посчитали полезным: Medsft, r_e, Veliant, v00doo |
|
Создано: 02 марта 2020 10:45 · Личное сообщение · #10 |
|
Создано: 02 марта 2020 17:28 · Личное сообщение · #11 |
eXeL@B —› Программирование —› Найти сборку из натива |