![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
dark_religion |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 198 Регистрация: 8.9.2006 Репутация: -3 Всего: -3 |
Подскажите пожалуйста как можно заменить код программы во время выполнения и выполнить его снова без перекомпиляции на С++
Или какие еще другие варианты возможны кроме С++ |
|||
|
||||
Daevaorn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2155 Регистрация: 29.11.2004 Где: Москва Репутация: 51 Всего: 70 |
||||
|
||||
bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 63 Всего: 196 |
Имхо, проще для этого использовать наследование классов и виртуальные функции.
А если надо писать самомодифицирующийся код (вирус пишишь?), то пиши на ассемблере. |
|||
|
||||
chipset |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4071 Регистрация: 11.1.2003 Где: Seattle, US Репутация: 27 Всего: 165 |
Скрипты или (до некоторого уровня) полиморфизм спасет тебя
![]() --------------------
|
|||
|
||||
dark_religion |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 198 Регистрация: 8.9.2006 Репутация: -3 Всего: -3 |
Ребята а можно поконкретнее про каждый метод. Каким образом . кто-то может предложить реализацию для
например "Hello world " шоб менялось С "привет Россия" если "Hello world" выводится вот так printf("Hello world"); без переменной. без всяких if & else шоб эта строчка в коде менялась на printf("Privet Russia"); |
|||
|
||||
Daevaorn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2155 Регистрация: 29.11.2004 Где: Москва Репутация: 51 Всего: 70 |
||||
|
||||
dark_religion |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 198 Регистрация: 8.9.2006 Репутация: -3 Всего: -3 |
А мне нужно именно код. Но я не поспорить кто-то может показать конкретный метод?
|
|||
|
||||
dark_religion |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 198 Регистрация: 8.9.2006 Репутация: -3 Всего: -3 |
Мне посоветовали менять линки в минарнике .. как это можно понять? что такое бинарник?
|
|||
|
||||
nickless |
|
|||
![]() Гентозавр ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2976 Регистрация: 29.8.2005 Где: Germany Репутация: 19 Всего: 181 |
Вот тут был небольшой примерчик самомодифицирующегося кода
![]() dark_religion, а ты уверен что оно тебе надо? ![]() -------------------- ![]() Real men don't use backups, they post their stuff on a public ftp server and let the rest of the world make copies - Linus Torvalds |
|||
|
||||
fish9370 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 663 Регистрация: 15.4.2007 Где: Москва Репутация: -1 Всего: 1 |
пояснение к примеру.. здесь код фунции помещается в область стека, в которой позволяется производить запись/чтение/исполнение кода.. после чего функции передается управление.. Это сообщение отредактировал(а) fish9370 - 17.7.2007, 21:57 -------------------- undefined |
|||
|
||||
bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 63 Всего: 196 |
fish9370, мало того, что глупость сморозил, так еще и _main не проинициализировал перед использованием.
А потом, кто тебе сказал, что функция из области стека будет исполняться? |
|||
|
||||
fish9370 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 663 Регистрация: 15.4.2007 Где: Москва Репутация: -1 Всего: 1 |
а _main лишь нужен, чтобы вычислить конец функции..
![]() читай матчасть!! Это сообщение отредактировал(а) chipset - 20.7.2007, 21:35 -------------------- undefined |
|||
|
||||
bsa |
|
||||||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 63 Всего: 196 |
Во-первых, твой код компилируется так (после убирания кривых заголовков, прагм и getch):
Во-вторых, после земены unsigned int на unsigned long (не забываем, что кроме 32-х битной windows существуют другие платформы с другой разрядностью) программа собирается без ошибок. Но при этом при запуске повисает. В-третьих, после добавления между строк 25 и 26 операции printf("%i\n", func_len); появляется вывод:
Это сообщение отредактировал(а) bsa - 17.7.2007, 22:39 |
||||||||
|
|||||||||
Daevaorn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2155 Регистрация: 29.11.2004 Где: Москва Репутация: 51 Всего: 70 |
||||
|
||||
bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 63 Всего: 196 |
Более того, даже если бы эта прога заработала, то чуть более сложная все равно не пойдет, так как в ней обязательно будут внутренние абсолютные переходы, которые перестанут работать, если поместить код функции в другое место адресного пространства.
Я поражаюсь, меня - программиста-ассемблерщика с 10-ти летним стажем обвиняют в незнании матчасти!!! ![]() |
|||
|
||||
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 программа не заработала, даже после исправления ошибок. |
|||
|
||||
JackYF |
|
|||
![]() полуавантюрист ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 5814 Регистрация: 28.8.2004 Где: страна тысячи озё р Репутация: 18 Всего: 162 |
anthony, по твоей программе.
XP SP2, MinGW - g++ 3.4.5 без оптимизаций - работает. Те же, там же, с оптимизациями - сегфолт. Linux Fedora 5, i686, g++ 4.1.1 без оптимизаций - сегфолт. Те же, там же, с оптимизациями - сегфолт. Вопросы? |
|||
|
||||
Damarus |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Awaiting Authorisation Сообщений: 671 Регистрация: 6.5.2006 Репутация: 6 Всего: 29 |
||||
|
||||
bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 63 Всего: 196 |
Проверил еще на x86 (gentoo, x86, gcc 4.1.2).
Результат забавный:
|
|||
|
||||
fish9370 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 663 Регистрация: 15.4.2007 Где: Москва Репутация: -1 Всего: 1 |
anthony, спасибо за поддержку..
в чем неправильность, друг?
ты идею не понял.. я вынесу часть кода за приделы проги.. зашифрую ключем.. при вводе правильного ключа сформируется правельный код.. без ключа, куда бряк будешь накладывать? это как пример.. Добавлено @ 18:30 и вообще, когда я о линуксе хоть раз заякнулся? в линуксе кругом один опенсорс, там вопрос о защите вообще не стоит.. bsa, так вообще код в отстой записал, типа код не по теме.. хм.. хотя сам ничего, кроме своей нелепой критики, предложить не может.. Это сообщение отредактировал(а) fish9370 - 18.7.2007, 18:34 -------------------- undefined |
|||
|
||||
JackYF |
|
|||
![]() полуавантюрист ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 5814 Регистрация: 28.8.2004 Где: страна тысячи озё р Репутация: 18 Всего: 162 |
ты три предыдущих сообщения прочитал? почему твой правильный код не работает на перечисленных нами выше платформах? |
|||
|
||||
nickless |
|
|||
![]() Гентозавр ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2976 Регистрация: 29.8.2005 Где: Germany Репутация: 19 Всего: 181 |
Попробовал код у себя, с выключеным NX-битом работает, со включеным нет, теперь будем знать что NX действительно пашет
![]() -------------------- ![]() Real men don't use backups, they post their stuff on a public ftp server and let the rest of the world make copies - Linus Torvalds |
|||
|
||||
Damarus |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Awaiting Authorisation Сообщений: 671 Регистрация: 6.5.2006 Репутация: 6 Всего: 29 |
Тогда может проще сделать обычную dll'ку, а потом зашифровать её ![]() ![]() P.S. Только толку от такой защиты не много будет. |
|||
|
||||
fish9370 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 663 Регистрация: 15.4.2007 Где: Москва Репутация: -1 Всего: 1 |
а ты мои сообщения читал? что я говорил про линукс.. как известно, самым слабым звеном, в любой защите, является человек.. против раскаленного утюга еще никто не устоял.. Dll'ку шифровать это велосипед, тут я согласен.. шифровать код это тема не новая.. просто у некоторых все еще много стериотипов.. -------------------- undefined |
|||
|
||||
JackYF |
|
|||
![]() полуавантюрист ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 5814 Регистрация: 28.8.2004 Где: страна тысячи озё р Репутация: 18 Всего: 162 |
а что из твоего кода принципиально заточено под XP, можно спросить? |
|||
|
||||
fish9370 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 663 Регистрация: 15.4.2007 Где: Москва Репутация: -1 Всего: 1 |
идея!! -------------------- undefined |
|||
|
||||
JackYF |
|
|||
![]() полуавантюрист ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 5814 Регистрация: 28.8.2004 Где: страна тысячи озё р Репутация: 18 Всего: 162 |
||||
|
||||
fish9370 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 663 Регистрация: 15.4.2007 Где: Москва Репутация: -1 Всего: 1 |
у кого руки прямые, и есть необходимость, тот идею доведет до ума.. что и говорить.. вот мне не понятно, что мы обсуждаем? че мы флудим? есть мысли по теме? кстати, у меня еще есть способ модификации кода во время исполнения.. не такой интересный, но есть.. -------------------- undefined |
|||
|
||||
dumb |
|
|||
![]() sceloglauxalbifacies ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2929 Регистрация: 16.6.2006 Репутация: 8 Всего: 158 |
так как это был мой довод, то и отвечу я.
он не отключен, а включен только для сервисов итп. в XP. в серверных вариантах - по умолчанию включен для всех программ. гон. ![]() если кому интересно, посмотрите на кашу, получающуюся в результате оптимизации. ![]() ответь на простой вопрос: какое отношение имеет представленный тобой код к вопросу в первом посте темы? - то, что автор этого вопроса сказал тебе спасибо, можно не упоминать - он сам, к сожалению, не понимает о чем спросил и что ты ему "выдал". на чем ты 15 лет программировал, друг?! вобщем после всех этих "идей, заточенных под XP" становится как-то скучно и грустно. ![]() fish9370, можно тебя просто попросить не употреблять выражений типа "пустозвон","нелепый","прямые руки"? - становится смешно. а с таким набором ощущений и до "белых столбов" недалеко... ps.
![]() |
|||
|
||||
W4FhLF |
|
|||
![]() found myself ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2831 Регистрация: 2.12.2006 Репутация: 20 Всего: 121 |
Ты просто собираешься шифровать часть кода ключом, который куда-то там вынесен-перенесён? А где защита? Ну да, допустим без ключа не узнают, какой у тебя там код, а с одним валидным ключом(это в худшем случае, в лучшем просто кейген напишут, всё от твоей грамотности зависит) смогут отвязать твою программу от любых проверок. Можешь выложить свою задумку в виде готового exe, мне бы просто интересно было посмотреть, т.к. возможно, что я тебя неправильно понимаю. С таким же успехом можно программу заархивировать в rar с 20 символьным паролем и назвать это защитой. Это сообщение отредактировал(а) W4FhLF - 19.7.2007, 07:25 -------------------- "Бог умер" © Ницше "Ницше умер" © Бог |
|||
|
||||
Santilka85 |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 202 Регистрация: 8.6.2007 Где: Новосибирск Репутация: нет Всего: 1 |
![]() ![]() ![]() --------------------
Снегоболотоходы WP8X8 всего за 480000 рублей и аксессуары к ним. |
|||
|
||||
anthony |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 19 Регистрация: 25.6.2007 Где: Украина Репутация: 3 Всего: 5 |
Обновленный код (устранены ошибки и предупреждения, сокращен объем, изменен стиль).
Протестировано на Win XP PE/HE SP 2 с включенным и выключенным DEP (процессоры без поддержки DEP). Проверена большая часть настроек компиляции для MSVC 2005 PE SP 1, для других компиляторов нужно аккуратно проверять настройки.
Это сообщение отредактировал(а) anthony - 19.7.2007, 11:23 |
|||
|
||||
bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 63 Всего: 196 |
anthony, какой у тебя процессор? Он поддеживает DEP?
|
|||
|
||||
JackYF |
|
|||
![]() полуавантюрист ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 5814 Регистрация: 28.8.2004 Где: страна тысячи озё р Репутация: 18 Всего: 162 |
Вот теперь лучше.
g++ [-O2] -Wall, 4.1.3, Debian lenny - полет нормальный. DEP, естественно, не стоит. С ним не должно работать, так как программа пытается выполнить инструкции, находящиеся в стеке. |
|||
|
||||
Daevaorn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2155 Регистрация: 29.11.2004 Где: Москва Репутация: 51 Всего: 70 |
fish9370, продолжай в том же духе и получишь предупреждение.
|
|||
|
||||
fish9370 |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 663 Регистрация: 15.4.2007 Где: Москва Репутация: -1 Всего: 1 |
Добавлено @ 20:04 обсуждаем дальше..
PS. надеюсь, это никому не придет в голову, компилить под линукс.. ) Это сообщение отредактировал(а) chipset - 20.7.2007, 21:36 -------------------- undefined |
||||
|
|||||
JackYF |
|
|||
![]() полуавантюрист ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 5814 Регистрация: 28.8.2004 Где: страна тысячи озё р Репутация: 18 Всего: 162 |
Daevaorn, вообще-то, модератор этого раздела. Так что не надо здесь разжигать страсти. а, собственно, что мы сейчас обсуждаем? Теперь. Приведенные участки кода - это хорошо. Однако раздел называется: "С++: Общие вопросы". И тема называется "Замена кода С++ на ходу". А не "Замена кода С++ на ходу в операционной системе Windows". Так что последнее полным решением не является. Есть раздел "С++: Системное программирование и WinAPI". Вот там последний код окажется полезен, наверное. Это сообщение отредактировал(а) JackYF - 20.7.2007, 12:12 |
|||
|
||||
Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 53 Всего: 183 |
Ребята, давайте жить дружно
![]() ![]() ![]() Конечно, заставить код выполняться в стеке или другой не-исполняемой памяти можно, хотя и не на всех системах. Причем прошу заметить, со временем этих систем (где нельзя), видимо, будет становиться все больше. Я когда-то этим баловалась и тоже с целью защиты, но тогда это работало почти всегда, т.к. защитный флажок хоть и имелся, но явно был задумкой на будущее... Ладно, допустим, загрузили, расшифровали, передали управление... Однако это может быть совсем не любой код, а ведь чтобы удовлетворить задумку автора, такой код должен быть a) достаточно объемный (не три оператора), б) критичный для правильной работы приложения... Ладно, напряглись, преодолели все трудности... Однако не забываем, что программ с одной версией не бывает; если программа не развивается, причем быстро, кому она нафиг нужна ... А такой способ защиты будет мешать жить прежде всего самому разработчику... Особенно приятно будет изменять и отлаживать код, который вынесен из программы (помним, что он не должен быть совсем уж тривиальным). И наконец, как уже было сказано, это спасает до получения взломщиком первого же валидного ключа (а у мало-мальски ценной программы они всегда утекают - как только появляются первые пользователи)... Т.е. само по себе это абсолютно не достаточно. Нужно применять и другие приемы... Короче, не стоит овчинка выделки. Сложность защиты (в смысле усилий, потраченных как на ее разработку, так и на развитие) должна соответствовать ценности программы. -------------------- ... |
|||
|
||||
chipset |
|
||||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4071 Регистрация: 11.1.2003 Где: Seattle, US Репутация: 27 Всего: 165 |
--------------------
|
||||
|
|||||
DDyDog |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 17 Регистрация: 16.7.2007 Репутация: нет Всего: нет |
1. Первый раз запустил программу(скопировал выше), вывело Hello, World!
2. Закоментировал часть кода
Снова вывело Hello, World! В первом случае выполнялась функция из стека (buf), во втором из сегмента кода А вопрос такой, где произошла модификация кода? И даже если модифицировать буфер и выполнить его, чем это будет отличатся от вызова еще одной функции адресс которой присвоен _Demo (вот если бы произвести модификацию сегмента кода или исполняемого файла)? А стек мы и так постоянно модифицируем ![]() И так для мыслей, может лучше вместо функций использовать обьекты-функции, и размер легче найти, и скопировать с стек легко? |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |