|
|
VooDoo
|
это шутка или сцылка в буфер другая попала?
|
|
|
Записан
|
Are you human? - My body is. Do you feel pain? - My body does. ..- --- --- -.. --- ---
|
|
|
|
iddqd
|
ух господа, давайте попробуем держаться одной обозначенной темы ато тут и паша лебедев, воющие псы, джефри рихтер, пхп, дельфи, ява, дотнет, обсуждение винды и почем майонез на рынке
|
|
|
Записан
|
|
|
|
alex-v
|
Кстати, плюс простых дотнетовских программ в том, что они после компиляции маленькие по размеру (екзешник несколько Кб)... вот только я больших проектов на C# не компилил, не знаю сколько у них екзешник весит.
И кстати не будем забывать про Java, что это интерпретатор какой-никакой, а значит работает медленнее, чем с++.
|
|
|
Записан
|
|
|
|
VooDoo
|
а на асме ещё быстрее будет работать чем на цпп
давайте приводить конкретные сравнения
|
|
|
Записан
|
Are you human? - My body is. Do you feel pain? - My body does. ..- --- --- -.. --- ---
|
|
|
iddqd
|
давайте о скорости работы виртульных машин спорить не будем. там важна быстрота и цена разработки, а каму медленно пусть платить больше либо за хард, либо за софт. то, что экзешники маленькие еще ничего не говорит, наверно у тебя не было никаких ембедэд ресурсов. мне нравится что дотнетовский байткод (с явой тоже ведь канает, верно?) можно легко дизасемблить и при желании получит с# аутпут, что иногда очень помогает в борьбе с чужыми либами.
|
|
|
Записан
|
|
|
|
VooDoo
|
Согласен. Очень легко декомпилится. Незнаю как обстоят дела с C# либами, но большинство джавовских либ фришные и сорцы лежат в свободном доступе. Частенько возникает потребность в том, что бы немного пофиксать какую-нить фичу в либе. Декомпильнул, пофиксал, пересобрал, положил... Красота.
|
|
|
Записан
|
Are you human? - My body is. Do you feel pain? - My body does. ..- --- --- -.. --- ---
|
|
|
iddqd
|
я как то по затупке с бадуна случайно удалил функцию, которую колбасил до этого примерно часа полтора. не спрашивайте как, чекина не было и отменить не работало. но бинарник с функционалом остался. рефлектором нашол этот метод, декомпильнул в c#, все красиво. тока названия переменных стали str1, int2 и т.д.
|
|
|
Записан
|
|
|
|
alex-v
|
Подскажите плиз как декомпилить дотнетовский екзешник. Что для этого надо? Может MSVS 2008?
|
|
|
Записан
|
|
|
|
|
|
VooDoo
|
я как то по затупке с бадуна случайно удалил функцию, которую колбасил до этого примерно часа полтора. не спрашивайте как, чекина не было и отменить не работало. но бинарник с функционалом остался. рефлектором нашол этот метод, декомпильнул в c#, все красиво. тока названия переменных стали str1, int2 и т.д. во как у вас всё сложно... у нас проще берёшь скомпиленный класс натравливаешь на него jad и получаешь сорцы. Причём все переменные и функции будут под своими именами.
|
|
|
Записан
|
Are you human? - My body is. Do you feel pain? - My body does. ..- --- --- -.. --- ---
|
|
|
alex-v
|
Кстати, в чём отличие готовых бинарных файлов для исполнения в Java и в C# ? Java - ведь интерпритатор байткода. А C# экзешник ведь готов сразу для исполнения под ОС, без всякой интерпритации. Это так? т.е. дотнетовские проги работают быстрее, чем Java ?
|
|
|
Записан
|
|
|
|
|
alex-v
|
А как? Поясните плиз (если можно подробнее).
|
|
|
Записан
|
|
|
|
spammer
|
во как у вас всё сложно... у нас проще берёшь скомпиленный класс натравливаешь на него jad и получаешь сорцы. Причём все переменные и функции будут под своими именами. обычно все серьезные продакшен-либы обфусцированы, а это иммено и дает при декомпиляции имена "a", "aa", "aaa", и другие не менее интуитивные названия
|
|
|
Записан
|
|
|
|
spammer
|
А как? Поясните плиз (если можно подробнее).
Java и С# по принципу работы они отличаются мало, родные экзешники не делают, обоим нужна прослойка в виде виртуальной машины
|
|
|
Записан
|
|
|
|
|
VooDoo
|
обычно все серьезные продакшен-либы обфусцированы, а это иммено и дает при декомпиляции имена "a", "aa", "aaa", и другие не менее интуитивные названия сколько в вашей жизни было серьёзных продакшенов? никто, никогда, ничего не обфусцирует. Я даже не могу себе этого представить... Особенно бедные support чуваки... если в log4j всегда строится логгер по Logger.getLogge(this.class) то в логах серьёзного продакшена мы получим кучу информативных мессаг типа [a] something... [aa] something... повторюсь... никто никогда не травит обфускатором Единственное 100% применение так это для J2ME ибо надо на всём экономить. Так что при сборке частенько включают обфускатор и верификатор
|
|
|
Записан
|
Are you human? - My body is. Do you feel pain? - My body does. ..- --- --- -.. --- ---
|
|
|
spammer
|
обычно все серьезные продакшен-либы обфусцированы, а это иммено и дает при декомпиляции имена "a", "aa", "aaa", и другие не менее интуитивные названия сколько в вашей жизни было серьёзных продакшенов? никто, никогда, ничего не обфусцирует. Я даже не могу себе этого представить... Особенно бедные support чуваки... если в log4j всегда строится логгер по Logger.getLogge(this.class) то в логах серьёзного продакшена мы получим кучу информативных мессаг типа [a] something... [aa] something... повторюсь... никто никогда не травит обфускатором Единственное 100% применение так это для J2ME ибо надо на всём экономить. Так что при сборке частенько включают обфускатор и верификатор еще как травят, если софт не опен сорс. сплошь и рядом такое встречаю. я бы сказал что необфусцированый код это скорее исключение, чем правило. кстати аутпут логгера можно натроить не на имя класса
|
|
|
Записан
|
|
|
|
VooDoo
|
примеры в студию даже weblogic или дрова оракловые всё открытое. так и если свалится со стэкстрэйсом, как понять что к чему? и при сборе в несколько джаров, как всё разрулится? Да и засудят в два счёта, если кто-то захочет заюзать код log4j можно крутить как угодно, просто обычно делают так.
|
|
« Последнее редактирование: 08 Февраль 2009, 02:18:43 от VooDoo »
|
Записан
|
Are you human? - My body is. Do you feel pain? - My body does. ..- --- --- -.. --- ---
|
|
|
spammer
|
Примеры: xml-редактор Oxygen. Применена такая схема: api открыто, все остальное А_, B_ и даже C_ ActiveVOS - BPEL-система, та же история. так и если свалится со стэкстрэйсом, как понять что к чему? у девелоперов то все открыто, а юзера и не надо ничего фиксить - он шлет стектрейс (утрирую ), а там уже смотрят что делать и при сборе в несколько джаров, как всё разрулится? хз, а какие проблемы могут быть? Да и засудят в два счёта, если кто-то захочет заюзать код скажем так обфускация - это как профилактика, а не непосредственно лечение
|
|
« Последнее редактирование: 08 Февраль 2009, 09:21:32 от spammer »
|
Записан
|
|
|
|
VooDoo
|
у девелоперов то все открыто, а юзера и не надо ничего фиксить - он шлет стектрейс (утрирую ), а там уже смотрят что делать ну... правильно. Пришлёт он мылом стэк трэйс а там... AAAAAAAAAAA_ caused by AAAA.aa : 69 AAAAA.aaa :23 и т.д. я такое даже смотреть бы не стал хз, а какие проблемы могут быть? ну собирается аппликация из нескольких модулей, каждый из них будет после выхлопа обфускатора. В итоге в каждом модуле получим классы типа A.AA.AAAA . Т.е. с однаковым пэкеджем и именем. Как потом класслоадеру понять что грузить? Посмотрел этот oxygen какие-то они слишком алчные. Юзают кучу фришных либ и ещё что-то скрывают... При том не всё, а просто какие-то куски. Вполне может быть что это чьи-то куски, вот и закрывают что бы никто не догадался
|
|
|
Записан
|
Are you human? - My body is. Do you feel pain? - My body does. ..- --- --- -.. --- ---
|
|
|
spammer
|
я такое даже смотреть бы не стал
Я думаю тулы есть чтобы привести это к нормальному виду. У девелоперов ведь имеется маппинг обфусцированного кода на нормальный для конкретного билда. ну собирается аппликация из нескольких модулей, каждый из них будет после выхлопа обфускатора. В итоге в каждом модуле получим классы типа A.AA.AAAA . Т.е. с однаковым пэкеджем и именем. Как потом класслоадеру понять что грузить?
Тоже думаю как-то эта проблема решена. Например строится полная мапа пакетов всех модулей, и потом они обфусцируются все вместе, а не по очереди. Или использовать разные класслоадеры для внутренних классов модулей, как в OSGi. Я особо не вникал в технологию, так что точно сказать не могу. Посмотрел этот oxygen какие-то они слишком алчные. Юзают кучу фришных либ и ещё что-то скрывают... При том не всё, а просто какие-то куски. Вполне может быть что это чьи-то куски, вот и закрывают что бы никто не догадался Хорошая кстати идея - воровать чужой код и обфусцировать его, чтобы не догадались
|
|
« Последнее редактирование: 08 Февраль 2009, 14:44:12 от spammer »
|
Записан
|
|
|
|
SVSH
|
Кстати, в чём отличие готовых бинарных файлов для исполнения в Java и в C# ? Java - ведь интерпритатор байткода. А C# экзешник ведь готов сразу для исполнения под ОС, без всякой интерпритации. Это так? т.е. дотнетовские проги работают быстрее, чем Java ?
C# вроди можно при желании заставить генерировать нативный код, но по умолчанию получается байт код. У явы тоже. Но .Net перед исполнением байт кода компилирует его в нативный и нативный выполняется. Это называется Just in time compilation. У явы такого, насколько я знаю, нету.
|
|
|
Записан
|
|
|
|
alex-v
|
C# вроди можно при желании заставить генерировать нативный код, но по умолчанию получается байт код. У явы тоже. Но .Net перед исполнением байт кода компилирует его в нативный и нативный выполняется. Это называется Just in time compilation. У явы такого, насколько я знаю, нету.
А я слышал, что JIT-компиляция используется и в Java. Википедия в подтверждение - http://ru.wikipedia.org/wiki/JIT
|
|
|
Записан
|
|
|
|
Victor_K
Per Aspera Ad Astra
Гродненец
Репутация: +5/-0
Offline
Пол:
Сообщений: 124
Per Aspera Ad Astra
|
Работаю с C# c 2001 года. Могу сказать, что данный язык довольно таки удобен, как для создания Web-приложений, так и для системных, офисных и мобильных. Основных платформ .Net существует две - Microsoft Framework.Net и Mono.Net (Sun)/ Причем они имеют некоторую совместимость, т.е. что создано под Framework.Net (v.1.1-v.3.5)? то работает под Mono.Net (v.2.x). Дополнительно Mono - платформа, которая может базироваться как в Windows, так и Unix системах (Linux, BSD, MacOS...). Вообще данные платформы имеют достаточно развитый инструментарий и позволяют получать относительно компактный код. На сегодня есть проекты (при чем достаточно много), в которых совмещены Java и .Net. Это дает отличный эффект. Кто не знает .net и пользуется Java - может пользоваться данными и объектами из .net приложений. Очень удобные средства .net - это remoting, serialization и linq. Если пользоваться ими, то многое, чему учат в школе, окажется просто ненужной информацией.
|
|
|
Записан
|
|
|
|
|
|