herm1t LIVE!ng room - Valhalla 2 [entries|archive|friends|userinfo]
herm1t

[ website | twilight corner in the herm1t's cave ]
[ userinfo | ljr userinfo ]
[ archive | journal archive ]

Valhalla 2 [Mar. 15th, 2012|01:32 pm]
Previous Entry Add to Memories Tell A Friend Next Entry
[Tags|, ]
[Current Mood | happy]

Вышел журнал Valhalla 2. Мне нравится! :-) И моя статейка есть там. В последний момент повыкидывал из нее большую часть технических подробностей, и решил, что пора бы уж перестать теоретизировать и взяться за код.
LinkLeave a comment

Comments:
From:(Anonymous)
Date:March 15th, 2012 - 07:56 pm

"И моя статейка "

(Link)
А на русском ее нигде нет?
А то и так все не понятно, еще и на англ.
Спасибо.
[User Picture]
From:[info]herm1t
Date:March 16th, 2012 - 09:49 am

Re: "И моя статейка "

(Link)
Мне лень переводить. Суть изложил кетмар постом ниже. По содержанию статьи: что было раньше, и как это называется на самом деле; о вреде ассемблера; откуда взялась идея; почему она привлекательна с точки зрения теории; пример того, как небольшие изменения в кодогенераторе отражаются на коде; возможные подъебки, такие как бутстреппинг и опасность превратить годный движок в обычный движок. Это сокращенный вариант. Полный будет, когда будет готов код.
[User Picture]
From:[info]ketmar
Date:March 16th, 2012 - 06:30 am
(Link)
хех. я когда-то почти сделал компилятор для форта, который «разворачивает» его стековые операции в более-менее приличный ast и потом генерит код как полагается — с инлайнами, регистровым аллокатором и так далее. потом подумал, что путём небольших изменений, чутка рандома, тоссинга инструкций и «дегенератора» из сгенерёного кода мог бы получиться забавный мутатор. но лапы так и не дошли всё это закончить, а теперь уже и проебалось. где-то жаль даже.

когда стану совсем старым и богатым, может, снова напишу «проекты молодости». в рамках программы «продвинутое впадание в детство», гыг.
[User Picture]
From:[info]herm1t
Date:March 16th, 2012 - 09:59 am
(Link)
я нацелился скорее на Си. хотелось бы, чтобы оно было не слишком тупое и не однопроходное. из выкопанных в интернетах кодесов понравился sparse.

> когда стану совсем старым и богатым, может, снова напишу «проекты
> молодости». в рамках программы «продвинутое впадание в детство», гыг.

и то дело :-)
From:[info]cr4sh-0x48k.livejournal.com
Date:March 16th, 2012 - 12:26 pm
(Link)
Статья про метаморфизм -- ок, но сама идея страшный баян: на OpenRCE какое-то время назад выкладывали модифицированный TCC, генерирующий замусоренный код, плюс на просторах сети видел компанию, которая делала С/С++ компилятор, генерирующий обфусцированный код, как коммерческое решение.

Все остальные статьи/исходники из журнала -- вторичная фигня, такое ощущение, что те полтора человека, из ныне здравствующих вирмейкеров, застряли где-то в конце 90-х - начале 00-х :(
[User Picture]
From:[info]herm1t
Date:March 16th, 2012 - 12:47 pm
(Link)
> сама идея страшный баян

еще более страшный, чем кажется :-) только реализации нет.

> модифицированный TCC

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

> видел компанию

вот это уже ближе. но они, imho, не вполне адекватны.

меня же интересует маленький self-hosted компилятор, используемый в качестве движка.
From:[info]cr4sh-0x48k.livejournal.com
Date:March 16th, 2012 - 01:00 pm
(Link)
C self-hosted сложнее, да.
Можно ещё в сторону JiT-движков посмотреть, на примере того же LLVM: хранить тушку вируса (или чего-там) в виде LLVM-байткода несколько более адекватно с точки зрения дизайна, да и документация у LLVM отличная.
[User Picture]
From:[info]herm1t
Date:March 16th, 2012 - 01:11 pm
(Link)
> хранить тушку вируса (или чего-там) в виде LLVM-байткода

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

сводя IR к байт-коду, мы получим просто очередной метаморфный движок, что само по себе неплохо, но уже не интересно. не крипторами же потом барыжить, право слово. )))