Модераторы: feodorv, GremlinProg, xvr, Fixin

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> размер и размещение кода 
V
    Опции темы
J0ker
Дата 2.12.2008, 23:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 986
Регистрация: 17.9.2008

Репутация: -1
Всего: 14



Цитата(GremlinProg @ 2.12.2008,  10:15)
эксплоит - небольшая консольная программа

эксплоит - от слова exploitation - эксплуатация, злонамеренное использование - код, который использует недостатки системы для выполнения неспецифичных для этой системы функций
к "консольной программе" это имеет весьма опосредованное отношение


--------------------
user posted image
PM MAIL   Вверх
J0ker
Дата 3.12.2008, 00:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 986
Регистрация: 17.9.2008

Репутация: -1
Всего: 14



ерундой вы, господа, занимаетесь
вопрос ведь просто решается:
1. Можно ли на этапе компиляции блаблабла? - НЕЛЬЗЯ
2. А вообще можно? - МОЖНО
3. А как? - а) на этапе выполнения парсать свой собственный образ; б) распарсать утилитой и записать в файл, который потом читать; в) распарсать утилитой и записать в .data секцию (или другую инициализированную секцию данных) на место статических переменных, которые потом и использовать


--------------------
user posted image
PM MAIL   Вверх
dumb
Дата 3.12.2008, 07:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


sceloglauxalbifacies
****


Профиль
Группа: Экс. модератор
Сообщений: 2929
Регистрация: 16.6.2006

Репутация: 27
Всего: 158



Цитата(GoldFinch @  2.12.2008,  17:02 Найти цитируемый пост)
мне-то всего-то надо было получить кусок секции кода содержащий нужный мне код чтобы разрешить туда запись 

Код

