473,385 Members | 1,727 Online
Bytes | Software Development & Data Engineering Community
Post Job

Home Posts Topics Members FAQ

Join Bytes to post your question to a community of 473,385 software developers and data experts.

Need built in obfuscation support in C# compiler

I made the suggestion "Need built in obfuscation support in C# compiler" to
Microsoft. Anyone here agree with me? If yes, please cast your vote on this
suggestion to raise its priority.
Nov 16 '05 #1
13 2087
Agreed.

"vincent" <vi*****@discussions.microsoft.com> wrote in message
news:BF**********************************@microsof t.com...
I made the suggestion "Need built in obfuscation support in C# compiler" to Microsoft. Anyone here agree with me? If yes, please cast your vote on this suggestion to raise its priority.

Nov 16 '05 #2
vincent wrote:
I made the suggestion "Need built in obfuscation support in C# compiler" to
Microsoft. Anyone here agree with me? If yes, please cast your vote on this
suggestion to raise its priority.


I'll agree with that.

Nov 16 '05 #3
vincent <vi*****@discussions.microsoft.com> wrote:
I made the suggestion "Need built in obfuscation support in C# compiler" to
Microsoft. Anyone here agree with me? If yes, please cast your vote on this
suggestion to raise its priority.


Why on earth should it be part of the C# compiler? That means you've
got to have another obfuscator as part of the VB.NET compiler, and
another as part of the MC++ compiler - assuming that they're just as
worthy of obfuscation.

Having a single obfuscator which works with assemblies rather than
source is much simpler, IMO.

--
Jon Skeet - <sk***@pobox.com>
http://www.pobox.com/~skeet
If replying to the group, please do not mail me too
Nov 16 '05 #4
vincent wrote:
I made the suggestion "Need built in obfuscation support in C# compiler" to


What technical problems would that solve?

Which specific features could an in-compiler implementation have, that a
separate obfuscater cannot?

--
Helge
Nov 16 '05 #5
Hi,

Agreed, What make more sense is to add obfuscation as part of the assembly
generation, the compiler compile the code as today and later (if a flag is
provided) invoke the obfuscation.
Now it's not trivial thing to do, as the obfuscation cannot be complete, you
have to leave the public symbols intact , a similar thing would need to be
done with the protected ones, only the private symbols can be obfuscated.

I think that maybe this is the reason why it was not included from the
beginning.

Maybe the best solution is leave it as it's today but provide a strong
obfuscator with the SDK, integrated with the IDE and put obfuscation as a
project property. in this way you can obfuscate a project output easily.

I guess this will be today's most posted thread :)

Cheers,

--
Ignacio Machin,
ignacio.machin AT dot.state.fl.us
Florida Department Of Transportation

"Jon Skeet [C# MVP]" <sk***@pobox.com> wrote in message
news:MP************************@msnews.microsoft.c om...
vincent <vi*****@discussions.microsoft.com> wrote:
I made the suggestion "Need built in obfuscation support in C# compiler"
to
Microsoft. Anyone here agree with me? If yes, please cast your vote on
this
suggestion to raise its priority.


Why on earth should it be part of the C# compiler? That means you've
got to have another obfuscator as part of the VB.NET compiler, and
another as part of the MC++ compiler - assuming that they're just as
worthy of obfuscation.

Having a single obfuscator which works with assemblies rather than
source is much simpler, IMO.

--
Jon Skeet - <sk***@pobox.com>
http://www.pobox.com/~skeet
If replying to the group, please do not mail me too

Nov 16 '05 #6
"Jon Skeet [C# MVP]" wrote:
vincent <vi*****@discussions.microsoft.com> wrote:
I made the suggestion "Need built in obfuscation support in C# compiler" to
Microsoft. Anyone here agree with me? If yes, please cast your vote on this
suggestion to raise its priority.


Why on earth should it be part of the C# compiler? That means you've
got to have another obfuscator as part of the VB.NET compiler, and
another as part of the MC++ compiler - assuming that they're just as
worthy of obfuscation.

Having a single obfuscator which works with assemblies rather than
source is much simpler, IMO.

