компиляторы..... или помогите начинающему...
От: arisman  
Дата: 29.01.06 01:52
Оценка:
Недавно увидел в инете прогу — восстанавливает из exe-шника, скомпилированного в .NET его исходный код.

Впринципе, если взять тот же ildasm и посмотреть ll код, то даже начинающему (мне) становиться понятна основная логика простой программы. При дальнейшем изучение msil думаю, что можно запросто разбирать более сложные вещи...

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

Ещё, если не сложно, помогите немного разобраться.
1. Я прочёл, что прога после первого запуска компилируется с помощью jit в машинный код. Где же тогда храняться метаданные или инфа о них уничтожается .

2. Так же прочёл: можно сделать программу, которая бы каждый раз при запуске проходила jit, а можно сделать, чтобы это происходило только при первом запуске. 2-ое естественно быстрее, наверное, не на много. Но, если это так, то как..????


P.S. Я очень сильно извиняюсь за такие вопросы, просто только год назад стал изучать и что то делать в програмирование. Мне это дело очень нравится (кроме баз данных, всё нравиться пока) и чтобы не пойти изначально по неверному пути рискнул и задал вопрос, ожидая сливания чайника .
компиляторы..... или помогите начинающему...
От: Аноним  
Дата: 29.01.06 06:32
Оценка:
> А есть ли компилятор, который компилировал сразу же в машинный код. Пусть при этом будет много минусов, точнее, наверное, не будет работать отражение или какие-нибудь другие операции с аттрибутами, я не знаю, но это бы гарантировало "сохранение собст. труда".

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

> только год назад стал изучать и что то делать в програмирование. Мне это дело очень нравится (кроме баз данных, всё нравиться пока)

С SQL Server 2005 и базы данных понравятся


---
см.: TaskRunner, PopupWindow, Html2XmlConverter, Win32ResourceManager, MenuBuilder, Lens .


данное сообщение получено с www.gotdotnet.ru
ссылка на оригинальное сообщение
Re: компиляторы..... или помогите начинающему...
От: Mab Россия http://shade.msu.ru/~mab
Дата: 29.01.06 10:41
Оценка:
Здравствуйте, arisman, Вы писали:

A>А есть ли компилятор, который компилировал сразу же в машинный код. Пусть при этом будет много минусов, точнее, наверное, не будет работать отражение или какие-нибудь другие операции с аттрибутами, я не знаю, но это бы гарантировало "сохранение собст. труда".

Поиск по форуму по ключевому слову "обфуксатор" (obfuscator) даст ответ.

A>1. Я прочёл, что прога после первого запуска компилируется с помощью jit в машинный код. Где же тогда храняться метаданные или инфа о них уничтожается .

Из того, что происходит преобразование MSIL->native вовсе не следует, что одновременно должно что-то уничтожаться

A>2. Так же прочёл: можно сделать программу, которая бы каждый раз при запуске проходила jit, а можно сделать, чтобы это происходило только при первом запуске. 2-ое естественно быстрее, наверное, не на много. Но, если это так, то как..????

Что именно "так, то как"? Если сборку обработать ngen-ом, то где-то в глубинах %WINDIR%\Assembly появится ее native-версия. Соответственно, запуск кода в ней будет происходить быстрее.
Re: компиляторы..... или помогите начинающему...
От: Alexander__S  
Дата: 29.01.06 10:54
Оценка:
Здравствуйте, arisman, Вы писали:

A>Недавно увидел в инете прогу — восстанавливает из exe-шника, скомпилированного в .NET его исходный код.


A>Впринципе, если взять тот же ildasm и посмотреть ll код, то даже начинающему (мне) становиться понятна основная логика простой программы. При дальнейшем изучение msil думаю, что можно запросто разбирать более сложные вещи...


A>А есть ли компилятор, который компилировал сразу же в машинный код. Пусть при этом будет много минусов, точнее, наверное, не будет работать отражение или какие-нибудь другие операции с аттрибутами, я не знаю, но это бы гарантировало "сохранение собст. труда".


Ну что тут сказать... Все-таки фускация не спасет. Рассмотрите возможность реализации наиболее важных алгоритмов в native-модулях.

A>Ещё, если не сложно, помогите немного разобраться.

A>1. Я прочёл, что прога после первого запуска компилируется с помощью jit в машинный код. Где же тогда храняться метаданные или инфа о них уничтожается .

Да ничего не не уничтожается. Метаданные как хранились в манифесте управлямой сборки, так и будут храниться. Для каждого инициализированного типа CLR хранит указатель на таблицу методов этого типа. Каждая запись таблицы изначально хранит указатель на функцию-заглушку, которая вызывает процедуру JIT-а для компиляции метода (PreStubWorker). После того, как метод откомпилирован в машинный код, заглушка переписывается на jmp по адресу сгенерированного кода. Такой подход имеет очень много плюсов: JIT во время компиляции может выполнять различные оптимизации в зависимости от текущей конфигурацией системы, размещать тела методов, учитывая динамику выполняемого приложения и т.д.

A>2. Так же прочёл: можно сделать программу, которая бы каждый раз при запуске проходила jit, а можно сделать, чтобы это происходило только при первом запуске. 2-ое естественно быстрее, наверное, не на много. Но, если это так, то как..????


Не совсем понял, про что говорится. Может быть, Вы читали об использовании ngen.exe, которая позволяет генрировать машинный образ сборки?
Re: компиляторы..... или помогите начинающему...
От: arisman  
Дата: 29.01.06 11:27
Оценка:
Спасибо за помощь
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.