void blabla()
{
  MEMORY_BASIC_INFORMATION mbi;
  VirtualQuery(&blabla, &mbi, sizeof(mbi));
  DWORD OldProt;
  VirtualProtect(mbi.BaseAddress, mbi.RegionSize, PAGE_EXECUTE_READWRITE, &OldProt);
...

PM MAIL   Вверх
GremlinProg
Дата 3.12.2008, 10:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2706
Регистрация: 9.8.2005
Где: Тюмень

Репутация: 99
Всего: 106



J0ker, если понимаешь, что тема к вредителям не относится, то можно вполне конкретно понять и смысл слова, значение которого "эксплуатация", т.е. не создание, а использование готового.

парсинг сюда ни как не припишешь, поскольку никакая грамматика ни PE, ни COFF не сопоставляется, для них существует легальный формат данных, который переводить ни куда не нужно, если уж подбирать нужное слово, то "чтение" - само то.

даже если читать собственный образ, то записать результат будет проблематично, поскольку из образа все символы обычно удаляются, т.е. анализ нужно проводить именно над COFF, который имеет локальный, относительный характер, т.е. в рамках одного COFF (или архива) еще можно использовать обратную связь, в рамках же PE - по крайней мере проблематично


--------------------
"Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины."
PM WWW ICQ   Вверх
GoldFinch
Дата 3.12.2008, 12:45 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Завсегдатай
Сообщений: 2141
Регистрация: 30.11.2008

Репутация: 2
Всего: 26



Цитата(dumb @ 3.12.2008,  07:24)
Цитата(GoldFinch @  2.12.2008,  17:02 Найти цитируемый пост)
мне-то всего-то надо было получить кусок секции кода содержащий нужный мне код чтобы разрешить туда запись 

Код

void blabla()
{
  MEMORY_BASIC_INFORMATION mbi;
  VirtualQuery(&blabla, &mbi, sizeof(mbi));
  DWORD OldProt;
  VirtualProtect(mbi.BaseAddress, mbi.RegionSize, PAGE_EXECUTE_READWRITE, &OldProt);
...

Это вы показали как вы умеете в мсдн апишки искать?
Размер секции кода читается из заголовка ,если известен размер стаба, например 0x40, то получать его можно прямо по адресу [hModule+0x40+0x18+0xE0+0x10]
Начало секции кода  = hModule+0x1000
Зачем использовать АПИ чтобы это получить??

Более того, теоретически, если настроить релоки, база модуля будет добавляться сама. (хз как это сделать с С++)

-----------------
В 1м посте было 2 вопроса - во 2м спрашивалось "2) Есть модуль с функциями, можно ли на этапе компиляции узнать адреса функций с наименьшим и с наибольшим адресами в исполняемом модуле?"

если компилятор(линкер) не меняет порядок функций в модуле - то достаточно использовать адреса 2х функций которые гарантированно не удалятся

PM MAIL ICQ   Вверх
GremlinProg
Дата 3.12.2008, 13:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2706
Регистрация: 9.8.2005
Где: Тюмень

Репутация: 99
Всего: 106



Цитата(GoldFinch @  3.12.2008,  14:45 Найти цитируемый пост)
hModule+0x40+0x18+0xE0+0x10

GoldFinch, не перебарщивай с таким кодом, мы все просто закрваем на него глаза, учитывая, что ты его указываешь только в схематических целях

существует простой, понятный и легальный способ получить PE-заголовок: ImageNtHeader
эта функция делает все, чего требует спецификация, и  в случае ее изменения, будет всегда корректироваться
зачем велосипед изобретать?
если уж изобретать, так трансформер, а не одноколесный самокат


--------------------
"Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины."
PM WWW ICQ   Вверх
GoldFinch
Дата 3.12.2008, 14:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Завсегдатай
Сообщений: 2141
Регистрация: 30.11.2008

Репутация: 2
Всего: 26



GremlinProg, а что не так-с кодом-то?
Структура ImageNtHeader не может поменяться впринципе
а как именно получается значение размера 1й секции достаточно понятно описано в выражении
hModule+0x40+0x18+0xE0+0x10
база+смещение_PE+размер_файлового заголовка+размер_опц_заголовка+смещение_поля_размера
вместо 0x18+0xE0  можно еще записывать 0xF8 - размер PE-заголовка, но это менее правильно с точки зрения формата PE
PM MAIL ICQ   Вверх
GremlinProg
Дата 3.12.2008, 14:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2706
Регистрация: 9.8.2005
Где: Тюмень

Репутация: 99
Всего: 106



ну, если ты меня не понял, то лучше объяснить я уже не смогу, обратись к кому-нибудь еще, а лучше, почитай спецификацию PE, там все "черным по белому", особенно в первой ее части:
Цитата(Microsoft Portable Executable and Common Object File Format Specification)

This document is provided to aid in the development of tools and applications for Microsoft Windows NT® but is not guaranteed to be a complete specification in all respects. Microsoft reserves the right to alter this document without notice.



--------------------
"Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины."
PM WWW ICQ   Вверх
GoldFinch
Дата 3.12.2008, 15:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Завсегдатай
Сообщений: 2141
Регистрация: 30.11.2008

Репутация: 2
Всего: 26



GremlinProg, в "спецификации" ПЕ истине соответствует около половины. ее лучше не читать.
Формат ПЕ файла не может измениться впринципе, до тех пор пока существуют программы его использующие. Вот когда 32-разрядный PE-формат умрет, так же как и умер 16-разрядный MZ-формат, а произойдет это лет этак через 10, вот тогда мне потребуется пересчитать смещения в заголовках.
А пока вместо нелогичного многострочечного использования полей структур с длиииинными именами, я использую смещения в 1строчку
PM MAIL ICQ   Вверх
GremlinProg
Дата 3.12.2008, 15:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2706
Регистрация: 9.8.2005
Где: Тюмень

Репутация: 99
Всего: 106



GoldFinch, в "спецификации" ПЕ пока истине соответствует абсолютно все, если бы ты ее читал, а самое главное - использовал
лучше не спорь в вещах, которые не понимаешь

ps: до этого я вежливо просил тебя не сыпать голословными заявлениями


--------------------
"Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины."
PM WWW ICQ   Вверх
GoldFinch
Дата 3.12.2008, 17:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Завсегдатай
Сообщений: 2141
Регистрация: 30.11.2008

Репутация: 2
Всего: 26



GremlinProg, единственное чему следует доверять при работе с PE-форматом  - это алгоритмам работы системных загрузчиков в разных версиях винды.
Вот например в msdn написано:
IMAGE_FILE_HEADER.SizeOfOptionalHeader
    The size of the optional header, in bytes. This value should be 0 for object files.
А на самом деле поле SizeOfOptionalHeader - это смещение начала таблицы секций относительно начала OptionalHeader, и размер OptionalHeader тут совершенно ни при чем...

Про выравнивание секций там далеко не все написано... Даже если в msdn и была бы написана только истина, там не написано и 10% того что есть на самом деле.

Хотя, если писать на С(++) этого может и незаметно)))