--
Jon Skeet - <sk***@pobox.com>
http://www.pobox.com/~skeet
If replying to the group, please do not mail me too


Here is my whole point, you may did not read my suggestion:

I strongly suggest to provide built-in obfuscation support in C# compiler,
here are the reasons:

1. Shipping a commercial product without minimum protection is unacceptable.
2. Current third party obfuscator all could get your final release broken,
you lose confidence on your own product. And if the tools you use has bug,
you will have more trouble.
3. The current obfuscator make it a very hard job to deliver a patch
assembly, you have to keep track what you did before. Once you lose the
mapping you used, you cannot deliver a patch any more. The easy deployment
features from .Net are totally lost with current obfuscation.
4. I believe the compiler knows the program better than any other third
party tools; it sure can do a better and safer job, and release the
obfuscation burden from developer.

My suggestion is to add a key based obfuscation option to the C# compiler,
it is up to you to turn it on or off. As long as you use the same key to
compile your entire solution, no matter how may times you do, the public
types always have the same obfuscated name, you don’t have to worry about
delivering a patch later on. The only thing you have to keep in mind is the
key, and I think is easy to do.
Nov 16 '05 #7
Vincent <Vi*****@discussions.microsoft.com> wrote:
"Jon Skeet [C# MVP]" wrote:
vincent <vi*****@discussions.microsoft.com> wrote:
I made the suggestion "Need built in obfuscation support in C# compiler" to
Microsoft. Anyone here agree with me? If yes, please cast your vote on this
suggestion to raise its priority.
Why on earth should it be part of the C# compiler? That means you've
got to have another obfuscator as part of the VB.NET compiler, and
another as part of the MC++ compiler - assuming that they're just as
worthy of obfuscation.

Having a single obfuscator which works with assemblies rather than
source is much simpler, IMO.


Here is my whole point, you may did not read my suggestion:


I read your suggestion, but your post doesn't address my objection
except for point 4:
4. I believe the compiler knows the program better than any other third
party tools; it sure can do a better and safer job, and release the
obfuscation burden from developer.


What part of the code do you think the compiler knows better than
something which has access to just the compiled assembly and debug
information, which is also useful to an obfuscator? (The distinction
between 3rd party and 1st party is irrelevant, IMO. MS could write an
obfuscator which operated on assemblies - please address that scenario
to avoid red herrings.)

By the way, there are companies that *do* ship without any protection.
I don't think it's nearly as big an issue really as many people
perceive it to be.

--
Jon Skeet - <sk***@pobox.com>
http://www.pobox.com/~skeet
If replying to the group, please do not mail me too
Nov 16 '05 #8
OK. If you don't agree with me, that's fine. I am not trying to triger a war
on this issue; I just want to make our developer's life a little bit easier.
The dofuscator solution does not satisfy me, especially when you want to
deliver a patch assembly, which is shared by lots of .exe files.

"Jon Skeet [C# MVP]" wrote:
Vincent <Vi*****@discussions.microsoft.com> wrote:
"Jon Skeet [C# MVP]" wrote:
vincent <vi*****@discussions.microsoft.com> wrote:
> I made the suggestion "Need built in obfuscation support in C# compiler" to
> Microsoft. Anyone here agree with me? If yes, please cast your vote on this
> suggestion to raise its priority.

Why on earth should it be part of the C# compiler? That means you've
got to have another obfuscator as part of the VB.NET compiler, and
another as part of the MC++ compiler - assuming that they're just as
worthy of obfuscation.

Having a single obfuscator which works with assemblies rather than
source is much simpler, IMO.


Here is my whole point, you may did not read my suggestion:


I read your suggestion, but your post doesn't address my objection
except for point 4:
4. I believe the compiler knows the program better than any other third
party tools; it sure can do a better and safer job, and release the
obfuscation burden from developer.


What part of the code do you think the compiler knows better than
something which has access to just the compiled assembly and debug
information, which is also useful to an obfuscator? (The distinction
between 3rd party and 1st party is irrelevant, IMO. MS could write an
obfuscator which operated on assemblies - please address that scenario
to avoid red herrings.)

By the way, there are companies that *do* ship without any protection.
I don't think it's nearly as big an issue really as many people
perceive it to be.

--
Jon Skeet - <sk***@pobox.com>
http://www.pobox.com/~skeet
If replying to the group, please do not mail me too

Nov 16 '05 #9
Here is the link to my suggestion:

http://lab.msdn.microsoft.com/produc...b-81e8c76173d6
"Helge Jensen" wrote:
vincent wrote:
I made the suggestion "Need built in obfuscation support in C# compiler" to


What technical problems would that solve?

Which specific features could an in-compiler implementation have, that a
separate obfuscater cannot?

--
Helge

Nov 16 '05 #10
I think what others are saying is you don't need obfuscation in the high
language level as obfuscators work at the IL level. So one common
obfuscator can be used for any IL regardless of the language. What your
really asking for (I think) is a good embedded/supported obfuscator in VS.
As you know, it ships with a community one. You can decide if it is good or
not. It is mainly a teaser to get you to buy their "real" product. That
said, I tend to agree with you. Some things can be left to third parties
and cottage industry. Some things should be shipped and tested with the
product and supported and be a first class citizen in the whole VS/CLR
combo. I think this is one of the things, but others may not agree.
Naturally, the obfuscator companies would have major heart attack over that.

--
William Stacey, MVP
http://mvp.support.microsoft.com

"vincent" <vi*****@discussions.microsoft.com> wrote in message
news:3E**********************************@microsof t.com...
Here is the link to my suggestion:

http://lab.msdn.microsoft.com/produc...b-81e8c76173d6

"Helge Jensen" wrote:
vincent wrote:
I made the suggestion "Need built in obfuscation support in C#
compiler" to
What technical problems would that solve?

Which specific features could an in-compiler implementation have, that a
separate obfuscater cannot?

--
Helge


Nov 16 '05 #11
vincent wrote:
Here is the link to my suggestion:
http://lab.msdn.microsoft.com/produc...b-81e8c76173d6


Thanks for the pointer.

I see the basic problem you have with a non-compiler-builtin obfuscator as:

"current obfuscator make it a very hard job to deliver a patch assembly"

But I do not understand why you think your suggestion:

"a key based obfuscation"

would not be just as viable for a non-compiler-builtin obfuscator.

Couldn't your permise:

"As long as you use the same key to compile [obfuscate] your entire
solution"

just as easily be applied to the obfuscation-step as the compilation step?

It sounds a little bit like wishing for the coffee machine to make toast
too, even though the coffe-machine and toaster function very well each
by themselves.

--
Helge
Nov 16 '05 #12


"Helge Jensen" wrote:
vincent wrote:
Here is the link to my suggestion:
http://lab.msdn.microsoft.com/produc...b-81e8c76173d6


Thanks for the pointer.

I see the basic problem you have with a non-compiler-builtin obfuscator as:

"current obfuscator make it a very hard job to deliver a patch assembly"

But I do not understand why you think your suggestion:

"a key based obfuscation"

would not be just as viable for a non-compiler-builtin obfuscator.

Couldn't your permise:

"As long as you use the same key to compile [obfuscate] your entire
solution"

just as easily be applied to the obfuscation-step as the compilation step?

It sounds a little bit like wishing for the coffee machine to make toast
too, even though the coffe-machine and toaster function very well each
by themselves.

--
Helge

I know the obfuscator can do, if it wants, what I suggested , but if the
compiler can support it, you have the following extra benefit:

1. save time and money on integrating a third party product.
2. less chance to have bug, we don't see much bugs in a compiler, right ?
3. C# language is pretty new, and changing, so bfuscators have to keep up
with new changes, there could be a lag that will affect your project.
Nov 16 '05 #13
Vincent <Vi*****@discussions.microsoft.com> wrote:
I know the obfuscator can do, if it wants, what I suggested , but if the
compiler can support it, you have the following extra benefit:

1. save time and money on integrating a third party product.
Again, that's a red-herring - the issue of "third party or built by
MS" is separate from "put it in the compiler or make it work on IL".

Making it separate is what saves time, because MS would only have to do
it once rather than three times (once for MC++, once for VB.NET, once
for C#).
2. less chance to have bug, we don't see much bugs in a compiler, right ?
But adding more and more to the compiler is going to make it more and
more complicated, leading to a greater likelihood of bugs.
3. C# language is pretty new, and changing, so bfuscators have to keep up
with new changes, there could be a lag that will affect your project.


It only has to keep up with the language if you build it into the
compiler. If you build it to work on IL, it only has to change when
*that* changes.

--
Jon Skeet - <sk***@pobox.com>
http://www.pobox.com/~skeet
If replying to the group, please do not mail me too
Nov 16 '05 #14

This thread has been closed and replies have been disabled. Please start a new discussion.

Similar topics

6
by: gong | last post by:
hi i recently looked at alexandrescu's book on c++, and i found it pretty much unintelligible. i have a few points which i wonder about. 1. as a developer, it is important, from a bottom line...
159
by: petantik | last post by:
Are there any commercial, or otherwise obfuscators for python source code or byte code and what are their relative advantages or disadvantages. I wonder because there are some byte code protection...
4
by: Ian Lazarus | last post by:
Why are constraints needed? In C++, an attempt to use a non-existing method will cause a compiler error. Isn't that true in C# also?
48
by: meyer | last post by:
Hi everyone, which compiler will Python 2.5 on Windows (Intel) be built with? I notice that Python 2.4 apparently has been built with the VS2003 toolkit compiler, and I read a post from Scott...
5
by: Vikas Kumar | last post by:
Hi, I'm not able to convert the following dll import statement in C# to VB.NET. Can any one please help me in this respect?
32
by: GK | last post by:
Hello, Can anybody suggest a best code obfuscation tool based on their exeperience ? (e.g.: testing effort after obfuscation is 0) thanks, GK
8
by: Jim Cobban | last post by:
I am writing a program in which I need a hash table implementation of a Map. The version of g++ available for Windo$e does not yet include the TR1 support for this. It just has the original SGI...
55
by: tonytech08 | last post by:
How valuable is it that class objects behave like built-in types? I appears that the whole "constructor doesn't return a value because they are called by the compiler" thing is to enable...
0
by: taylorcarr | last post by:
A Canon printer is a smart device known for being advanced, efficient, and reliable. It is designed for home, office, and hybrid workspace use and can also be used for a variety of purposes. However,...
0
by: Charles Arthur | last post by:
How do i turn on java script on a villaon, callus and itel keypad mobile phone
0
by: aa123db | last post by:
Variable and constants Use var or let for variables and const fror constants. Var foo ='bar'; Let foo ='bar';const baz ='bar'; Functions function $name$ ($parameters$) { } ...
0
by: ryjfgjl | last post by:
If we have dozens or hundreds of excel to import into the database, if we use the excel import function provided by database editors such as navicat, it will be extremely tedious and time-consuming...
0
by: emmanuelkatto | last post by:
Hi All, I am Emmanuel katto from Uganda. I want to ask what challenges you've faced while migrating a website to cloud. Please let me know. Thanks! Emmanuel
0
BarryA
by: BarryA | last post by:
What are the essential steps and strategies outlined in the Data Structures and Algorithms (DSA) roadmap for aspiring data scientists? How can individuals effectively utilize this roadmap to progress...
0
by: Hystou | last post by:
There are some requirements for setting up RAID: 1. The motherboard and BIOS support RAID configuration. 2. The motherboard has 2 or more available SATA protocol SSD/HDD slots (including MSATA, M.2...
0
marktang
by: marktang | last post by:
ONU (Optical Network Unit) is one of the key components for providing high-speed Internet services. Its primary function is to act as an endpoint device located at the user's premises. However,...
0
jinu1996
by: jinu1996 | last post by:
In today's digital age, having a compelling online presence is paramount for businesses aiming to thrive in a competitive landscape. At the heart of this digital strategy lies an intricately woven...

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.