|
|
|
Есть ли предел у возможностей программ?
|
|||
|---|---|---|---|
|
#18+
Подскажите ответ на вопрос в тему ядрер, колец, превелегий... можно паролели между windows и linux.. во втором у меня мало практики... с полуслова могу не понять =) Вопрос такой: Как создать программу способную менять свой код? Т.е. видел я не раз программы, которые хранят переменные в своем бинарном коде, помогите разобраться с энтим не простым делом.. Кому не в облом хотелось бы побеседовать.. Книжки это понятное дело, но там одностаронняя связь, а хотелось бы живого общения. Так что не отсылайте меня сразу.. не тыкайте носом в google, rambler и умные книжки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.05.2005, 22:52 |
|
||
|
Есть ли предел у возможностей программ?
|
|||
|---|---|---|---|
|
#18+
Все равно читать придется... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.05.2005, 23:03 |
|
||
|
Есть ли предел у возможностей программ?
|
|||
|---|---|---|---|
|
#18+
Интиресно, а зачем это вам? У ж не вирь ли написать удумал? ))) Вообще-то это дело не очень распространенное. Раньше на этом экономили несколько байт и несколько тактов, а теперь это удел в основном вирей-полиморфов и кода с защитой от отладки. Проблем с самомодифицирующимся кодом много -- обычно в современных ОС страницы с кодом защищены от записи, и надо специально возиться, чтобы код мог модифицировать себя. Много хороших статей по этому поводу есть на www.wasm.ru, в том числе пример полиморфного движка. ________________________________________________________ Глюк - это высокоорганизованная система не поддающихся определению частиц ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.05.2005, 23:07 |
|
||
|
Есть ли предел у возможностей программ?
|
|||
|---|---|---|---|
|
#18+
2 Not Real Всегда рад побеседовать на эту тему. Однако интересно узнать о конечной цели твоих изысканий. Обычно такие программы (самомодифицирующиеся) создают вирмейкеры для скрытия от антивирусов либо любители пооптимизировать и выдавить лишние 2-3 такта из цикла (пример - компиллятор арифметических выражений). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.05.2005, 18:08 |
|
||
|
Есть ли предел у возможностей программ?
|
|||
|---|---|---|---|
|
#18+
LelikkИнтиресно, а зачем это вам? У ж не вирь ли написать удумал? ))) ________________________________________________________ Глюк - это высокоорганизованная система не поддающихся определению частиц Не виря... А вот интересно можно программу снабдить памятью, чтоб она накапливала опыт.. =) Использовала опыт других программ.. Заложить в код эвалюцию.. Снабдить инстинктами. Как вам такая мысль? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.05.2005, 09:36 |
|
||
|
Есть ли предел у возможностей программ?
|
|||
|---|---|---|---|
|
#18+
Not_Real LelikkИнтиресно, а зачем это вам? У ж не вирь ли написать удумал? ))) ________________________________________________________ Глюк - это высокоорганизованная система не поддающихся определению частиц Не виря... А вот интересно можно программу снабдить памятью, чтоб она накапливала опыт.. =) Использовала опыт других программ.. Заложить в код эвалюцию.. Снабдить инстинктами. Как вам такая мысль? Ну подобие накопления опыта реализовать можно на основе нейронных сетей. А вот какой опыт -- только в определнной вами области по вашей модели. А вот чтобы опыт других прог, это круто)))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.05.2005, 11:39 |
|
||
|
Есть ли предел у возможностей программ?
|
|||
|---|---|---|---|
|
#18+
Not_Real Т.е. видел я не раз программы, которые хранят переменные в своем бинарном коде, Любое объявление переменной приведет к тому она будет в коде программы, если только это не указатель и выделяешь память во времяы работы. с помощью new, alloc, etc/ Ну а если напишешь программу которая будет учится у других программ то такая крутизна даже не поддается обсуждению :-)))))))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.05.2005, 13:07 |
|
||
|
Есть ли предел у возможностей программ?
|
|||
|---|---|---|---|
|
#18+
CruelGenius Любое объявление переменной приведет к тому она будет в коде программы, если только это не указатель и выделяешь память во времяы работы. с помощью new, alloc, etc/ Я имел в виду сохранение переменных в бинарный код. CruelGenius Ну а если напишешь программу которая будет учится у других программ то такая крутизна даже не поддается обсуждению :-)))))))) Ну не учиться.. хотябы наметки какие нибудь на использование опыта других программ. Теоретически можно же создать программу цель которой будет поиск аптимизиции, чего-то, т.е. описать некоторый класс методов, и перебирать оптимальное их сочитание и процедуру создания методов из примитивов. Впринципе возможность программы менять свой код, дает возможность реализации механизмов эволюции. (Так ведь? Или в чем то запритык есть?) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.05.2005, 16:44 |
|
||
|
Есть ли предел у возможностей программ?
|
|||
|---|---|---|---|
|
#18+
Поразительное дело, я нашел интересующую меня тему (про которую в последнем посте написано) раскрытую на http://www.wasm.ru - это хороший интернет ресурс.. 8) Надо теперь в Ассемблере поднатореть, а то как филькина грамота. Хотя идея хорошая и перспектива не плохая. =) Как не крути а все в ассемблер упираеться, но сейчас это слишком высокая для меня планка. Все бы ничего, только уровень (программирования) уж слишком низок... Кто (из великих) не забыл что он с нуля начинал, подскажите в какой последовательности браться за асм, ведь вы проходили по этой тропе, знаете какого оно, только проявите гуманность, не говорите, что вам никто не помогал, что вы сами во всем разбирались. Хочеться то всего и сразу! =) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.05.2005, 18:03 |
|
||
|
Есть ли предел у возможностей программ?
|
|||
|---|---|---|---|
|
#18+
Хоть мы и не великие))), но ассемблер надо начинать учить с изучения архитектуры процессора и его команд. Лучшей книгой по ассемблеру лично я считаю: Зубков -- "Ассемблер для DOS, Windows & Unix". Также неплохие книги под авторством Пирогова. ________________________________________________________ Глюк - это высокоорганизованная система не поддающихся определению частиц ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.05.2005, 22:59 |
|
||
|
Есть ли предел у возможностей программ?
|
|||
|---|---|---|---|
|
#18+
CruelGeniusЛюбое объявление переменной приведет к тому она будет в коде программы, если только это не указатель и выделяешь память во времяы работы. с помощью new, alloc, etc/ Бред. Not_RealКто (из великих) не забыл что он с нуля начинал, подскажите в какой последовательности браться за асм, ведь вы проходили по этой тропе, знаете какого оно, только проявите гуманность, не говорите, что вам никто не помогал, что вы сами во всем разбирались. Хочеться то всего и сразу! =) Помогал, такой же начинающий как и я :) Чтобы начать программировать на ассемблере, надо запомнить три простых правила: 1) У процессора есть регистры и это единственные переменные которые нам доступны. 2) В память мы пишем сами и пишем туда все что угодно. Но кусочками не более одного регистра 3) GOTO это хорошо! :) Книги по процессорам на первом этапе ничего не дадут. Ты их не поймешь. Лучше возьми старинный программируемый калькулятор типа МК-61, Б3-34 и им подобные и поиграйся с ними. Начнешь думать по ассемблерному. Потом берешь любой комп, узнаешь какой тип процессора там стоит, достаешь список команд этого процессора, транслятор ассемблера и обязательно описание доступа к внешним устройствам, хотя бы к дисплею - и вперед. А насчет уровня программирования не волнуйся, лично я свой первый ассемблер (КР580ВМ80А если кто помнит такое :) начал использовать сразу после Бейсика и калькуляторов :) А по вопросу самомодифицирующихся программ - ассемблер это единственный язык на котором саммодификацию можно делать с хоть с какой-то увереностью что оно смодифицируется так как ты запланировал. На всех высоких языках - обязательно прийдется сражаться с транслятором. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.05.2005, 19:50 |
|
||
|
Есть ли предел у возможностей программ?
|
|||
|---|---|---|---|
|
#18+
2 Not Real Начинать обучение лучше с ... повторения чужих программ. Скачай какой-нибудь исходник и просто скомпиллируй. Потом попробуй разобратся как он работает. Внеси изменения и т.д. Успехов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.05.2005, 13:12 |
|
||
|
Есть ли предел у возможностей программ?
|
|||
|---|---|---|---|
|
#18+
Not_RealЯ имел в виду сохранение переменных в бинарный код. В бинарный код куда ? В файл на диск или в память куда загружена программа? Если ты имеешь ввиду что переменные сохранять в сегменте кода в памяти , то это дело у тебя вызовет синий экран смерти с надписью что твоя программа обратилась не туда куда надо. Под виндой, а если это под досом, то может просто зависнуть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.05.2005, 06:47 |
|
||
|
Есть ли предел у возможностей программ?
|
|||
|---|---|---|---|
|
#18+
CruelGenius В бинарный код куда ? В файл на диск или в память куда загружена программа? Если ты имеешь ввиду что переменные сохранять в сегменте кода в памяти , то это дело у тебя вызовет синий экран смерти с надписью что твоя программа обратилась не туда куда надо. Под виндой, а если это под досом, то может просто зависнуть. Нее.. ну есть же программы которым разрешено (виндой) менять себя, нулевое кольцо вроде бы. Т.е. Изменения после работы с программой не исчезают, а сохроняются, не в файл куда-то, и не в реестр, а в самой программе. Как это реализовано? Да, про "кольца" и "уровни", расскажите поподробнее. ЗЫ. В посте могут быть неточности и заблуждения, не очень представляю себе то, про что спрашиваю.. 8) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.05.2005, 09:15 |
|
||
|
Есть ли предел у возможностей программ?
|
|||
|---|---|---|---|
|
#18+
Брось ты ерунду - ассемблер какой то. И на С полно примеров. Пока ты асм будешь изучать какой-нибудь студент уже проги продавать будет ))))))) Распознавание образов и искусственный интеллект http://www.ocrai.narod.ru/ Нейронные сети http://www.basegroup.ru/ Алгоритмы http://algolist.manual.ru/ ______________________________________________ Вы имеете право хранить молчание! Всё что Вы скажете может быть использовано против Вас в суде! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.05.2005, 10:20 |
|
||
|
Есть ли предел у возможностей программ?
|
|||
|---|---|---|---|
|
#18+
Not_Real Нее.. ну есть же программы которым разрешено (виндой) менять себя, нулевое кольцо вроде бы. Т.е. Изменения после работы с программой не исчезают, а сохроняются, не в файл куда-то, и не в реестр, а в самой программе. Как это реализовано? Да, про "кольца" и "уровни", расскажите поподробнее. ЗЫ. В посте могут быть неточности и заблуждения, не очень представляю себе то, про что спрашиваю.. 8) Менять себя может каждый. Просто по умолчанию секция кода программы имеет атрибут PAGE_EXECUTE_READ (вернее страницы этой секции в памяти), и ессено писать туда нельзя. Для того чтобы писать можно было, надо сменить аттрибут на PAGE_EXECUTE_READWRITE c помощью VirtualProtect(). Но изменению сделанные в памяти, там и останутся. Никто не запишет их на диск кроме вас. До писать данные в образ PE-файла на диске требует определенной квалификации. По поводу "нулевого кольца": процессор Intel в защищенном режиме (где винда и работает (в реальном режиме работал раньше чистый DOS с 1Mb памяти)) поддерживает 3 уровня привилегий. Винда использует 2: 0 -- для себя и драйверов, 3 -- для пользовательских приложений. На 3 уровне ограничены многие возможности (доступ к портам ввода/вывода, исполнение определенных инструкций процессора). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.05.2005, 16:33 |
|
||
|
Есть ли предел у возможностей программ?
|
|||
|---|---|---|---|
|
#18+
Petro123Брось ты ерунду - ассемблер какой то. И на С полно примеров. Пока ты асм будешь изучать какой-нибудь студент уже проги продавать будет ))))))) Ну продовать проги, это одно, а разобраться во всем (по возможности) досканально - это другое. =) И тут все упираеться в асм (в хакере вычитал, советуют не тратить время на голый асм (ибо это долго и объемно), а советуют писать вставки, мне кстати статейка понравилась, пишется с позиции сишника, жду след. номера... 8) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.05.2005, 20:06 |
|
||
|
Есть ли предел у возможностей программ?
|
|||
|---|---|---|---|
|
#18+
Not_Real Petro123Брось ты ерунду - ассемблер какой то. И на С полно примеров. Пока ты асм будешь изучать какой-нибудь студент уже проги продавать будет ))))))) Ну продовать проги, это одно, а разобраться во всем (по возможности) досканально - это другое. =) И тут все упираеться в асм (в хакере вычитал, советуют не тратить время на голый асм (ибо это долго и объемно), а советуют писать вставки, мне кстати статейка понравилась, пишется с позиции сишника, жду след. номера... 8) Лучше не читайте ксакеп -- будете в иллюзиях плавать насчет взома серверов с помощью нового супер-навороченного скрипта на бейсике))) Или насчет суперских хакерских прог на Delphi))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2005, 20:06 |
|
||
|
Есть ли предел у возможностей программ?
|
|||
|---|---|---|---|
|
#18+
>Вопрос такой: Как создать программу способную менять свой код? В большинстве нормальных операционных систем , которыми являются *nix-ы и Win32-ы такое сделать невозможно. Да и не нужно с точки зрения тривиального здравомыслия. >видел я не раз программы, которые хранят переменные в своем бинарном >коде, помогите разобраться с энтим не простым делом.. Если это не программа микроконтроллера или драйвера какого-то устройства, то это плохая программа. >Кому не в облом хотелось бы побеседовать.. Ну давай беседовать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2005, 00:46 |
|
||
|
Есть ли предел у возможностей программ?
|
|||
|---|---|---|---|
|
#18+
А вот интересно можно программу снабдить памятью, чтоб она накапливала опыт.. =) Использовала опыт других программ.. Заложить в код эвалюцию.. Снабдить инстинктами. Это достигается другими способами, не модификацией кода. Кроме того, нормально модифицировать код сколько-нибудь сложной программы ты все равно не сможешь, потому что это очень сложно. Например, возможные варианты поведения программы можно описывать с помощью данных. Можно саму программу писать на языке интерпретирующего типа и там уж сам Бог повелел генерировать и затем исполнять код , к тому же это не будет сложно (язык должен быть достаточно крупным). Можно использовать язык Пролог - там базы предикатов реализованы в самом языке. Ну и вообще много вариантов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2005, 00:54 |
|
||
|
Есть ли предел у возможностей программ?
|
|||
|---|---|---|---|
|
#18+
White OwlЛучше возьми старинный программируемый калькулятор типа МК-61, Б3-34 и им подобные и поиграйся с ними. Начнешь думать по ассемблерному. Что ты такое говоришь ? Он по-FORTH-овому будет думать, а не по ассемблерному. White Owl А по вопросу самомодифицирующихся программ - ассемблер это единственный язык на котором саммодификацию можно делать с хоть с какой- то увереностью что оно смодифицируется так как ты запланировал. Как раз наоборот. ASM- это единственное средство, с помошью которого задача создания самомодифицирующихся программ становиться абсолютно нереальной. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2005, 01:02 |
|
||
|
Есть ли предел у возможностей программ?
|
|||
|---|---|---|---|
|
#18+
На сегодня я весьма далек от ассемблера и CPP, но где-то я краем уха слышал, что в экзешнике перед точкой входа в программу есть 100 байт не помню для каких целей используются. Если управление на этот участок никогда не передается, то, думаю, его можно использовать для своих целей, например, разумеется, в машинных кодах туда можно чего-то записать, затем подгрузить при следующей загрузке программы эту цепочку кодов в память, и передать управление на этот кусочек кода. Хотя, думаю, если и тратить время на развитие этой идеи, то для начала хотя-бы в другой файл научиться писать, и выполнять коды от туда. На сколько я понимаю, саморазвитие программы в любом случае - это накопление информации, а на постоянно прибываемый объем информации заранее зарезервированного места все-равно не хватит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2005, 07:58 |
|
||
|
Есть ли предел у возможностей программ?
|
|||
|---|---|---|---|
|
#18+
Yura .На сегодня я весьма далек от ассемблера и CPP, но где-то я краем уха слышал, что в экзешнике перед точкой входа в программу есть 100 байт не помню для каких целей используются. Если управление на этот участок никогда не передается, то, думаю, его можно использовать для своих целей, например, разумеется, в машинных кодах туда можно чего-то записать, затем подгрузить при следующей загрузке программы эту цепочку кодов в память, и передать управление на этот кусочек кода. Хотя, думаю, если и тратить время на развитие этой идеи, то для начала хотя-бы в другой файл научиться писать, и выполнять коды от туда. На сколько я понимаю, саморазвитие программы в любом случае - это накопление информации, а на постоянно прибываемый объем информации заранее зарезервированного места все-равно не хватит. Где это вы нашли эти 100 байт? В PE-формате код разделен по секциям. Вы писать собрались куда--в межсекционное пространство? (которого вообще-то нет) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2005, 08:30 |
|
||
|
Есть ли предел у возможностей программ?
|
|||
|---|---|---|---|
|
#18+
Я не знаю что есть PE-формат. Ну нет так нет, на Асме напишите 100 раз NOP, будут, а вообще-то я сказал, что в программировании на этом уровне я не силен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2005, 09:02 |
|
||
|
Есть ли предел у возможностей программ?
|
|||
|---|---|---|---|
|
#18+
MasterZiv>Вопрос такой: Как создать программу способную менять свой код? В большинстве нормальных операционных систем , которыми являются *nix-ы и Win32-ы такое сделать невозможно. Да и не нужно с точки зрения тривиального здравомыслия. >видел я не раз программы, которые хранят переменные в своем бинарном >коде, помогите разобраться с энтим не простым делом.. Если это не программа микроконтроллера или драйвера какого-то устройства, то это плохая программа. >Кому не в облом хотелось бы побеседовать.. Ну давай беседовать. По-моему лучше не скажешь для закрытия IMHO топика. Эта задача так далека от народа как Циолковский в своё время. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2005, 11:12 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=33056453&tid=2033294]: |
0ms |
get settings: |
7ms |
get forum list: |
20ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
69ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
72ms |
get tp. blocked users: |
1ms |
| others: | 198ms |
| total: | 388ms |

| 0 / 0 |
