Сейчас на форуме: hgdagon, asfa (+4 невидимых)

 eXeL@B —› Программирование —› Написание виртуальной машины
<< . 1 . 2 . 3 . >>
Посл.ответ Сообщение

Ранг: 3.0 (гость)
Активность: 0=0
Статус: Участник

Создано: 25 июля 2006 12:46
· Личное сообщение · #1

Добрый день/вечер/утро.
Не подскажите, где можно почитать про создание вирутальных машин. Что то типа как в СтарФорс или протекторах разных... Простенькие примеры там какие может...
Спасибо.



Ранг: 5.7 (гость)
Активность: 0=0
Статус: Участник

Создано: 26 июля 2006 20:35 · Поправил: starix
· Личное сообщение · #2

Какие case и swith?? Техническую документацию от Intel никто читать не пробовал?
Все команды разбирабтся как минимум по маскам и флагам...
Эх поделился бы эмулем, но проект закрытый! Эмулит все кроме MMX, SSE и прочего...

А так если кому интересно, то втыкать до достижения результата в QEMU.
Брать тут http://fabrice.bellard.free.fr/qemu/



Ранг: 54.2 (постоянный)
Активность: 0.040
Статус: Участник

Создано: 26 июля 2006 20:56
· Личное сообщение · #3

www.ava.org.ua/?dir=2&cat=6&get=71



Ранг: 271.5 (наставник), 12thx
Активность: 0.150
Статус: Участник
Packer Reseacher

Создано: 26 июля 2006 21:05
· Личное сообщение · #4

starix
какую траву курил?

Эмуляция - эмуляции рознь!
QEMU и другие можно приспособить для защиты не спорю, но то о чем ты говоришь это создание Вирт-машин для эмуляции выполнения на вирт. ЭВМ и предназначено для других целей.

Эта же тема о том чтобы обсудить вирт.машины предназначенные для защиты кода ПО!

-----
My love is very cool girl.




Ранг: 271.5 (наставник), 12thx
Активность: 0.150
Статус: Участник
Packer Reseacher

Создано: 26 июля 2006 21:10
· Личное сообщение · #5

DDA
Известный трюк и уже давно, называется "лапша", пришел из того времени когда люди в Языках ВУ начали отказываться от оператора go to, из-за того что применения в ЯВУ получается "спагети", но умные протектористы решили для себя приберечь.

-----
My love is very cool girl.




Ранг: 5.7 (гость)
Активность: 0=0
Статус: Участник

Создано: 26 июля 2006 21:15
· Личное сообщение · #6

theCollision
Никто НИКОГДА не запрешал использовать принципы одного проекта в другом!!!
А об эмуляции команд ничего нового кроме того что уже есть придумать сложно.
И к тому же я не заставляю привязывать протектор к QEMU, а тем кому действительно нужна информация по написанию двигла эмулятора, на данный момент ничего лучше чем 3 тома от Intel и исходники QEMU не вижу!!!



Ранг: 271.5 (наставник), 12thx
Активность: 0.150
Статус: Участник
Packer Reseacher

Создано: 26 июля 2006 21:23
· Личное сообщение · #7

DDA
А вот многоздачность, на базе интерпретатора пи-кода с умещего организовать трэды, это и интересно и очень!

-----
My love is very cool girl.




Ранг: 352.4 (мудрец), 4thx
Активность: 0.150
Статус: Участник
retired

Создано: 26 июля 2006 21:26
· Личное сообщение · #8

nice пишет:
flex + bison

//ng was here


выипнуцца конечно надо было, но это скорее для написания компилятора поможет



Ранг: 163.7 (ветеран)
Активность: 0.070
Статус: Участник

Создано: 27 июля 2006 04:50
· Личное сообщение · #9

Rascal пишет:
можно ещё объеденять набор команд асма интела в один опкод. Типа push ebp mov ebp, esp


enter что ли? : )




Ранг: 260.9 (наставник)
Активность: 0.120
Статус: Участник
John Smith

Создано: 27 июля 2006 14:32
· Личное сообщение · #10

S_T_A_S_
Компилятор по разному может компилить. Иногда ентер, иногда пуш мов.

-----
Недостаточно только получить знания:надо найти им приложение





Ранг: 793.4 (! !), 568thx
Активность: 0.740
Статус: Участник
Шаман

Создано: 28 июля 2006 12:50
· Личное сообщение · #11

Пуш мов быстрее рвмотает, а вот в конце лучше leave ставить.

-----
Yann Tiersen best and do not fuck




Ранг: 271.5 (наставник), 12thx
Активность: 0.150
Статус: Участник
Packer Reseacher

Создано: 28 июля 2006 13:08
· Личное сообщение · #12

