информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
Сетевые кракеры и правда о деле ЛевинаВсе любят мед
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Массовый взлом SharePoint 
 Microsoft Authenticator прекращает... 
 Очередное исследование 19 миллиардов... 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / programming
Имя Пароль
если вы видите этот текст, отключите в настройках форума использование JavaScript
ФОРУМ
все доски
FAQ
IRC
новые сообщения
site updates
guestbook
beginners
sysadmin
programming
operating systems
theory
web building
software
hardware
networking
law
hacking
gadgets
job
dnet
humor
miscellaneous
scrap
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
[Win32] ктонть может проинструктировать? 13.07.02 21:45  Число просмотров: 963
Автор: ggg <ggg> Статус: Elderman
<"чистая" ссылка>
загружаешь через ReadFile ?

> релокейтит что нужно
как ?
в exe обычно нет relocation table

> как только получают управление вызывают GetModuleHandle(0)
> и получают handle(что оказалось ни чем иным а BaseImage).
MSDN: "If this parameter is NULL, GetModuleHandle returns a handle to the file used to create the calling process."
т.е. это хэндл на твою прогу, а они ждут хэндл на свою прогу

грузи свою прогу не по 0x400000
а их - по 0x400000 (VirtualAlloc)
<programming>
[Win32] ктонть может проинструктировать? 13.07.02 21:23  
Автор: BXS Статус: Незарегистрированный пользователь
<"чистая" ссылка>
мне нужно изучить работу некоторой проги. в частности как она юзает некоторые системные функции. мне нужно просмотреть какие параметры она передает винде а также подправить некоторые из них. короче перехват.

для этого я написал свой собственный загрузчик который грузит эту прогу + делает всю черную работу (настраивает ее импорт, релокейтит что нужно итд)
а потом в таблице импорта переписывает адреса нужных мне функций и ставит "нужные" адреса.
короче тут все путем. НО:

проблема возникает када он передает управление этой проге.
если ему скормить скажем notepad.exe то notepad гад получает управление, вызывает парочку системных функций, парочку своих и заверщает весь процесс (дебагил и лично видел).
некоторые проги просто получают любимый GPF :(

как мне видица трабл не в ДНК а чисто логический.

т.е. загрузчик написал вроде грамотно, но вот проги которые он грузит как то понимают что они работают "под присмотром" и либо виснут, либо завершаюца еще до entrypoint (в коде настроек,установке исключений, __startup итд)

далее заметил что почти все проги (откомпиленные VC и BCC) как только получают управление вызывают GetModuleHandle(0) и получают handle(что оказалось ни чем иным а BaseImage). Я попробовал перехватывать первые несколько вызовов GetModuleHandleA и возвращать истинную базу загрузки проги (а не дефолтные 0x400000). увы, не помогло...

может кто подсказать где ошибка? или где есть релевантные материалы?
заранее спасибо
[Win32] ктонть может проинструктировать? 13.07.02 21:45  
Автор: ggg <ggg> Статус: Elderman
<"чистая" ссылка>
загружаешь через ReadFile ?

> релокейтит что нужно
как ?
в exe обычно нет relocation table

> как только получают управление вызывают GetModuleHandle(0)
> и получают handle(что оказалось ни чем иным а BaseImage).
MSDN: "If this parameter is NULL, GetModuleHandle returns a handle to the file used to create the calling process."
т.е. это хэндл на твою прогу, а они ждут хэндл на свою прогу

грузи свою прогу не по 0x400000
а их - по 0x400000 (VirtualAlloc)
[Win32] ктонть может проинструктировать? 14.07.02 16:24  
Автор: BXS Статус: Незарегистрированный пользователь
<"чистая" ссылка>
> загружаешь через ReadFile ?
ДА, ЧИТАЮ READFILEом. РАЗУМЕЕЦА ПОТОМ ВСЕ ХЭНДЛЫ НА НЕГО ЗАКРЫВАЮ
> > релокейтит что нужно
> как ?
> в exe обычно нет relocation table
ИМЕЮ В ВИДУ FIXUP. ОНИ ЕСТЬ И НАСТРАИВАЕТ ИХ МОЙ ЗАГРУЗЧИК
> > как только получают управление вызывают
> GetModuleHandle(0)
> > и получают handle(что оказалось ни чем иным а
> BaseImage).
> MSDN: "If this parameter is NULL, GetModuleHandle returns a
> handle to the file used to create the calling process."
> т.е. это хэндл на твою прогу, а они ждут хэндл на свою
> прогу
В КУРСЕ. ПОЭТОМУ Я ПЕРЕХВАТЫВАЛ ПЕРВЫЕ НЕСКОЛЬКО ВЫЗОВОВ И ДАВАЛ ХЕНДЛ (А ЭТО НИ ЧТО ИНОЕ КАК IMAGEBASE) НА МНОЮ ЗАГРУЖЕННЫЙ МОДУЛЬ
> грузи свою прогу не по 0x400000
> а их - по 0x400000 (VirtualAlloc)
ДА ПРОБОВАЛ УЖЕ. НА ЭТАПЕ ЛИНКОВКИ УКАЗЫВАЛ ГРУЗИТЬ ПО ЛЮБОМУ КРОМЕ 0х400000.... НО ВИНДА ГРУЗИЛА МОЙ ЗАГРУЗЧИК ИМЕННО ТУДА.... ТАДА Я ПРОБОВАЛ СДЕАТЬ В 2 ЭТАПА...
Т.Е. МОЙ ЗАГРУЗЧИК ЗАГРУЗАЛСЯ ВИНДОЙ ПО 0х400000. ЗАТЕМ ОН ЗАГРУЖАЛ СВОЮ ВТОРУЮ НЕСКОЛЬКО ИЗМЕНЕННУЮ КОПИЮ ПО ЛЮБОМУ ДРУГОМУ АДРЕСУ. ПЕРЕДАВАЛ УПРАВЛЕНИЕ НА НЕГО.
ТОТ ДОЛЖЕН БЫЛ ВЫЗВАТЬ VirtualFree(0x400000) и загрузить модуль как раз туда...
но VirtualFree всегда возвращал почему то Invalid Handle... поэтому и полез на форум....
может есть какие соображения?
[Win32] ктонть может проинструктировать? 14.07.02 20:55  
Автор: ggg <ggg> Статус: Elderman
<"чистая" ссылка>
> ИМЕЮ В ВИДУ FIXUP. ОНИ ЕСТЬ И НАСТРАИВАЕТ ИХ МОЙ ЗАГРУЗЧИК
чё то склероз у меня :)
а что такое fixup ?
в смысле секции по местам распихать ?

соображения:

1) доступ к секциям проставляешь ?

2) раз VirtualFree обламывается, значит винда память не так выделяла
посмотри что VirtualQuery скажет

3) т.к. в экзешнике нет relocation table, то грузить его надо по его родному адресу

4) попробуй лишний раз проверить себя - сравни адресное пространство при обычном запуске и с твоим загрузчиком
1




Rambler's Top100
Рейтинг@Mail.ru


  Copyright © 2001-2025 Dmitry Leonov   Page build time: 0 s   Design: Vadim Derkach