|
|
Hello,
I'm currently looking into obfuscation and protection schemes for .Net based projects and stumbled on something called .Net Reactor today (http://www.eziriz.com/[^]) and I would like your thoughts about it, especially if you have some experience with it.
Also, if someone with experience in this field can spare some time writing a few lines with do's and dont's regarding .Net code protection I would be grateful.
Thanks in advance,
|
|
|
|
|
Do protect your application if there really is some IP there to protect.
Don't bother if there isn't. Generally this is the case - any cool idea you have is going to be in what the app does, not how its coded...
We don't obfuscate any of our products yet - theres just no point. If someone wants to duplicate your program then they will, from scratch. They aren't going to risk looking at your code, because that will contaminate their devs. If its that good an idea they'll do it clean room, and theres nothing your obfuscator can do
Staying ahead of the game is a better strategy
|
|
|
|
|
Thanks for the input, it's made me think again about using obfuscation and such things.
That said, is it possible to protect (or at least make it harder) against circumventing a time restriction or similar sharware-related limitations in a .Net application? I'd have to say 'no', but please prove me wrong
Thanks,
|
|
|
|
|
Well an obfuscator would certainly help there. That said you have to ask yourself how many users are likely to try to edit the IL in your assemblies to bypass a trial period.
If their time is that worthless to them, well they probably can't afford to pay anyway.
We don't bother with any serious protection on our software for that reason. Our main product we give out free for non-commercial use - a few businesses have used the free one on the side, but got a license after they shipped (usually in their project implementation review... "Is there anything we forgot?"... oh software licenses!).
|
|
|
|
|
Thanks for the input. Have a good weekend.
|
|
|
|
|
No worries mate, you too.
|
|
|
|
|
I'm working on a WCF service project that creates a listener thread for TCP messages, and everything appears to work just fine except for shutting down the service. Here's a simple example that illustrates the problem:
[ServiceBehavior(InstanceContextMode = InstanceContextMode.Single,ConcurrencyMode=ConcurrencyMode.Multiple)]
public class Service1 : IService1, IDisposable
{
private void ThreadFn()
{
bool b = true;
while(b)
{
//do something
Thread.Sleep(1000);
}
}
private Thread m_Thread;
public Service1()
{
m_Thread = new Thread(new ThreadStart(this.ThreadFn));
m_Thread.Start();
}
public void Dispose()
{
m_Thread.Abort();
}
~Service1()
{
Dispose();
}
}
As you can see, this is a singleton service that creates a thread when the host starts, and kills the thread when the service is disposed. Unfortunately, there does not seem to be any way to reliably detect when a service is unloaded by the host. I've tried binding to the AppDomain.Unload and AppDomain.HostProcessExit events, however if Visual Studio hosts the service, these events are never fired. I've also tried creating a custom IInstanceProvider, but this only tells me when a method invocation is performed, and even then only when the InstanceContextMode is changed from Single. I want to be able to move the service into different hosting frameworks, so I'd like a solution that is an generic as possible. Does anyone have any suggestions?
Thanks,
Chris
|
|
|
|
|
I would like to compile my vb.net 2005 solution using MSBuild. I am running the command on the solution (.sln) file and it runs without errors, unfortunately it doesn't seem to be compiling the setup/deployment projects which are part of the solution, one is a merge module whilst the other is a windows deployment project. What can i do to make msbuild work for me?
Your assistance is greatly appreciated.
|
|
|
|
|
MSBuild doesn't know how to build VS deployment projects. Upgrading to VS2008 won't help you either. The only option is to run VS through the command line with the appropriate switches. In your command prompt (assuming VS is in your path), run "devenv.exe /?" for the list of switches.
Scott.
—In just two days, tomorrow will be yesterday.
—Hey, hey, hey. Don't be mean. We don't have to be mean because, remember, no matter where you go, there you are. - Buckaroo Banzai
[ Forum Guidelines] [ Articles] [ Blog]
|
|
|
|
|
I feel I am going in circles with this one. I have seen various posts on
this matter but I can not get them to work. I have a 2.0 client app that
needs to access a web service secured behind an apache server that requires
client certificates. I have tried
webService.ClientCertificates.Add(new X509Certificate("c:\\temp\\xxx.cer",
"password"));
with various variations of certificates, formats, etc. I always get "The
request was aborted: Could not create SSL/TLS secure channel." But...if I
import the certificate using Internet Explorer everythings works just fine.
I just can't get it to work by adding the client certificates at runtime.
Whats the trick to get it to work without importing the certificate into a
store?
|
|
|
|
|
JoeJoe101 wrote: Whats the trick to get it to work without importing the certificate into a
store?
Check this out[^]
led mike
|
|
|
|
|
|
It's been a long time, but it's probably best to follow Microsoft's step-by-step[^] guide.
This[^] is also useful.
Take care,
Tom
-----------------------------------------------
Check out my blog at http://tjoe.wordpress.com
|
|
|
|
|
Hello!
I have a TCP/IP-Server, that listens for connections from a electronic device.
The device connects to the server and the server build another IP-Connection to the electronic.
It may happen, that the electronic has to reboot and cannot close the connection properly.
The server has a connection-watchdog, that checks when the last message came in from the electronic and tries to close the connection if the electronic didn´t send a message since a certain time.
Since the electronic cannot answer this close-request the connection seems to remain open, at least that´s what "netstat" tells me ("Wait for FIN", or "Last message was ACK").
Also it may happen, that the electronic tries to connect again, but then the server send´s just an "ACK" instead of "SYN/ACK", what makes the electronic retry to open the connection with "SYN". (Traced with WireShark)
Is there a way to force the closing the connection, clear the open/waiting ports and enable the server to accept a new connection from the same electronic on the same port from the same IP?
Thanks
J.
|
|
|
|
|
Yikes. No way to configure the device to use something easier like UDP?
Going to be a massive pain to hook that deep into the network stack :/
|
|
|
|
|
Unfortunately not. We do not have access to the electronic´s firmware, so we cannot change the protocol in any way...
|
|
|
|
|
J. Holzer wrote: the server build another IP-Connection
Have you looked at the documentation for Winsock2[^]? Things like calling setsockopt for SO_KEEPALIVE can return errors when the connection is down.
led mike
|
|
|
|
|
I have a COM callable assembly, that when registered using a Setup project, does not appear in the COM References list in .NET, nor does it appear in the References list in the MS Access VBA Reference list. However, I can create and use the object using CreateObject in VBA.
What could be wrong here?
|
|
|
|
|
Brady Kelly wrote: What could be wrong here?
Could be that registering a component in COM does not make it appear in the lists provided by any particular software, like MS Access. Could be you have to tell Access to add the component to it's list.
led mike
|
|
|
|
|
No. On previous occasions only registering the component was required. VS also lists all nearly all registered COM servers.
|
|
|
|
|
Brady Kelly wrote: No.
Ok. If that's true then another obvious "could be" is the setup is not creating a piece of meta data that is used to build those lists.
Brady Kelly wrote: VS also lists all nearly all registered COM servers.
"nearly all"? Do you mean all but yours, the one you are interested in or are there others not listed as well?
led mike
|
|
|
|
|
led mike wrote: Ok. If that's true then another obvious "could be" is the setup is not creating a piece of meta data that is used to build those lists.
Yes, and it is this that I am at a loss to begin to diagnose. It's too low a priority tonight, as the library can still be used, but I'll definitely really look deeply into it tomorrow. If it wasn't for a birthday party on Saturday it could even end up a whole weekend mission.
led mike wrote: "nearly all"? Do you mean all but yours, the one you are interested in or are there others not listed as well?
So far I've only encountered mine being missing, but it's been years since I authored any, or used many, COM components before this one. One I did earlier this week appeared in the lists.
|
|
|
|
|
I've been using the FtpWebRequest to download a lot of files via ftp..
However I've just added a new site to the list and I'm getting the following error
"The remote server returned an error: (550) File unavailable (e.g., file not found, no access)."
If I use the URI that I'm passing to the ftp webrequest in internet explorer it seems quite happy with it, the only difference I see between this site and others that I've used is the user name is in the form
username@online2.something.com
I can log in using the windows command line ftp client.
Can anyone tell me how to procede with investigating this problem ? have you seen anything similar?
Sean
|
|
|
|
|
Do you have access to the server logs? The server configuration? If it's Microsoft's IIS FTP server, setting the logging to include the Win32 status can also help give more information.
Failing that, can you get a trace of a working and a non-working session to the same server using a network trace tool such as Wireshark?
DoEvents: Generating unexpected recursion since 1991
|
|
|
|