![]() |
eXeL@B —› Вопросы новичков —› поиск хэндла файла в памяти процесса |
Посл.ответ | Сообщение |
|
Создано: 21 августа 2013 19:18 · Личное сообщение · #1 |
|
Создано: 21 августа 2013 19:34 · Личное сообщение · #2 есть пример: mov dword ptr [ebp-50h], 0 ; hFileDocument SEARCH_MY_HANLDE_LOOP: add dword ptr [ebp-50h], 4 ; hFileDocument push 0 mov eax, [ebp-50h] ; hFileDocument push eax call dword ptr [esi+18h] ; GetFileSize mov ecx, [ebp-48h] ; 24B87h (size of the dropped file) add ecx, [ebp-4Ch] ; 10200 (offset of the dropped file) cmp eax, ecx jnz short SEARCH_MY_HANLDE_LOOP ; hFileDocument вопрос: зачем смещаем ecx? ![]() |
|
Создано: 21 августа 2013 19:43 · Личное сообщение · #3 |
|
Создано: 21 августа 2013 19:53 · Поправил: vladimir070707 · Личное сообщение · #4 Archer, мы ведь выполняем GetFileSize, он результат кидает, как я понимаю в eax. при неправильном формате хэндла - кидает 0xffffffff а при положительном результате - размер файла зная размер исходного файла делаем сравнение jnz, бъет - проходим дальше... так а в коде - оффсет еще забит, который сбивает размер файла... это из статейки по шеллкодам взято, для ликбеза я не пойму как из офисных файлов запускают приклеенные PE ![]() |
|
Создано: 21 августа 2013 19:57 · Личное сообщение · #5 Оно и видно, что из шеллкода, потому и спрашиваю, зачем нужно искать хендл открытого файла? Не подходит тебе добавление оффсета-не добавляй, захаркодь только размер, не обязательно списывать 1 в 1, если что. В данном случае под размером забит не размер файла, а размер дропаемой мути. А файл=нагрузка+муть, отсюда и смещение. ![]() |
|
Создано: 21 августа 2013 20:01 · Личное сообщение · #6 |
![]() Ранг: 419.0 (мудрец), 647thx Активность: 0.46↗0.51 Статус: Участник "Тибериумный реверсинг" |
Создано: 21 августа 2013 20:04 · Личное сообщение · #7 |
|
Создано: 21 августа 2013 20:07 · Поправил: vladimir070707 · Личное сообщение · #8 |
|
Создано: 21 августа 2013 20:09 · Личное сообщение · #9 |
|
Создано: 21 августа 2013 20:15 · Личное сообщение · #10 |
|
Создано: 22 августа 2013 14:03 · Личное сообщение · #11 |
|
Создано: 22 августа 2013 14:44 · Поправил: Phantom007 · Личное сообщение · #12 |
|
Создано: 23 августа 2013 12:21 · Личное сообщение · #13 EnumHandles proto ObjectTypeName:PSTR, ObjectTypeNameLength:ULONG, ProcessId:HANDLE, Callback:PVOID, Context:PVOID Возвращает NTSTATUS. Пример вызова: Clbk proc uses ebx esi edi Handle:HANDLE, Context:PVOID Local Buffer[MAX_PATH]:CHAR invoke ZwQueryObject, Handle, ObjectNameInformation, addr Buffer, MAX_PATH, NULL .if !Eax invoke DbgPrint, addr $Msg, addr Buffer .endif mov eax,STATUS_NOT_FOUND ; STATUS_SUCCESS для прекращения енума. ret Clbk endp $Ob CHAR "File" invoke QueryObjectNameTypeNumber, addr $Ob, 4, fs:[TEB.Cid.UniqueProcess], addr Clbk, 123H --- Вы же не скрипткидди, изучайте бинарь http://yadi.sk/d/dtKKD7up8EGcw ![]() |
|
Создано: 23 августа 2013 12:56 · Личное сообщение · #14 vladimir070707 1) Перечислить описатели NtQuerySystemInformation, инфо класс 16 2) Выделить среди них те, что принадлежат искомому процессу по полю ProcessId, SYSTEM_HANDLE_TABLE_ENTRY_INFO структуры 3) Выделить среди них те, что имеют тип "File", можно по индексу (ObjectTypeNumber), можно по имени типа 4) Скопировать описатель себе через DuplicateHandle 5) Получить имя по описателю через GetFinalPathNameByHandle Так или решение задачи потребует использование недокументированного API. Можете конечно набрутить описатель файла циклом и потом их сунуть в 4-5 пункты. Dr0p Очередной быдлокод с потенциальным дедлоком и привязкой к оси. Даже не думай возражать. ![]() |
|
Создано: 23 августа 2013 12:59 · Поправил: Dr0p · Личное сообщение · #15 Alchemistry Какие есчо дедлоки умник. И к какой оси привязка не понятно ![]() > Можете конечно набрутить описатель файла циклом и потом их сунуть в 4-5 пункты. Он так и делает. > GetFinalPathNameByHandle Обломись ниже 6.0. > недокументированного API. Документировано в "NT Object Management Specification". Рекомендую на каникулах почитать ![]() ![]() |
|
Создано: 23 августа 2013 17:11 · Личное сообщение · #16 |
|
Создано: 24 августа 2013 09:53 · Личное сообщение · #17 |
![]() |
eXeL@B —› Вопросы новичков —› поиск хэндла файла в памяти процесса |
Эта тема закрыта. Ответы больше не принимаются. |