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

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

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

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

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



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

Создано: 25 июля 2006 13:36
· Личное сообщение · #2

dotfix.net/module.php?module=@6e786b366a6a70736a6a5f756b



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

Создано: 25 июля 2006 14:34
· Личное сообщение · #3

могу подкинуть исходничек на masm'е от Криса

9a99_25.07.2006_CRACKLAB.rU.tgz - EMUL01.ASM



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

Создано: 25 июля 2006 14:52
· Личное сообщение · #4

О, пасибо.

[norwed] пишет:
исходничек на masm'е от Криса

А из какой это его книжки?



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

Создано: 25 июля 2006 14:54
· Личное сообщение · #5

Техника и философия хакерских атак




Ранг: 1288.1 (!!!!), 273thx
Активность: 1.290
Статус: Участник

Создано: 25 июля 2006 14:56
· Личное сообщение · #6

[norwed] пишет:
Техника и философия хакерских атак

Прошлый век, фтопку.



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

Создано: 25 июля 2006 15:00
· Личное сообщение · #7

Ara пишет:
Прошлый век, фтопку.

Я думаю примерчик человеку не помешает.



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

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

А чего прошлый век? Суть то вирутуальной машины то на поменялась?



Ранг: 500.5 (!), 8thx
Активность: 0.230
Статус: Участник

Создано: 25 июля 2006 15:31
· Личное сообщение · #9

net3ton
Нету помойму нигде нормального описания какой либо VM, все пишут свои VM'ы самостоятельно (я в т.ч.) .
Короч или разбирай чужие вм и пиши свою на их основе, или пиши сам, предварительно разработав схему и алгоритм работы (входные и выходные данные).

-----
"Пусть видят, что мы не шутим. Стволы для понта, ножи для дела" Lock, Stock & Two Smoking Barrels





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

Создано: 25 июля 2006 19:17 · Поправил: Rascal
· Личное сообщение · #10

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

[ADDED]
Что-то не найти мне сайтик прикольный, на котором был пример работы автомата тьюринга графический такой, красивый-красивый Но в принципе и так можно понять, примеры всё же есть. Жаль я плохо слушал на лекциях про этот автомат

[ADDED2]
www.softcraft.ru/auto.shtml - ещё хороший способ наваять ВМ - использовать SWITCH-автомат. Много примеров, например калькулятор очень понравился. Качественно всё описывается и сорсы в комплекте

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




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

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

net3ton
Увидеть как работает ВМ это первое, что ты должен сделать, потом подумать, а каким образом получен такой результат? Ответом на него даст, как организована данная ВМ и что в ней должно находиться, чтобы ты до сих пор был в неведении, это уже посылка к реализации. Необязательно, как я уже понял, писать ее на подобии абстрактных математических машинах, а-ля Тьюринг, но можно применить совершенно другой метод. Я вот увидел, через код Ms-Rem, то чего мне не хватало для долнейшего толчка в развитии. Советую поковырять кейгенми от этого товарища, и хоть ты не сломаешь, но многое увидишь!

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





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

Создано: 25 июля 2006 21:40 · Поправил: Rascal
· Личное сообщение · #12

theCollision
Ну и что он там увидит? Тот же автомат тьюринга. Надо смотреть ТЕОРИЮ, а не реверсить ВМ готовую. Теория в данном вопросе превышего всего. Не путай людей, сначала надо почитать литературу, а потом делать выбор относительно реализации.

theCollision пишет:
Необязательно, как я уже понял, писать ее на подобии абстрактных математических машинах, а-ля Тьюринг

Если хочешь гемор на , то придумывай свой алго. Всё равно это упрётся в switch

theCollision пишет:
Я вот увидел, через код Ms-Rem, то чего мне не хватало для долнейшего толчка в развитии

Небось увидел, что байткод служит как индекс для перехода на функцию ВМ ?

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




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

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

Rascal
Нет! )) Но есть в его работе вм-кода, а не самого интерпретатора есть что-то подсказывающее.
+На мысль навела интересная статейка на uinc.ru, Многочисленные пинки многих людей, которые пнули в нужном на правлении.

но switch-case это одна из многих реализаций,
Фантазия, фантазия, сколько сенсеев меня этим словом пинают!

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




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

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

Приведу пример как можно писать грубый дизассемблер:

попался 1 байт опкода - Opcode:

switch(Opcode)
{
case 1:
обработка
case 2:
обработка
...
case n:
обработка
}

но можно и так:
typedef struct _HOPCODE
....
}HOPCODE, *POPCODE;

POPCODE TableOpcode[ЭН ШТУК] = {
ТУТ задать че надо!
}

POPCODE = TableOpcode[Opcode];

и тебе уже не надо ни каких switch-case зачем они, ты уже получил описатель опкода и с нужной тебе информацией!

На базе этого примера уже можно говорить, что switch-case не король всем алгоритмам!

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





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

Создано: 25 июля 2006 22:14
· Личное сообщение · #15

theCollision пишет:
дизассемблер