ЗЫ: я тоже когда-то думал что знаю ВСЕ о ПЕ формате. Потом оказалось что это не так, а потом еще пару раз оказывалось так что я не все о нем знаю)

Это сообщение отредактировал(а) GoldFinch - 3.12.2008, 17:27
PM MAIL ICQ   Вверх
GremlinProg
Дата 3.12.2008, 17:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2706
Регистрация: 9.8.2005
Где: Тюмень

Репутация: 99
Всего: 106



Ну вот видишь , Earnest, собственно, бог дал - бог взял, закон равновесия видимо работает
GoldFinch, репутацию, ты сам себе и подпортил, а ведь все так хорошо начиналось, смотри, как бы в минуса не уйти

формулировка: за неоднократные попытки ввести в заблуждение участников и игнорирование предупреждений

SizeOfOptionalHeader означает именно размер OptionalHeader'а
Optional присутствует в названии именно потому, что заголовок имеет переменную длину
после заголовка следует таблица секций, что и подтверждает SizeOfOptionalHeader
про выравнивание секций там написано гораздо больше, чем это реализуют инструментальные средства, так что опять же - безпочвенные наезды, а причина - неграмотность и неуважение.
Цитата(GoldFinch @  3.12.2008,  19:25 Найти цитируемый пост)
если писать на С(++)

по этому поводу, я уже делал комментарии, читай форум


--------------------
"Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины."
PM WWW ICQ   Вверх
Earnest
Дата 3.12.2008, 18:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 33
Всего: 183



GremlinProg, я уже поняла, что вы не договоритесь.
GoldFinch пока не въехал в то, как оно у нас тут на форуме. Огрызается, в бутылку лезет и прочая... Даст бог, со временем обживется, помягчеет...
GoldFinch, ты это, собственное представление о программировании не абсолютизируй, ладно? У всех у нас разный взгляд на вещи и разный опыт, к которому, ей богу, стоит прислушаться...

Жаль, что у меня на этом форуме недостаточно прав, а то закрыла бы тему, пока вы совсем не поругались...
Вы уж постарайтесь жить дружно  smile 



--------------------
...
PM   Вверх
J0ker
Дата 3.12.2008, 18:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 986
Регистрация: 17.9.2008

Репутация: -1
Всего: 14



Цитата(GremlinProg @  3.12.2008,  10:58 Найти цитируемый пост)
J0ker, если понимаешь, что тема к вредителям не относится, то можно вполне конкретно понять и смысл слова, значение которого "эксплуатация", т.е. не создание, а использование готового.

смысл слова уже давно определен
то, что вы называете эксплоитом - эксплоитом не является и называться так не может

Добавлено через 1 минуту и 29 секунд
Цитата(GremlinProg @  3.12.2008,  10:58 Найти цитируемый пост)
парсинг сюда ни как не припишешь, поскольку никакая грамматика ни PE, ни COFF не сопоставляется, для них существует легальный формат данных, который переводить ни куда не нужно, если уж подбирать нужное слово, то "чтение" - само то.

это называется парсинг
не надо изобретать собственный словарь

