воскресим "бои в памяти"?

Тема в разделе "WASM.RESEARCH", создана пользователем kaspersky, 16 окт 2005.

  1. kaspersky

    kaspersky New Member

    Публикаций:
    0
    Регистрация:
    18 май 2004
    Сообщения:
    3.006
    наверное все помнят, что во времена динозавров

    была популярна игра "бои в памяти"?

    а что если ее воскресить? только на новый лад!



    мы имеем:

    компьютер под управлением NT,

    процесс-жертву и процесс-хищних.

    хищник должен "загрызть" жертву

    (для определенности изменив jx на jmp),

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



    вот допустим, первый тур.

    хищник открывает процесс и юзает WriteProcessMemory.

    действия жертвы?



    давайте так играть ;)

    по очереди становясь то хищником, то жертвой

    только просьба действовать поступательно,

    если начать сразу с ручного разбора каталога странц,

    то это будет не интересно...

    хочется собрать как можно больше способов

    защит от записи и методов их обхода.



    давайте условимся что на первых N турах

    жертва не может ставить драйвер и требовать прав админа.



    какие будут соображения?
     
  2. semen

    semen New Member

    Публикаций:
    0
    Регистрация:
    8 июн 2004
    Сообщения:
    334
    Адрес:
    Russia
    >какие будут соображения?

    где я? что я?

    .... ну ты задвинул

    пс, если

    >хищник открывает процесс и юзает WriteProcessMemory

    и

    >жертва не может ставить драйвер и требовать прав админа.

    то от жетрвы может не остаться ничего, при условии что WPM проходит и в кернеле все в порядке... и как она будет действовать?
     
  3. kaspersky

    kaspersky New Member

    Публикаций:
    0
    Регистрация:
    18 май 2004
    Сообщения:
    3.006
    semen

    это вопрос или капитуляция?



    ну много что можно сделать и на юзере.

    задисаблить свои страницы

    (тогда хищник должен будет енаблить их),

    перехватить вызов WriteMemory,

    определить кто его вызввет и, извернувшись,

    цапнуть хищника за хвост..



    еще можно постоянно порождать

    дочерние процессы и термировать свои,

    что затрудняет хищнику жизнь,

    да много чего можно...



    вот и давайте будет думать ;)

    я ж не предлгаю полностью забить на админа и кернел.

    давайте сначала потискаем юзера.
     
  4. semen

    semen New Member

    Публикаций:
    0
    Регистрация:
    8 июн 2004
    Сообщения:
    334
    Адрес:
    Russia
    kaspersky

    да я не врубился сразу.

    похоже ты сделал первый ход =)

    мой ход:

    можно свои секции перемещать в памяти постоянно, со старых мест не стирать чтоб поиском не найди, хрен догодается что патчить надо, тока надо еще запутать инфу о текущем PC ниток, чтоб он не разрюхал где искать надо... ну и про стек не забыть...

    А вообще помойму игра бесконечная =)

    И как я понимаю именно целенаправленное изменение, закрашить думаю всегда можно...
     
  5. kaspersky

    kaspersky New Member

    Публикаций:
    0
    Регистрация:
    18 май 2004
    Сообщения:
    3.006
    вообще-то правила пока не сформированы ;)

    пусть другие тоже присоединяются.

    создадим свод правил и можно играть,

    например exe-обмениваться.

    цель - поразить exe-парнтнера.

    а что? очень рульно думаю будет.

    я встречал несколько симуляторов старых боев на ПК,

    только все они... ну какие-то неигтересные что ли...

    стратегия боев по старым правилам исхожена вдоль и поперек

    системщику здесь негде развернуться.

    то ли дело винда ;)

    а победитель получает статус "супер-джедая-дзена" ;))
     
  6. Sharp

    Sharp New Member

    Публикаций:
    0
    Регистрация:
    1 авг 2003
    Сообщения:
    143
    Адрес:
    Ukraine
    Бои в темноте - запускается две программы, в определенный момент системного времени они начинают искать и пытаться убить друг друга. Побеждает та программа, окно которой останется на экране. Если по истечении некоторого времени оба окна живы, ничья, если комп перезагрузился (или монитор перегорел или еще что-нибудь), обоим по 0 очков. Турниры по швейцарской системе на машине средней мощности с WinXP :)
     
  7. YoungBastard

    YoungBastard New Member

    Публикаций:
    0
    Регистрация:
    29 мар 2005
    Сообщения:
    231
    Адрес:
    Russia
    Господа, ну раз разговор такой у вас есть, то давайте выкладывайте свои наработки.

    И молодеже будет чему пооучиться и процесс игры пойдет.

    Мне очень интересно.

    Крис, хачу играть! =))))
     
  8. Nothing

    Nothing New Member

    Публикаций:
    0
    Регистрация:
    4 авг 2003
    Сообщения:
    139
    Адрес:
    Russia
    Мысль интересная. Только правила надо формализовать. Вот скажем, какие есть привелегии у программы хищника и жертвы? Администраторские? Что значит заменить jx на jmp? Где этот jx (их может сотня в программе, что все менять)? Что он должен контролировать? Как судить? (вполне серьезный вопрос, учитывая что программу-судью можно найти и пропатчить тоже) Главное правило - как контролировать процессорное время на каждый процесс (а то я себе загробастую все разные хитрыми путями, даже не приоритетами)? Ограничения на _все_ ресурсы поставить (память, например)... Ну и т.д. Пока что можно устроить лишь "бои без правил" - но по-моему это мало чем от руткитов/троянов/вирусов отличается :)
     
  9. SnugForce

    SnugForce New Member

    Публикаций:
    0
    Регистрация:
    2 май 2005
    Сообщения:
    373
    Адрес:
    Из домУ
    Еще лучше добавить ограничение на вызываемые функции API. Либо по группам, либо по кол-ву...

    Запретить некоторые приемы. К примеру, что мешает одной проге поостанавливать все потоки другой? И делать что хочет...
     
  10. ava

    ava New Member

    Публикаций:
    0
    Регистрация:
    11 окт 2003
    Сообщения:
    169
    По-моему, идея мертворожденная.



    Система слишком сложная и непредсказуемая. Огромную роль играет случай. И тонкости работы конкретной системы на конкретной машине в конкретных условиях. Например, на однопроцессорных машинах победит, скорее всего, тот, кто стартует первым - наверняка найдется примитивный алгоритм, позволяющий разгромить противника за отведенный квант времени.



    Нужно, чтобы среда сама по себе была простой и предсказуемой, а стратегии сложными. Как в шахматах. Или как в Core Wars.
     
  11. dead_body

    dead_body wasm.ru

    Публикаций:
    0
    Регистрация:
    3 сен 2004
    Сообщения:
    603
    Адрес:
    Украина;г.Харьков;г.Н.Каховка
    главное это сделать правила.
     
  12. kropalik

    kropalik New Member

    Публикаций:
    0
    Регистрация:
    27 апр 2005
    Сообщения:
    155
    Адрес:
    msk
    идея мне кажется прикольной. я вот наверно попробовал бы поучаствовать.

    насчет правил - мне кажется будет

    несколько "наборов".

    вот мой вариант: (в общем виде)

    1. установить OS (возьмем в качестве стандарта какую нибудь типа Win XP SP2) по возможности без дополнительного софта.

    2. сохраняем образ диска, чтоб не переустанавливать когда упадет. (еше прикольнее наверно сделать livecd специально для этой цели)

    3. все программы имеют одинаковые права, причем такие

    чтобы по возможности не могли нарушить работу OS. предлагаю запускать с правами guest.



    Еще неплохо бы установить критерии выигрыша/ничьей.

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



    кстати правило что проги всего две мне кажется необязательным.



    P.S. предлагаю не ставить ограничений на чем писать. вдруг кто на php что нибудь прикольное напишет ?
     
  13. Sharp

    Sharp New Member

    Публикаций:
    0
    Регистрация:
    1 авг 2003
    Сообщения:
    143
    Адрес:
    Ukraine
    Интересно, как на PHP защититься от TerminateProcess?
     
  14. dadhi

    dadhi New Member

    Публикаций:
    0
    Регистрация:
    17 окт 2005
    Сообщения:
    5
    Думаю идеальным был бы следующий вариант

    1. Выделить комп-сервер, круглосуточно подключенный к инету

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

    3. По правилам каждый участник-боец должен отсылать какой нить айдишник на сервер статистики, на сервере распознаются эти айдишники и по ним выводится статистика, кто есть живой : ) Соответственно, если запись была а потом ее нестало, то данный участник умер.

    4. Разрешить по правилам апгрейды своих "воинов", то есть он может даунлоадить и запускать новые фичи

    5. В идеале было бы хорошо вести два компа для 3-го кольца, и для "беспредельщиков"-драйверов, а то людям, которые пока в драйверах не особо шарят придется туго, прийдет ктонить типа Ms-rem - и все умрут : )))

    А идейка - просто суперрррррр!
     
  15. rmn

    rmn Well-Known Member

    Публикаций:
    0
    Регистрация:
    23 ноя 2004
    Сообщения:
    2.348




    представляю, какие "бойцы" начнут закачиваться в первую очередь :))
     
  16. kropalik

    kropalik New Member

    Публикаций:
    0
    Регистрация:
    27 апр 2005
    Сообщения:
    155
    Адрес:
    msk
    >> Выделить комп-сервер, круглосуточно подключенный к

    >> инету

    могу поспособствовать, есть не очень

    нужный комп.

    >> представляю, какие "бойцы" начнут закачиваться

    >> в первую очередь :))

    я тоже представляю. так что поставлю vmware. только надо решить как сделать чтоб туда заливать проги а оттуда инета вообще не было. и заодно не париться восстановлением дисков если заглючит.
     
  17. kropalik

    kropalik New Member

    Публикаций:
    0
    Регистрация:
    27 апр 2005
    Сообщения:
    155
    Адрес:
    msk
    еще вариант.

    в аттаче прога которая

    1. ищет все *.dll в текущем каталоге и загружает через

    LoadLibraryEx(dll_name,0,DONT_RESOLVE_DLL_REFERENCES)

    2. создает потоки по числу загруженых dll

    3. каждый поток вызывает функцию start()



    dll должна:

    1. экспортировать функцию start()

    2. при вызове этой функции выполнять какие-нибудь

    действия, показывающие что она все еще функционирует.









    [​IMG] 995325158__TEST.rar
     
  18. SnugForce

    SnugForce New Member

    Публикаций:
    0
    Регистрация:
    2 май 2005
    Сообщения:
    373
    Адрес:
    Из домУ
    Еще хотелось чтоб проигравиший раскрывал свой исходник... И люди будут учиться и другие советовать... :)))
     
  19. DelExe

    DelExe New Member

    Публикаций:
    0
    Регистрация:
    22 авг 2005
    Сообщения:
    165
    Если война между процесами, то бои будут идти среди перехвата OpenProcess/WriteProcessMemory спускаясь в самый низ ядра. А то открыл процес, Context.EIP = &ExitProcess и досвидания :)

    А вот с DLL в процесе-сервере (боевом поле) будет интересней.
     
  20. kropalik

    kropalik New Member

    Публикаций:
    0
    Регистрация:
    27 апр 2005
    Сообщения:
    155
    Адрес:
    msk
    ага. я еще прикручу загрузчик dll

    свой чтоб LoadLibrary не вызывать.



    или может лучше VirtualAllocEx + CreateRemoteThread ?

    типа процесс "судья" запускается с правами админа

    создает другой процесс, в который грузит dll

    и запускает через CreateRemoteThread. заодно можно

    будет автоматизировать процесс определения победителя.

    например каждая dll должна раз в секунду

    изменять байт по заданному адресу, и если перестает это делать то считается проигравшей.