Closed. This question needs to be more focused. It is not currently accepting answers.
Want to improve this question? Update the question so it focuses on one problem only by editing this post.
Closed 7 years ago.
Improve this question
I'm developing a .Net class library (a data provider) and I'm starting to think about how I would handle licensing the library to prospective purchasers. By licensing, I mean the mechanics of trying to prevent my library from being used by those who haven't purchased it, not the software license (i.e., Apache, Gnu, etc).
I've never dealt with licensing, and in the past, I've always developed apps, not libraries. I don't want to make things difficult for my customers; know it is not possible to make it ironclad. Just some mechanism that gives me decent protection without making the customer jump through hoops or gnash their teeth.
I think the mechanism would check for a valid license when the class is being used in development mode, and not in runtime mode (when the customer's software is released to their customers). I think libraries are typically sold per developer, but I'm not sure how that could be accomplished without making the mechanism odious for my customers; maybe that gets left to the honor system.
I Googled this and found many approaches. Ideally, I'd like to do something that is generally accepted and common, the "right" way class libraries are licensed, if that exists, rather than making my customers deal with yet another license mechanism. A firm push in the right direction will be greatly appreciated!
This is the .NET supplied solution
http://www.ddj.com/web-development/184416695
When your client instantiates your class library, you would in your constructor code check for licensing. If the vendor does not have a valid/missing license, then you can throw a licensing exception. This would prevent someone from using your class/library. You should only do this once such that if the licensing is valid in one class, all your other classes would skip the licensing check.
Related
Closed. This question needs to be more focused. It is not currently accepting answers.
Want to improve this question? Update the question so it focuses on one problem only by editing this post.
Closed 4 years ago.
Improve this question
I'm currently working on a .NET Core 2.1 application in C#. I want to protect my application source code from copy piracy. In general, I know that C# can fairly easy be reverse engineered. I need to ship my final software product to the customer, but I don't want anybody to read my source code. The software will be installed on a Windows Server, I cannot provide remote access as it is hosted in a closed environment (no internet there).
How can I protect my software from reverse engineering?
What do you do or which tools and frameworks do you use to secure your .NET Core 2.1 source code from piracy in 2018?
Is it still worth it to obfuscate your code?
Should I rather just write a secure library for my business logic in C++?
Thanks for sharing some ideas!
Is it still worth it to obfuscate your code?
This is a matter of opinion, but in my opinion, no, it's not worth it.
Have you ever tried decompiling .NET code? Sure, it can be done with tools like JustDecompile, but it doesn't decompile into your original source code. It's actually quite difficult to read. Give it a try.
Even C++ can be "decompiled", although yes, it's even harder to read.
But the bottom line is this: if someone really wants to reverse engineer your code, they can do it and there's nothing you can do to stop them.
In two words, You can't
In more words
There are things that will constrain your application to certain conditions as can be using hardware keys or network boundaries
Take a look
Protect .NET code from reverse engineering?
In a word, no. But you can use a code obfuscator, and if you are really intent, going into unmanaged code and trapping the debug interrupt.
I am assuming you need to protect trade secrets. The use of non-compete agreements protect you to a large extent, along with contracts.
You will almost certainly be protected from all but the most determined with the above safeguards.
Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 6 years ago.
Improve this question
Referring to this question that's already been answer:
"What is the best local-database solution for WPF applications?"
What is currently my best choice of local database for my program? Currently I am using XML that is automatically created on the computer when the user run my executable for the first time or when the XML is missing.
I am perfectly fine on using XMLs, users of my application would not be required to install any software other than my application and I can do exactly with it, but my problem is with searching.
My application includes a database (the XML) of all their songs in their music library, and of course each track has its own information and search through each track is really slow! since it's a music library, one user can have at least 1000 tracks or more and searching through it is really really terrible.
I am familiar on using SQL database, (i don't know the proper term for it) but one for online database, I use XAMPP and read the database on a website on PHP. And i really like it. So..
Basically, I am looking for a good local-database solution, where user's won't to download and install any other software (but I am okay, if i would have to include a certain dll to my exe in other to run), and also one that is lightweight and fast in terms of searching.
Yes, i've read the included related question as many times as i could for me to understand it myself but i hope someone can explain the advantages and disad of each of them.
No, i am not looking for one that needs to have a server or something in order for it to work
Previous suggestion is correct SQLite will be your best option because WPF operates .NET Framework. It also supports ODBC driver as i recall
I was going to just comment but can't quite yet.
I wouldn't say there's necessarily a 'best' in most cases. In general whatever you go with is unlikely to be that bad of a choice..
Having said that, I could suggest SQLite as an option for you. Lightweight, very fast, certainly good for strictly local-database options.
Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 9 years ago.
Improve this question
I guess what I'm asking is running my application under Mono going to be notably bad for performance? Note that the application is not meant to do or require anything other than access to a local relational database (probably MySQL).
Edit: The application is meant to do in-memory work with data queried from the database. The database itself should not be a bottleneck.
Also, the 'work' will be multi-threaded and (must be anticipated to be) as much "parallel" as "serial", if that makes sense...
Edit 2: Profiling hasn't yet been done as the product is only now coming out of a long planning phase to begin development, but the plan was made with anticipation of likely use making this mostly memory-intensive by design (so as to eventually allow the database itself to be made to do as much work as possible, ideally). However, cases of "serial" work (i.e. number crunching) must be expected to occur by design, but my goal is to eliminate these cases as much as possible.
Edit 3: By number crunching, I mean literally any math formula serialized into the database and called into use for representing some kind of abstract data. Most of my (eventual) work will be to minimize this, however.
Your question indicates that you assume that Mono is some kind of .NET emulation, like wine is a Win32 emulation. This is not the case.
Mono is a native implementation of the .NET framework, so there is no reason why it should be fundamentally and/or generally slower than the implementation of the .NET framework on Windows.
It is a bad idea. I ported my application to mono and it doesn't work well:
1. Mono is not stable when it comes to threads (try to load many threads and see how it goes down)
2. Mono does not behave as expected with Forms
3. You are building CPU intensive app and Mono is very slow (as well as .NET) so use cpp, Python or something else.
Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 5 years ago.
Improve this question
What I want to be able to accomplish is to silently uninstall any installed anti-virus software (I know it sounds like I will be making a virus but I'm not).
according to Microsoft guidelines every program that properly installs itself makes a registry entry in HKLM\Software\Microsoft\Windows\CurrentVersion\Uninstall. Usually, the key for the program will be its GUID, or else the name of the program. Within that key will be an entry called UninstallString so I just have to run that string in cmd I guess.
But I have never worked on anything like this before, since I am brainstorming if I will even attempt to do it find out how more experienced developers might approach it.
This is just not going to work out.
Regardless of how pure your motives may be (and I'll admit, I'm still rather suspect, despite your assurances), this is exactly the same thing that other people with impure motives would want to do.
Therefore, any antivirus vendor worth their salt is actively working to prevent this from being possible. In addition, as Matthew points out, Microsoft is working against you, too. In order to make this work, you'll have to figure out a way to skirt around the entire Windows security model.
I suppose you could enter an arms race against them, but they probably have a lot more resources to devote to the problem than you do and stand to gain a whole lot more from solving it. Moreover, the user is the one who stands to lose the most here. Not only is it extremely user-hostile to uninstall programs without their consent, if software vendors are spending their time locked in an arms race, they're not using that time, energy, and effort to improve their software in a meaningful way.
I strongly recommend abandoning the brainstorm before you've wasted too much time. Surely there's a better way to solve whatever task you're working on.
Closed. This question needs to be more focused. It is not currently accepting answers.
Want to improve this question? Update the question so it focuses on one problem only by editing this post.
Closed 7 years ago.
Improve this question
I am still visiting school and will finish my exams next year. Since two years I am working as (the only :-( ) in-house dev for a company providing financial services to Laboratories and doctors. After spending the first year fixing their existing Application and realizing, communicating and agreeing that it won't meet future requirements i rewrote it from scratch. This is my first LOB application.
I needed a "IEnumerable.ToDataTable()" method to do simplify certain things in the Application. I realized that existing solutions wouldn't meet my performance and flexibility requirements, so i came up with a solution based on Dynamically injected IL code myself.
I thought that this might be a good way to contribute to the community, thats why i asked my employer if i may take some of those code and release it under LGPL. They agreed and that's where my first project is:
ModelShredder
Since this is my first OSS project and i am relatively unexperienced with running an OSS project on my own I am asking you for some "best-pratices" and what i can improve on it.
First read this book:
You can download it free of charge here: http://producingoss.com/ There are also some nice screencasts there that may be some use too.
It covers everything you need to know about looking for, contributing to, starting and maintaining an open source project,
It all depends on if you're going to have a team help you or not. It'll be simpler to start doing it yourself if you have the time if for no other reason than you can work out how you want to proceed without worrying about politics.
For a start, any code used as a framework or a library typically needs to be developed to a much higher standard than what you might write for an internal application. This means you need:
Sufficient user and developer docuemtnation;
Unit tests with decent coverage;
A license;
Tagged versions in source control; and
Released binaries and source code with checksums.
Additionally you'll need a method of:
Communicating your project status (release notes, goals, etc); and
A means to allow people to raise and track issues.
Google Code (as just one example) can do pretty much all of this for you.
I would also suggest you register the domain name for your project (typically projectname.org for open source). If the one you want is taken already, you may want to change the project name, particularly as there might be cause for confusion.
The google code pages look pretty good to me. You might want to think about adding a support group on Google Groups.