![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
fish9370 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 663 Регистрация: 15.4.2007 Где: Москва Репутация: -1 Всего: 1 |
заметь, не я первый начал.. ![]() bsa, код заточен под Windows (включая XP).. при компиляции нужно отключать свяческую оптимизацию.. код проверялся компилятором из BDS 2006 c опцией С++ Compiler (bcc32)->optimizations->Optimize: Disable all optimizations. (-Od) -------------------- undefined |
|||
|
||||
bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 63 Всего: 196 |
НУ НЕ МОГ ОН РАБОТАТЬ ПРАВИЛЬНО! Так как ты переменную _main не проинициализировал. У тебя размер функции определялся неправильно. Соответственно, ты неизвестно сколько байт скопировал в буфер.
|
|||
|
||||
fish9370 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 663 Регистрация: 15.4.2007 Где: Москва Репутация: -1 Всего: 1 |
идея заключается в том, чтобы на основании этого реализовывать защиту програм.. поскольку самомодифицирующийся код анализировать труднее.. и ломается сложне.. вот эти все заморочки с описанием указателей на функции и призваны создать перемещаемый код.. ведь тут же нет прямого вызова printf.. тебе ли это не знать с твоим 10 летним опытом.. кстати, за 10 лет можно многое подзабыть.. уж я то со своим 15 летним опытом знаю.. ![]() Добавлено через 3 минуты и 44 секунды прикрепляю проект.. Присоединённый файл ( Кол-во скачиваний: 11 ) ![]() -------------------- undefined |
|||
|
||||
dumb |
|
||||
![]() sceloglauxalbifacies ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2929 Регистрация: 16.6.2006 Репутация: 8 Всего: 158 |
что такое DEP слышал?
это... как бы помягче... вобщем, если приведенный выше код - демонстрация защитного механизма, то это была плохая, негодная идея.
да, только никакой связи между твоим примером и "самомодифицирующимся кодом" нет. |
||||
|
|||||
bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 63 Всего: 196 |
У меня и сейчас основной доход именно от продукции на asm.
![]() Про защиту это понятно... Но в данном случае у тебя простая ошибка. Более того, их две - значение func_len всегда случайное число... Под Линуксом не работает в принципе, даже если это исправить. Вываливается сегфолт. Думаю, потому что у меня в ядре включено опция защиты от выполнения кода в левых местах. |
|||
|
||||
fish9370 |
|
||||||||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 663 Регистрация: 15.4.2007 Где: Москва Репутация: -1 Всего: 1 |
по началу ты и в то, что код можно в стеке исполнять не верил.. еще по теме..
-------------------- undefined |
||||||||||||
|
|||||||||||||
fish9370 |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 663 Регистрация: 15.4.2007 Где: Москва Репутация: -1 Всего: 1 |
нет.. но с удовольствием послушаю.. )
как бы это помягче сказать.. это похоже на защитный код!?! это лишь пример доказывающий, что код может быть исполнен в области стека..
нет? то что можно править код в области стека ты не веришь? P.S. читай выше.. Это сообщение отредактировал(а) fish9370 - 17.7.2007, 23:42 -------------------- undefined |
||||
|
|||||
W4FhLF |
|
|||
![]() found myself ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2831 Регистрация: 2.12.2006 Репутация: 20 Всего: 121 |
Повешают бряк на исполнение в стеке и будут отлаживать точно такой же код, а все эти заморочки побоку ![]() -------------------- "Бог умер" © Ницше "Ницше умер" © Бог |
|||
|
||||
dark_religion |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 198 Регистрация: 8.9.2006 Репутация: -3 Всего: -3 |
Спасибо fish9370, Я хоть и ниче не понял и немогу подискусировать, что будет, а чего не будет, но он единственный из всех показал реальное решение остальные просто поговорили. Может это и не оптимально, но лучшего никто не предложил.
|
|||
|
||||
Daevaorn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2155 Регистрация: 29.11.2004 Где: Москва Репутация: 51 Всего: 70 |
||||
|
||||
bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 63 Всего: 196 |
Ты не понял. Повторяю еще раз коротко и ясно то, что было сказано ранее: 1. Данный код содержит ошибки. 2. Данный код если и работает, то только у автора. А после включения DEP может и перестать работать. 3. Даже после устранения всех ошибок код у меня не заработал. |
|||
|
||||
anthony |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 19 Регистрация: 25.6.2007 Где: Украина Репутация: 3 Всего: 5 |
bsa, Программа полностью работоспособна с небольшой модификацией (инициализацией _main и _Demo) (Microsoft Visual Studio 2005 Professional Edition C++) даже с включенной оптимизацией (контроль ошибок выключен, сборка в Release).
W4FhLF, DEP по умолчанию отключен, с включенным протестирую после (нужно перегружаться). Но и в принципе Ваш довод не так силен. Так что господа Вы не правы. bsa относитесь к другим и их программам с большим уважением и пониманием, а не предвзято. |
|||
|
||||
W4FhLF |
|
|||
![]() found myself ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2831 Регистрация: 2.12.2006 Репутация: 20 Всего: 121 |
Я что-то про DEP говорил? -------------------- "Бог умер" © Ницше "Ницше умер" © Бог |
|||
|
||||
anthony |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 19 Регистрация: 25.6.2007 Где: Украина Репутация: 3 Всего: 5 |
Да с включенным DEP тоже работает.
Та же программа немного модифицированная для языка С (проверено на MSVC 2005 PE, Release, Warnings Level 1)
Это сообщение отредактировал(а) anthony - 18.7.2007, 15:33 |
|||
|
||||
bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 63 Всего: 196 |
Хорошо, плюс еще один компилятор, который это делать позволяет. Но только после исправления ошибок, про которые я кучу раз говорил...
Повторяю, на Linux x86_64 с компилятором g++ 4.1.2 программа не заработала, даже после исправления ошибок. |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |