.net reflector

0

Witam.

Na początku chciałbmy się przywitać, gdyż jestem tu nowy.
Jestem bardzo, bardzo początkujący programistą, więc proszę o wyrozumiałość ;-)

Jest pewien problem, który dręczy mnie od dawna i pomimo usilnych poszukiwań nie znalazłem jednoznacznej odpowiedzi.
Mainowicie chodzi o zabezpieczanie programów napisanych w MS Visual C# 2005 Express Edition przed dekompilacją w programach typu .net reflector.

Moje pytanie jest takie:
Czy można ustawić w opcjach MS Visual C# 2005 Express Edition coś takiego, żeby dekompilacja była niemożliwa. Tak jak to działa w programach napisach w C, gdzie jedyną możliwością jest dekompilacja w programach typu SoftICE do kodu assemblera.

Jeżeli nie można tego ustawić to prosiłbym o wytłumaczenie dlaczego.

Ostatnio rozmawiałm z osobą zajmującą się różnego rodziaju zabezpieczeniami, która powiedziała mi, że ja coś źle kompiluję, skoro można to otworzyć w .net reflector, tłumaczenie było takie, że podczas kompilacji program wykonywalny jest zapisywany do postaci binarnej (kod assemblera), z którego nie można odczytać w sposób jawny kodu programu.

Mam nadzieję, że opisałem to w miarę jasno ;-)

Z niecierpliwością oczekuję odpowiedzi.
Pozdrawiam,
Bartek.

0
http://www.dotnet247.com/247reference/msgs/57/289340.aspx napisał(a)

In AssemblyInfo.cs, add the following:

[assembly: ReflectionPermission(SecurityAction.RequestRefuse,
unrestricted=true)]

This will prevent any reflection calls using the standard .NET Framework APIs, but it won't prevent other native code based disassembler/decompiler, such as our .NET Explorer and Salamander Decompiler, or Microsoft's ILDASM utility. I am not sure whether it will work against Reflector.

0

Witam ponownie.

Dzięki za szybką odpowiedź, zrobiem tak ja to było opisane, ale niestety nie działa :-(
Może jakieś inne sugestie?

Pozdrawiam,
Bartek.

0

nie da rady, jedynie co możesz to zaciemnić kod - poszukaj pod hasłem obfuscator

0

Ostatnio rozmawiałm z osobą zajmującą się różnego rodziaju zabezpieczeniami, która powiedziała mi, że ja coś źle kompiluję, skoro można to otworzyć w .net reflector, tłumaczenie było takie, że podczas kompilacji program wykonywalny jest zapisywany do postaci binarnej (kod assemblera), z którego nie można odczytać w sposób jawny kodu programu.

To jest prawda, ale nie dotyczy to .NET - tutaj w trakcie kompilacji wszystko zapisywane jest do kodu pośredniego, nie do postaci maszynowej. A że z kodu pośredniego można wydobyć na podstawie różnych danych kod programu (nie zawsze jednak całkowicie w identycznej formie) to inna sprawa.

Popatrz na to też: http://www.preemptive.com/obfuscator.html

0

Wielkie dzięki za pomoc i wytłumaczenie problemu.

Pozdrawiam,
Bartek.

0

reflektor jest swietnym narzedziem - mozna sobie podejrzec implementacje oryginalnych systemowych bibliotek .NET i sie sporo dowiedziec... czasem poplakac, czasem usmiac. nawet nie wiecie ile zaczepistych i hiper przydatnych rzeczy tam siedzi tylko ma .. visibility 'internal'. a dla ciekawskich dorzuce jeszcze dekompilator Javy - Cavaj, czyli javac czytany wspak :) ma pewne problemy z wstawianiem zdekompiloawnych anonimowych klas z powrotem na miejsce -- ale to latwo przeskoczyc, ostatnio sobie applet jednego naszego ebanku zdekompilowalem i beczalem ze smiechu z kodow w stylu: if(!polaczenie.isValid()) TRACE("Sesja - KICHA!");

1 użytkowników online, w tym zalogowanych: 0, gości: 1