Добавлено через 3 минуты и 37 секунд
Цитата(GremlinProg @  3.12.2008,  10:58 Найти цитируемый пост)
т.е. в рамках одного COFF (или архива) еще можно использовать обратную связь, в рамках же PE - по крайней мере проблематично 

именно поэтому я предлагал использовать отдельные секции кода

Добавлено через 12 минут и 25 секунд
Цитата(GoldFinch @  3.12.2008,  17:25 Найти цитируемый пост)
Вот например в msdn написано:
IMAGE_FILE_HEADER.SizeOfOptionalHeader
    The size of the optional header, in bytes. This value should be 0 for object files.
А на самом деле поле SizeOfOptionalHeader - это смещение начала таблицы секций относительно начала OptionalHeader, и размер OptionalHeader тут совершенно ни при чем...

smile
5 - это смещения числа 5 относительно нуля
а то, что это 5 тут совершенно не при чем
smile smile smile smile smile smile smile smile
я плАчу smile


--------------------
user posted image
PM MAIL   Вверх
GremlinProg
Дата 3.12.2008, 19:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2706
Регистрация: 9.8.2005
Где: Тюмень

Репутация: 99
Всего: 106



Цитата(J0ker @  3.12.2008,  20:23 Найти цитируемый пост)
смысл слова уже давно определенто, что вы называете эксплоитом - эксплоитом не является и называться так не может

ок, какие предложения?
Цитата(J0ker @  3.12.2008,  20:23 Найти цитируемый пост)
это называется парсингне надо изобретать собственный словарь

ну, к словарю-то уж мы не будем придираться, есть какие-либо противоречия по сути?
или парсер ты включил в свой ответ только для бравады?
я не люблю, когда мне сходу грубят без аргументации, не советую с этого разговор начинать, если слово непонятно - спроси, подправь, это же не преступление, можно спокойно решить все проблемы
и побольше аргументов
Цитата(J0ker @  3.12.2008,  20:23 Найти цитируемый пост)
именно поэтому я предлагал использовать отдельные секции кода

вариант, конечно, но к примеру, в задаче, которую я описал парой страниц раньше, таких секций может получиться очень много, а в COFF:
1. они легально сливаются (независимость от средств разработки)
2. корректно работает встроенная оптимизация (уменьшение кода и т.п.)
3. увеличивается избирательное свойство COFF (для сборщика: слить секции, удалить дупликаты и т.п.)
4. оптимизация на размере конечного образа (меньше секций - меньше хвостов от выравнивания)
5. хоть какая-то защита от вредителей (секции-то сливаются)

выходит, плюсов больше

Earnest, я так-то стараюсь не ссориться, просто, как чувствовал, он сам себя же и подцепит, не думал, правда, что это будет так быстро

Цитата(J0ker @  3.12.2008,  20:23 Найти цитируемый пост)
5 - это смещения числа 5 относительно нуля

да ладно, не надо так его расстраивать, он и сам это поймет


--------------------
"Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины."
PM WWW ICQ   Вверх
Страницы: (5) Все 1 2 [3] 4 5 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Системное программирование и WinAPI"
Fixin
GremlinProg
xvr
feodorv
  • Большое количество информации и примеров с использованием функций WinAPI можно найти в MSDN
  • Описание сообщений, уведомлений и примеров с использованием компонент WinAPI (BUTTON, EDIT, STATIC, и т.п.), можно найти в MSDN Control Library
  • Непосредственно, перед созданием новой темы, проверьте заголовок и удостоверьтесь, что он отражает суть обсуждения.
  • После заполнения поля "Название темы", обратите внимание на наличие и содержание панели "А здесь смотрели?", возможно Ваш вопрос уже был решен.
  • Приводите часть кода, в которой предположительно находится проблема или ошибка.
  • Если указываете код, пользуйтесь тегами [code][/code], или их кнопочными аналогами.
  • Если вопрос решен, воспользуйтесь соответствующей ссылкой, расположенной напротив названия темы.
  • Один топик - один вопрос!
  • Перед тем как создать тему - прочтите это .

На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы .


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема »


 




[ Время генерации скрипта: 0.0688 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.