|
I'm considering releasing a product for sale on the internet, but I'm having a hard time figuring out a way to protect it. I've done a lot of research on Google for commercial applications, and quite a few sound good, but spending $1000+ on a good piece of software is not feasible in my situation.
My e-commerce company provides a licensing tool to use, and I can activate, validate, etc, keys using their API's. However, the problem lies in the fact that any language that runs on the .Net CLR can be easily decompiled. This would make it pretty easy to simply decompile my program, remove the IF statements that deal with licensing, and then it's free for anyone with a P2P application.
How can I go about protecting these validation IF statements and DLL files (the ones that my e-seller has provided me), without spending a lot of cash? I know obfuscation can be used, and that there is a simple version of Dotfuscator included with Visual Studio, so I will be using that, but it still does not remove the ease of which an IF statement can be deleted. Also, if I do move along with using my e-seller's licensing (eSellerate, for those that are interested), I essentially am locked into their services and could not switch e-commerce solutions if the need arises.
If anyone has any suggestions or comments on how to protect .Net code, or if you can suggest any relatively well-priced commercial solutions, it would be greatly appreciated.
Thanks,
Mitch
|
|
|
|
|
9rays has a good product that the CodeProject occasionally gives away in the article competitions, and I find the Obfuscator very useful and the retail prices go from $499-$699-$899 for the obfuscator depending on the edition. I know it is not much less than $1000, it is still a good product that might have longer term help for your company.
One option is you could manually add encryption to the strings in the application and then have a method somewhere in your application to decrypt the string before it is actually used. Thus the unencrypted string would not be visible immediately after decomplition.
Regards,
Thomas Stockwell
Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots. So far, the Universe is winning.
Visit my homepage Oracle Studios[ ^]
|
|
|
|
|
If you have an old copy of VB6 or earlier, you can create something that is very difficult to crack.
Create a small component in VB6 that does your license validation and returns a "Go" or "No go" to your main program. Old versions of VB are good for this because they are extremely difficult to trace in a debugger.
“Cannot find REALITY.SYS...Universe Halted.”
~ God on phone with Microsoft Customer Support
|
|
|
|
|
Sure, but that's his problem, a person could easily decompile the application and remove the calls to the licensing component or redirect them somewhere else that always says "GO".
|
|
|
|
|
That's exactly my issue.
So, is there any way around this, or is it something I'll just have to live with if I don't want to spend lots of money on an assembly-encryption application?
Thanks,
Mitch
|
|
|
|
|
Personally I wouldnt bother with any extra protection. I've put forward this point quite a few times on here - if people don't want to pay for your software, then they won't. If your software is popular enough that someone starts releasing cracks, then you can worry about the pirates and apply some of the money you have from sales to fixing the problem in the next version
|
|
|
|
|
Thanks to everyone for the advice.
As you have suggested, I'll just stick with a simpler licensing scheme; at least it'll prevent casual copying of the software between friends, coworkers, etc.
I have one more question; however. Does anyone know where I could find a good EULA template that I can modify to my liking and distribute with my application? I've found a few sample ones using Google, but I'm not sure whether they are posted for actual usage, or just as an example of what a lawyer / firm would do.
Thanks,
Mitch
|
|
|
|
|
Hi, Friends,
I am working in vb6 plateform. I am making application for displaying electrical networks drawn in autocad. Please help me to dislplay Autocad "dwg" drawing with zoom in/out and panning effact (just like viewing pdf file in acrobat reader and panning with hand tool)
thaking you
Anil V. Chaudhary.
anilvc31@gmail.com
|
|
|
|
|
You'll have to use a third party component that does this for you. I don't know of anny but if you Google for "vb6 display autocad drawing", you might come up with something.
|
|
|
|
|
hai friends
i m new to this forum
this is my first question....
i hope u people send the solution..
so that ican continue the forum in future....
my problem is ...
i my PC , i have 2 users 1)administrator 2)myuser
i developed a project,in which i will create a text file at run time and write to it some data.it is working fine in administrator but it is not working in "myuser" account.
the error msg is "access to read/write is denied"
plz solve my problem.....
wt ever it may be the settings .. plz give in detail with code in vb.net 2.0 only or as ur like..
thanks in advance
vijay
devulapally_vijay@yahoo.co.in
vijay
|
|
|
|
|
vijaylumar wrote: the error msg is "access to read/write is denied"
Funny, a Google[^] search for that error message returns no hits.
Maybe this isn't the error message you received? Perhaps you would like to give us the actual error message instead? Then maybe someone can help you?
Paul Marfleet
"No, his mind is not for rent
To any God or government"
Tom Sawyer - Rush
|
|
|
|
|
hai frnds
my application is in "D" drive
and in run time i will create a text file in "c" drive and write some data to it.
like this ....
Dim fs As New FileStream("c:\mydatapath.txt", FileMode.Create, FileAccess.ReadWrite)
Dim w As New StreamWriter(fs)
w.WriteLine("Tecpro")
w.Flush()
w.Close()
but it is giving error like " Acess to path 'c:\mydatapath.txt' is denied
but its working fine with in 'administrator'
but when i run in other user of my computer then it is giving that error...
plz help me
and also i have problem with windows registry..
path "Hkey_Local_Machine\\software"
plz reply me soon ..
thanks in advance
vijay
devulapally_vijay@yahoo.co.in
|
|
|
|
|
It appears that your users don't have access ot the root of the system drive (C , not surprisingly. Also, normal users do not have any wirte access to anything under HKEY_LOCAL_MACHINE in the registry. You're going to have to rewrite your code so that data is placed in more appropriate places in both the file system and the registry, depending on your apps requirements.
|
|
|
|
|
hai dave
this time i changed the code ,
instead of "C" drive , i given "D" drive
and for "HKEY_LOCAL_MACHINE", i took "Hkey_Current_User"
but the same error is giving "Access to the path 'D:/mydatapath.txt' is denied"
cant we give permissions to user at runtime.
can dotnet frame works CAS security can do any thing for this ....
wt to do ..
plz help me...
thanks in advance
vijay
devulapally_vijay@yahoo.co.in
|
|
|
|
|
vijaylumar wrote: but the same error is giving "Access to the path 'D:/mydatapath.txt' is denied"
This is because the user does not have permissions to the root directories of the hard disks. If the data is user specific, use the users profile path (Documents and Settings\userid) in the Application Data folder. Read this[^]
vijaylumar wrote: cant we give permissions to user at runtime.
No, because the code is running AS the user. A user cannot grant themselves more permissions that they already have.
vijaylumar wrote: can dotnet frame works CAS security can do any thing for this ....
No, because it has nothing to do with NTFS security and, again, the user cannot grant themselves more permissions than they already have.
|
|
|
|
|
hai friends
i m new to this forum
this is my first question....
i hope u people send the solution..
so that ican continue the forum in future....
my problem is ...
i my PC , i have 2 users 1)administrator 2)myuser
i developed a project,in which i will create a text file at run time and write to it some data.it is working fine in administrator but it is not working in "myuser" account.
the error msg is "access to read/write is denied"
plz solve my problem.....
wt ever it may be the settings .. plz give in detail with code in vb.net 2.0 only or as ur like..
thanks in advance
vijay
devulapally_vijay@yahoomail.co.in
vijay
|
|
|
|
|
What's the full path to file file your trying to write?? There are certain sections (subdirectories) of the file system that normal users cannot write to, so your code should not be attempting to write to files in these sections.
Keep in mind that any code you launch impersonates you, inheriting your security context. In other words, if your user ID doesn't give you permissions to write a file to a directory, any application you launch won't magically get those permissions.
|
|
|
|
|
I had a simple report containing all data in "details". I need to move some fields from the "details" and have them appear in the "page footer". Simple....
I moved them. Now I have about 1/2-inch of white space between the details and the page footer.
I've already done all the "suppress" checkbox on all unused sections, and I've shrunken the size in the designer of all unused sections. There has to be a setting somewhere that is telling Crystal to render 1/2-inch worth of white space between the details and page footer sections, but I just can't find it!
Thanks,
sindhu
Dont Get Paid for the Hours you worked, Get Paid for the Work You Have Done in an Hour.
|
|
|
|
|
Hi all,
I have a image that is converted into a hex string (note see below). I would like to convert this hex string back into the image. How can I start with this? Can someone point me out in accomplishing this?
Thank you very much.
Here under you can find 'a part of' the hex string.
FFD8FFE000104A46494600010100000100010000FFFE002A496E74...
Edit, i removed the biggest part of the hex string because i doesn't look right in this forum. But you can get an idea how it looks like.
|
|
|
|
|
I think i have found it. Searching hard and trying end up with nothing, asking help and the answers suddenly comes.
O well, here i'll give you the solution. (Remind that the hex value is just a part of whole string)
<br />
Private Sub ConvertImg()<br />
Dim hexvalue As String = "FFD8FFE000104A46494600010101000100010000..."<br />
Dim bytevalue As Byte() = HexToBin(hexvalue)<br />
Dim myFileStream As FileStream<br />
Dim intByte As Integer = 0<br />
Dim lngLoop As Long<br />
<br />
Try<br />
intByte = bytevalue.Length<br />
myFileStream = File.OpenWrite("c:\image.jpg")<br />
<br />
For lngLoop = 0 To intByte - 1<br />
myFileStream.WriteByte(bytevalue(lngLoop))<br />
Next<br />
<br />
myFileStream.Close()<br />
Catch ex As IOException<br />
MessageBox.Show(ex.Message)<br />
End Try<br />
End Sub<br />
<br />
<br />
'---------------------------------------------------------------------------<br />
'<br />
' Function: HexToBin()<br />
' Input: s<br />
' Return: bytes<br />
' Purpose: Converts Hex to binary<br />
' <br />
'---------------------------------------------------------------------------<br />
Public Shared Function HexToBin(ByVal s As String) As Byte()<br />
Dim arraySize As Integer = CInt(s.Length / 2)<br />
Dim bytes(arraySize - 1) As Byte<br />
Dim counter As Integer<br />
For i As Integer = 0 To s.Length - 1 Step 2<br />
Dim hexValue As String = s.Substring(i, 2)<br />
<br />
' Tell convert to interpret the string as a 16 bit hex value <br />
Dim intValue As Integer = Convert.ToInt32(hexValue, 16)<br />
' Convert the integer to a byte and store it in the array <br />
bytes(counter) = Convert.ToByte(intValue)<br />
counter += 1<br />
Next<br />
Return bytes<br />
End Function<br />
|
|
|
|
|
Yes, your hex data smells like a JPEG image.
There is no need to write it to disk, you could use a MemoryStream instead.
Luc Pattyn [Forum Guidelines] [My Articles]
This month's tips:
- before you ask a question here, search CodeProject, then Google;
- the quality and detail of your question reflects on the effectiveness of the help you are likely to get;
- use PRE tags to preserve formatting when showing multi-line code snippets.
|
|
|
|
|
Hi,
Just started vb 2005
I need to load items from an 2 dim array in a listbox, then select items in to another listbox , put the selected values in an array and calculate the totals and display it in a txtbox. If I delete an item in de 2° listbox this should also be re calculated.
This is what i have so far .
The result should be something like :
1 pincet 3 $
3 mascara 12 $
youre total amount is 15 $
Public Class Form1
Dim aThings(3, 1) As String
Private Sub Form1_Load(ByVal sender As Object, _
ByVal e As System.EventArgs) Handles Me.Load
aThings(0, 0) = "Mascara 4$"
aThings(0, 1) = 4
aThings(1, 0) = "Lipstick 5 $"
aThings(1, 1) = 5
aThings(2, 0) = "Nivea 3 $"
aThings(2, 1) = 2
aThings(3, 0) = "Pincet 3 $"
aThings(3, 1) = 3
For i As Integer = 0 To 3
LstThings.Items.Add(aThings(i, 0))
Next
End Sub
Private Sub BtnAdd_Click(ByVal sender As Object, _
ByVal e As System.EventArgs) Handles BtnAdd.Click
LstSelecThings.Items.Add(LstThings.SelectedItem.ToString)
End Sub
Private Sub BtnRemove_Click(ByVal sender As Object, _
ByVal e As System.EventArgs) Handles BtnRemove.Click
LstSelecThings.Items.Remove(LstSelecThings.SelectedItem)
End Sub
End Class
|
|
|
|
|
Hi,
rather than adding string to LstSelecThings, you'd better add aThings items to it.
You then could create a calculate() method that iterates over all its items and
sums their value.
Luc Pattyn [Forum Guidelines] [My Articles]
This month's tips:
- before you ask a question here, search CodeProject, then Google;
- the quality and detail of your question reflects on the effectiveness of the help you are likely to get;
- use PRE tags to preserve formatting when showing multi-line code snippets.
|
|
|
|
|
ok , i'll try.
Pattyn.....Belgian ??
|
|
|
|
|
100%
Luc Pattyn [Forum Guidelines] [My Articles]
This month's tips:
- before you ask a question here, search CodeProject, then Google;
- the quality and detail of your question reflects on the effectiveness of the help you are likely to get;
- use PRE tags to preserve formatting when showing multi-line code snippets.
|
|
|
|