PE_Kill
1.
У тебя есть крякмис, прога с защитой или че другое, где код интерпретара ВМ-машины исполняет многопоточный p-код?
2.
по твоему мнению при разработке эмулятора, стоит ли задавать строгую логику вм-машины? (регистры, память, стек, контекст потока(если p-многопотчность) или лучше сделать своего рода обфусцированный код,но команды p-кода?

-----
My love is very cool girl.





Ранг: 260.9 (наставник)
Активность: 0.120
Статус: Участник
John Smith

Создано: 28 июля 2006 18:35
· Личное сообщение · #13

theCollision пишет:
2.
по твоему мнению при разработке эмулятора, стоит ли задавать строгую логику вм-машины? (регистры, память, стек, контекст потока(если p-многопотчность) или лучше сделать своего рода обфусцированный код,но команды p-кода?

Скажу по секрету - ВМ на то и ВМ, что у неё своя логика работы А то, что обфусцировать, это аспровый эмуль некоторых команд, о которых моно почитать в туторе PE_KiLL'a

-----
Недостаточно только получить знания:надо найти им приложение





Ранг: 793.4 (! !), 568thx
Активность: 0.740
Статус: Участник
Шаман

Создано: 29 июля 2006 12:04
· Личное сообщение · #14

theCollision я начинал писать крякмис, в котором прога работала в одном потоке, а ВМ в другом, но так и не дописал, а теперь и не буду. А что ты имеешь ввиду под "многопоточный p-код"? А по поводу пункта 2 - ХЗ. Если ты сделаешь обфускацию всех команд и вынесешь их за пределы своих адресов, то думаю этого уже будет достаточно.

-----
Yann Tiersen best and do not fuck





Ранг: 240.5 (наставник)
Активность: 0.190
Статус: Участник
Author of ACKiller

Создано: 02 августа 2006 20:49
· Личное сообщение · #15

Rascal пишет:
ВМ на то и ВМ, что у неё своя логика работы


Вот-вот! ВМ чем непонятней, тем сложнее, только вот не всегда это идет на пользу производительности...




Ранг: 387.4 (мудрец)
Активность: 0.170
Статус: Участник
системщик

Создано: 04 августа 2006 09:51 · Поправил: s0larian
· Личное сообщение · #16

эээ, народ, смотрите доки от valgrind - там полный эмулятор x86 кода. Причём не банальный интрерпритатор, а транслятор. То есть он переводит х86 code в свои micro ops, потом впердоливает в этот поток саой instrumentation, потом оптимизирует, и потом, вроде, переводит в x86 и исполняет.

Ну а полный эмулятор/интрерпритатор это bochs.



Ранг: 271.5 (наставник), 12thx
Активность: 0.150
Статус: Участник
Packer Reseacher

Создано: 04 августа 2006 10:46
· Личное сообщение · #17

PE_Kill
Под много поточностью p-кода я имел ввиду следующее:
В обычном понимании многопоточности понимается, что есть процесс и один - первичный поток, который имеет право создать сколь ему нужное кол-во других потоков! Но эти потоки, это всего лишь участки выполняющегося кода, при чем кода Intel`совместимого!

А представим что есть некий псевдопроцессор(вирт.машина), так вот почему бы там не задать подобную логику? Т.е. организация нескольких участков p-кода, которые будут выполняться в разные моменты времени!

-----
My love is very cool girl.





Ранг: 116.6 (ветеран), 8thx
Активность: 0.050
Статус: Участник

Создано: 04 августа 2006 11:02
· Личное сообщение · #18

theCollision пишет:
А представим что есть некий псевдопроцессор(вирт.машина), так вот почему бы там не задать подобную логику? Т.е. организация нескольких участков p-кода, которые будут выполняться в разные моменты времени!


У тебя по-моему в голове такой винегрет, что ты все свалил в кучу - потоки, процессор, пи-код, виртуальную машину.



Ранг: 271.5 (наставник), 12thx
Активность: 0.150
Статус: Участник
Packer Reseacher

Создано: 04 августа 2006 11:14
· Личное сообщение · #19

dermatolog
А ты разве видел стандарт на создание виртуальных машин? Помоему только одно правило:
"чем сложней анализировать тем лучше!", а как придет человек к этому через венегрет, пильмени, опилки или еще бог весть что, уже не важно, главное результат - А он УСЛОЖНИТЬ!

-----
My love is very cool girl.





Ранг: 387.4 (мудрец)
Активность: 0.170
Статус: Участник
системщик

Создано: 04 августа 2006 13:13
· Личное сообщение · #20

theCollision пишет:
главное результат - А он УСЛОЖНИТЬ!

тогда тебе это никогда не отладить



Ранг: 271.5 (наставник), 12thx
Активность: 0.150
Статус: Участник
Packer Reseacher

Создано: 05 августа 2006 10:31
· Личное сообщение · #21

s0larian
В чем траблы то? Ты же пишешь сначала конвертор из нормального в гавно для крякера, а уж если конвертер нормален, то че тут отлаживать-то? Смотри как конвертер конвертит, потесть его, а уж его покусочкам не так уж и трудно! команда А, команда Б, команда ЭН и т.д. пока не убедишься что у тебя конвертится Ф ТЕМУ! А уж отлаживать, это ты сумеешь, если нет читай маны по Олли, SoftICE, если не помогло продай комп, это тебу уже ненужно! Сорри - но вправду и прямо!

-----
My love is very cool girl.




Ранг: 158.4 (ветеран), 123thx
Активность: 0.140.49
Статус: Участник

Создано: 05 августа 2006 15:37
· Личное сообщение · #22

theCollision
Я бы так не сказал, ведь так и не смог отладить тот крякми. По кусочкам все отлично, но падает, сука, где-то в середине кода, и хрен поймешь отчего. Нереально найти ошибку, когда одна маш. инструкция заменяется несколькими тысячами...



Ранг: 271.5 (наставник), 12thx
Активность: 0.150
Статус: Участник
Packer Reseacher

Создано: 06 августа 2006 00:22
· Личное сообщение · #23

Мне вот что интересно: Обычно создают вирт. машину на основе Машины Тьюринга, Поста и говорят еще на Автоматах Маркова. Но вот кто нить пробовал задать логику вирт.машины на основе- вероятностных автоматах?
Когда в потоке p-кода не возможно заметить закономерность и все стремится к равномерному распределению?

-----
My love is very cool girl.




Ранг: 54.0 (постоянный)
Активность: 0.020
Статус: Участник

Создано: 06 августа 2006 19:09
· Личное сообщение · #24

theCollision пишет:
Мне вот что интересно: Обычно создают вирт. машину на основе Машины Тьюринга, Поста и говорят еще на Автоматах Маркова. Но вот кто нить пробовал задать логику вирт.машины на основе- вероятностных автоматах?

теоретически можно. насколько я помню дискретную, вероятностные автоматы и нормальные марковские цепи практически эквивалентны.
theCollision пишет:
Когда в потоке p-кода не возможно заметить закономерность и все стремится к равномерному распределению?

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



Ранг: 54.0 (постоянный)
Активность: 0.020
Статус: Участник

Создано: 06 августа 2006 19:12
· Личное сообщение · #25

theCollision пишет:
Под много поточностью p-кода я имел ввиду следующее:
В обычном понимании многопоточности понимается, что есть процесс и один - первичный поток, который имеет право создать сколь ему нужное кол-во других потоков! Но эти потоки, это всего лишь участки выполняющегося кода, при чем кода Intel`совместимого!

А представим что есть некий псевдопроцессор(вирт.машина), так вот почему бы там не задать подобную логику? Т.е. организация нескольких участков p-кода, которые будут выполняться в разные моменты времени!

посмотри язык форт, не изобретай велосипед
шитый код + интерпретация команд (довольно просто переделать в ВМ, имхо) + многопоточность шитого кода. Да и вобще говоря, любой алгоритм на основе switch параллелится без проблем.



Ранг: 271.5 (наставник), 12thx
Активность: 0.150
Статус: Участник
Packer Reseacher

Создано: 06 августа 2006 19:36
· Личное сообщение · #26

n1kto
Логично рассуждаешь. Кинь ссылку по форту, которую уважаешь?

-----
My love is very cool girl.




Ранг: 54.0 (постоянный)
Активность: 0.020
Статус: Участник

Создано: 07 августа 2006 00:09 · Поправил: n1kto
· Личное сообщение · #27

theCollision пишет:
Логично рассуждаешь. Кинь ссылку по форту, которую уважаешь?

сайт посвященный форту в россии [url=http://www.forth.org.ru/
]http://www.forth.org.ru/
[/url]
далее по ресурсам. текущий компилятор - spf. ссылки тамже, дом на sf.net.
где-то видел баранова-ноздрунова, в виде djvu. Если вспомню где, скажу
в виде просто текста - есть по ссылке.

вдогон: когда-то начинал читать теорию компиляции с Креншоу. Он писал про паскаль.
Есть аналог для форта, заставило улыбнуться: home.iae.nl/users/mhx/crenshaw/tiny.html



Ранг: 271.5 (наставник), 12thx
Активность: 0.150
Статус: Участник
Packer Reseacher

Создано: 09 августа 2006 07:32
· Личное сообщение · #28

Очень мало: patpend.net/technical/misc/HOWTO.html

-----
My love is very cool girl.




Ранг: 15.6 (новичок)
Активность: 0.030
Статус: Участник

Создано: 09 августа 2006 10:35
· Личное сообщение · #29

theCollision пишет:
Очень мало: patpend.net/technical/misc/HOWTO.html

И статья англоязычная, хреново. А на русском, кроме dotfix.net ничё нету чтоли?



Ранг: 54.0 (постоянный)
Активность: 0.020
Статус: Участник

Создано: 09 августа 2006 12:04 · Поправил: n1kto
· Личное сообщение · #30

theCollision пишет:
Очень мало: http://patpend.net/technical/misc/HOWTO.html http://patpend.net/technical/misc/HOWTO.html

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



Ранг: 54.0 (постоянный)
Активность: 0.020
Статус: Участник

Создано: 09 августа 2006 12:07 · Поправил: n1kto
· Личное сообщение · #31

если надо варианты реализации программно, читаешь материалы по обсфукации,
но не в плане "все переименовать", а в плане перевода в КА и другие схемы.
у меня где-то валялась даже монография по этому делу. Английская. Тоже из сети, поищи.
Там и схемы, и основные алгоритмы и принципы рассмотрены. Если найду - выложу.


<< . 1 . 2 . 3 . >>
 eXeL@B —› Программирование —› Написание виртуальной машины
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати