![]() |
|
Модераторы: feodorv, GremlinProg, xvr, Fixin |
![]()
|
|
| J0ker |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 986 Регистрация: 17.9.2008 Репутация: -1 Всего: 14 |
эксплоит - от слова exploitation - эксплуатация, злонамеренное использование - код, который использует недостатки системы для выполнения неспецифичных для этой системы функций к "консольной программе" это имеет весьма опосредованное отношение |
|||
|
||||
| J0ker |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 986 Регистрация: 17.9.2008 Репутация: -1 Всего: 14 |
ерундой вы, господа, занимаетесь
вопрос ведь просто решается: 1. Можно ли на этапе компиляции блаблабла? - НЕЛЬЗЯ 2. А вообще можно? - МОЖНО 3. А как? - а) на этапе выполнения парсать свой собственный образ; б) распарсать утилитой и записать в файл, который потом читать; в) распарсать утилитой и записать в .data секцию (или другую инициализированную секцию данных) на место статических переменных, которые потом и использовать |
|||
|
||||
| dumb |
|
||||
![]() sceloglauxalbifacies ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2929 Регистрация: 16.6.2006 Репутация: 27 Всего: 158 |
|
||||
|
|||||
| GremlinProg |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2706 Регистрация: 9.8.2005 Где: Тюмень Репутация: 99 Всего: 106 |
J0ker, если понимаешь, что тема к вредителям не относится, то можно вполне конкретно понять и смысл слова, значение которого "эксплуатация", т.е. не создание, а использование готового.
парсинг сюда ни как не припишешь, поскольку никакая грамматика ни PE, ни COFF не сопоставляется, для них существует легальный формат данных, который переводить ни куда не нужно, если уж подбирать нужное слово, то "чтение" - само то. даже если читать собственный образ, то записать результат будет проблематично, поскольку из образа все символы обычно удаляются, т.е. анализ нужно проводить именно над COFF, который имеет локальный, относительный характер, т.е. в рамках одного COFF (или архива) еще можно использовать обратную связь, в рамках же PE - по крайней мере проблематично -------------------- "Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины." |
|||
|
||||
| GoldFinch |
|
|||
![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2141 Регистрация: 30.11.2008 Репутация: 2 Всего: 26 |
Это вы показали как вы умеете в мсдн апишки искать? Размер секции кода читается из заголовка ,если известен размер стаба, например 0x40, то получать его можно прямо по адресу [hModule+0x40+0x18+0xE0+0x10] Начало секции кода = hModule+0x1000 Зачем использовать АПИ чтобы это получить?? Более того, теоретически, если настроить релоки, база модуля будет добавляться сама. (хз как это сделать с С++) ----------------- В 1м посте было 2 вопроса - во 2м спрашивалось "2) Есть модуль с функциями, можно ли на этапе компиляции узнать адреса функций с наименьшим и с наибольшим адресами в исполняемом модуле?" если компилятор(линкер) не меняет порядок функций в модуле - то достаточно использовать адреса 2х функций которые гарантированно не удалятся |
|||
|
||||
| GremlinProg |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2706 Регистрация: 9.8.2005 Где: Тюмень Репутация: 99 Всего: 106 |
GoldFinch, не перебарщивай с таким кодом, мы все просто закрваем на него глаза, учитывая, что ты его указываешь только в схематических целях существует простой, понятный и легальный способ получить PE-заголовок: ImageNtHeader эта функция делает все, чего требует спецификация, и в случае ее изменения, будет всегда корректироваться зачем велосипед изобретать? если уж изобретать, так трансформер, а не одноколесный самокат -------------------- "Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины." |
|||
|
||||
| GoldFinch |
|
|||
![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2141 Регистрация: 30.11.2008 Репутация: 2 Всего: 26 |
GremlinProg, а что не так-с кодом-то?
Структура ImageNtHeader не может поменяться впринципе а как именно получается значение размера 1й секции достаточно понятно описано в выражении hModule+0x40+0x18+0xE0+0x10 база+смещение_PE+размер_файлового заголовка+размер_опц_заголовка+смещение_поля_размера вместо 0x18+0xE0 можно еще записывать 0xF8 - размер PE-заголовка, но это менее правильно с точки зрения формата PE |
|||
|
||||
| GremlinProg |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2706 Регистрация: 9.8.2005 Где: Тюмень Репутация: 99 Всего: 106 |
ну, если ты меня не понял, то лучше объяснить я уже не смогу, обратись к кому-нибудь еще, а лучше, почитай спецификацию PE, там все "черным по белому", особенно в первой ее части:
-------------------- "Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины." |
|||
|
||||
| GoldFinch |
|
|||
![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2141 Регистрация: 30.11.2008 Репутация: 2 Всего: 26 |
GremlinProg, в "спецификации" ПЕ истине соответствует около половины. ее лучше не читать.
Формат ПЕ файла не может измениться впринципе, до тех пор пока существуют программы его использующие. Вот когда 32-разрядный PE-формат умрет, так же как и умер 16-разрядный MZ-формат, а произойдет это лет этак через 10, вот тогда мне потребуется пересчитать смещения в заголовках. А пока вместо нелогичного многострочечного использования полей структур с длиииинными именами, я использую смещения в 1строчку |
|||
|
||||
| GremlinProg |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2706 Регистрация: 9.8.2005 Где: Тюмень Репутация: 99 Всего: 106 |
GoldFinch, в "спецификации" ПЕ пока истине соответствует абсолютно все, если бы ты ее читал, а самое главное - использовал
лучше не спорь в вещах, которые не понимаешь ps: до этого я вежливо просил тебя не сыпать голословными заявлениями -------------------- "Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины." |
|||
|
||||
| GoldFinch |
|
|||
![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 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 |
|||
|
||||
| GremlinProg |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2706 Регистрация: 9.8.2005 Где: Тюмень Репутация: 99 Всего: 106 |
Ну вот видишь , Earnest, собственно, бог дал - бог взял, закон равновесия видимо работает
GoldFinch, репутацию, ты сам себе и подпортил, а ведь все так хорошо начиналось, смотри, как бы в минуса не уйти формулировка: за неоднократные попытки ввести в заблуждение участников и игнорирование предупреждений SizeOfOptionalHeader означает именно размер OptionalHeader'а Optional присутствует в названии именно потому, что заголовок имеет переменную длину после заголовка следует таблица секций, что и подтверждает SizeOfOptionalHeader про выравнивание секций там написано гораздо больше, чем это реализуют инструментальные средства, так что опять же - безпочвенные наезды, а причина - неграмотность и неуважение. по этому поводу, я уже делал комментарии, читай форум -------------------- "Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины." |
|||
|
||||
| Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 33 Всего: 183 |
GremlinProg, я уже поняла, что вы не договоритесь.
GoldFinch пока не въехал в то, как оно у нас тут на форуме. Огрызается, в бутылку лезет и прочая... Даст бог, со временем обживется, помягчеет... GoldFinch, ты это, собственное представление о программировании не абсолютизируй, ладно? У всех у нас разный взгляд на вещи и разный опыт, к которому, ей богу, стоит прислушаться... Жаль, что у меня на этом форуме недостаточно прав, а то закрыла бы тему, пока вы совсем не поругались... Вы уж постарайтесь жить дружно -------------------- ... |
|||
|
||||
| J0ker |
|
||||||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 986 Регистрация: 17.9.2008 Репутация: -1 Всего: 14 |
смысл слова уже давно определен то, что вы называете эксплоитом - эксплоитом не является и называться так не может Добавлено через 1 минуту и 29 секунд
это называется парсинг не надо изобретать собственный словарь Добавлено через 3 минуты и 37 секунд
именно поэтому я предлагал использовать отдельные секции кода Добавлено через 12 минут и 25 секунд
5 - это смещения числа 5 относительно нуля а то, что это 5 тут совершенно не при чем я плАчу |
||||||||
|
|||||||||
| GremlinProg |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2706 Регистрация: 9.8.2005 Где: Тюмень Репутация: 99 Всего: 106 |
ок, какие предложения? ну, к словарю-то уж мы не будем придираться, есть какие-либо противоречия по сути? или парсер ты включил в свой ответ только для бравады? я не люблю, когда мне сходу грубят без аргументации, не советую с этого разговор начинать, если слово непонятно - спроси, подправь, это же не преступление, можно спокойно решить все проблемы и побольше аргументов вариант, конечно, но к примеру, в задаче, которую я описал парой страниц раньше, таких секций может получиться очень много, а в COFF: 1. они легально сливаются (независимость от средств разработки) 2. корректно работает встроенная оптимизация (уменьшение кода и т.п.) 3. увеличивается избирательное свойство COFF (для сборщика: слить секции, удалить дупликаты и т.п.) 4. оптимизация на размере конечного образа (меньше секций - меньше хвостов от выравнивания) 5. хоть какая-то защита от вредителей (секции-то сливаются) выходит, плюсов больше Earnest, я так-то стараюсь не ссориться, просто, как чувствовал, он сам себя же и подцепит, не думал, правда, что это будет так быстро да ладно, не надо так его расстраивать, он и сам это поймет -------------------- "Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины." |
|||
|
||||
![]()
|
| Правила форума "C/C++: Системное программирование и WinAPI" | |
|
|
На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы . Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |