| Comments: |
| From: | (Anonymous) |
| Date: | March 15th, 2012 - 07:56 pm |
|---|
| | "И моя статейка " | (Link) |
|
А на русском ее нигде нет? А то и так все не понятно, еще и на англ. Спасибо.
![[User Picture]](http://lj.rossia.org/userpic/191927/26445) | | From: | herm1t |
| Date: | March 16th, 2012 - 09:49 am |
|---|
| | Re: "И моя статейка " | (Link) |
|
Мне лень переводить. Суть изложил кетмар постом ниже. По содержанию статьи: что было раньше, и как это называется на самом деле; о вреде ассемблера; откуда взялась идея; почему она привлекательна с точки зрения теории; пример того, как небольшие изменения в кодогенераторе отражаются на коде; возможные подъебки, такие как бутстреппинг и опасность превратить годный движок в обычный движок. Это сокращенный вариант. Полный будет, когда будет готов код.
![[User Picture]](http://lj.rossia.org/userpic/197531/22349) | | From: | ketmar |
| Date: | March 16th, 2012 - 06:30 am |
|---|
| | | (Link) |
|
хех. я когда-то почти сделал компилятор для форта, который «разворачивает» его стековые операции в более-менее приличный ast и потом генерит код как полагается — с инлайнами, регистровым аллокатором и так далее. потом подумал, что путём небольших изменений, чутка рандома, тоссинга инструкций и «дегенератора» из сгенерёного кода мог бы получиться забавный мутатор. но лапы так и не дошли всё это закончить, а теперь уже и проебалось. где-то жаль даже.
когда стану совсем старым и богатым, может, снова напишу «проекты молодости». в рамках программы «продвинутое впадание в детство», гыг.
![[User Picture]](http://lj.rossia.org/userpic/191927/26445) | | From: | herm1t |
| Date: | March 16th, 2012 - 09:59 am |
|---|
| | | (Link) |
|
я нацелился скорее на Си. хотелось бы, чтобы оно было не слишком тупое и не однопроходное. из выкопанных в интернетах кодесов понравился sparse.
> когда стану совсем старым и богатым, может, снова напишу «проекты > молодости». в рамках программы «продвинутое впадание в детство», гыг.
и то дело :-)
Статья про метаморфизм -- ок, но сама идея страшный баян: на OpenRCE какое-то время назад выкладывали модифицированный TCC, генерирующий замусоренный код, плюс на просторах сети видел компанию, которая делала С/С++ компилятор, генерирующий обфусцированный код, как коммерческое решение.
Все остальные статьи/исходники из журнала -- вторичная фигня, такое ощущение, что те полтора человека, из ныне здравствующих вирмейкеров, застряли где-то в конце 90-х - начале 00-х :(
![[User Picture]](http://lj.rossia.org/userpic/191927/26445) | | From: | herm1t |
| Date: | March 16th, 2012 - 12:47 pm |
|---|
| | | (Link) |
|
> сама идея страшный баян
еще более страшный, чем кажется :-) только реализации нет.
> модифицированный TCC
я знаю еще один подобный хак TCC же. и в том, и в другом случае все изменения происходят уже на стадии генерации инструкций, результат слабый, того же самого можно достичь при помощи обычного движка.
> видел компанию
вот это уже ближе. но они, imho, не вполне адекватны.
меня же интересует маленький self-hosted компилятор, используемый в качестве движка.
C self-hosted сложнее, да. Можно ещё в сторону JiT-движков посмотреть, на примере того же LLVM: хранить тушку вируса (или чего-там) в виде LLVM-байткода несколько более адекватно с точки зрения дизайна, да и документация у LLVM отличная.
![[User Picture]](http://lj.rossia.org/userpic/191927/26445) | | From: | herm1t |
| Date: | March 16th, 2012 - 01:11 pm |
|---|
| | | (Link) |
|
> хранить тушку вируса (или чего-там) в виде LLVM-байткода
тоже неплохая идея, но мне хочется другого. хочется: а) родного кода, не VM б) хочется таких преобразований кода, которые не связаны с инструкциями, а это либо декомпиляция родного или байт-кода в высокоуровневое представление (со всеми вытекающими, но опять-таки решаемыми проблемами), либо хранение не кода, а уже AST, о чем собственно статья.
сводя IR к байт-коду, мы получим просто очередной метаморфный движок, что само по себе неплохо, но уже не интересно. не крипторами же потом барыжить, право слово. ))) | |