тада уж компилятор

Если switch таблица удачно скомпилена, то ты и получишь обращение по таблице идентификаторов, единственное, что добавится - придётся написать обработчик, а у тя сразу записан псевдокод. Это удобно, но.Свич нагляднее будет, плюс использование массива уместно только для записи байткода например, а вот если встретися опкод с двумя оперндами, то придётся их обрабтывать, простым typedef'ом не отмажешься. Так что лучше комбинировать, ибо такое представление псевдокодов конечно удобнее

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




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

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

>простым typedef'ом не отмажешься.

Хорошо, к примеру в структуре:
byte option;
dword addr;

если в оптион 1, то смотрим на addr как на адрес в следующую таблицу, а если 0 то читаем мнемонику!
В других таблицах задать новые мнемоники и ссылки на другие таблицы если требуется!

> но.Свич нагляднее будет
Я не понял, а с каких пор защита ПО должна подсказывать, как хакать надо?

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





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

Создано: 25 июля 2006 22:48
· Личное сообщение · #17

theCollision пишет:
если в оптион 1, то смотрим на addr как на адрес в следующую таблицу

Тьфу мля, ты назвал дизасмом, я и подумал, что это преобразование истинной программы в P-CODE Это называется интерпритатор байткода. Тогда до лампочки до наглядности, фсё равно в дизасм отладчике отлаживать это ничего не даст крекеру, будет выглядить в принципе одинаково как у рема, хотя как получится.

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




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

Создано: 26 июля 2006 08:14 · Поправил: cleric
· Личное сообщение · #18

theCollision пишет:
Я вот увидел, через код Ms-Rem, то чего мне не хватало для долнейшего толчка в развитии. Советую поковырять кейгенми от этого товарища, и хоть ты не сломаешь, но многое увидишь!

Фантазия, фантазия, сколько сенсеев меня этим словом пинают!


theCollision - EvilsInterrupt???? А статья по ВМ на васме будет?
сходил на сайт, ну вы крутые перцы!



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

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

cleric
Зачем статья-то ? Все итак написано!!! Даже более чем!!! Сиди да пиши, на uinc.ru "эмуляция кода" на сайте GpCH есть статья, дающая полное представление, что можно наворотить! Но ведь хорошая вм это та, работу которой в идеале никтон незнает и скажи накой икс писать еще одноу статью?

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





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

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

theCollision пишет:
хорошая вм это та, работу которой

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

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




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

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

theCollision пишет:
Зачем статья-то ?

ну так спрашиваешь везде, вот и подумал статью пишешь.
нет, так нет.



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

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

я сейчас как раз статью пишу по вм на основе switch.



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

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

[norwed]
Можно выдвинуть требования?! :
1. Эмуляция call CCCC, jnCCC , jmp CCCC, jCCCC
2. Если смещение для перехода вычесляется в программе , то как его можно эмулить, желательно примеры от простого (2 штуки) и сложных (3 штуки)
3. Обфускация не кода x86, что мы привыкли видеть в обычном и привычном x86 коде благодаря которому работают все программы под винды, а кода вм-машины, не сама реализация интерпретатора, а код который она должен выполняться уже должен быть обфусцированным!

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




Ранг: 500.5 (!), 8thx
Активность: 0.230
Статус: Участник

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

theCollision
Вот тебе нормальные требования:
1) Эмуляция всех инструкций.
2) Псевдокод находится в шифрованном виде, причём для расшифровки применяются различные мат. преобразования.
3) Исполнитель потоковый, циклический.
4) Для каждой программы создаётся своя вм с новым псевдокодом.
5) Проверка целостности исполнителя.

В принципе vmProtect подходит под все эти требования и является истинной вм, в отличие от всяких скриптовых языков

-----
"Пусть видят, что мы не шутим. Стволы для понта, ножи для дела" Lock, Stock & Two Smoking Barrels




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

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

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

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





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

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

Эх, если б не работа збацал что-нить, ну а так не раньше чем через неделю.

theCollision пишет:
я писал, что мне надо, а не то что нужно выдвинуть чтобы каждому понравилось!

Нах, неудобно, когда много команд не поддерживается. Вообще из требований ещё можно ввести наличие своих регистров, и пусть их будет побольше, тогда можно ещё объеденять набор команд асма интела в один опкод. Типа push ebp mov ebp, esp, хотя реализовать сложнее

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




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

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

по всему нэту лазил, но сорцов не нашел! Сколько надо наивности в граммах, чтоб они появились? ))

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





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

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

theCollision
Обычно такое не выкладывают - всё таки задача не простая. Поможет ЗНАНИЕ Читаем доки и пишем своё

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




Ранг: 384.1 (мудрец)
Активность: 0.250
Статус: Участник
www.int3.net

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

flex + bison

//ng was here

-----
Подписи - ЗЛО! Нужно убирать!





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

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

nice
Хм, это для написания скриптового языка саое то, но вот для вм, которая должна эмулить код проца это не то. Тут уместнее дизассемблер

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



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


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