|
There other ways to implement such security but this depends alot on what your software does, hows its installed, does it access the web (permanently/once), architecture, are there corporate licenses you will sell etc.
i would suggest you base your security on serials unique to a particular mobile device (hardware) for instance on cell phones IMEI or a devices blue tooth MAC address. relying on windows registry means an environment can be replicated where someone can try their level best to crash your software protection because windows is readily available plus your software must conform to certain rules to run on the system.
Free Idea:
user installs app, software gets hardware device ID, software sends ID to your server, your server runs algorithm on ID and processes payment, server emails software license code plus thank you for support... sweet nothings, user enters code and presto! access granted.
Remember that in effect what you are protecting are the license codes because technically thats what your selling right? So if a code is entered in any other mobile device it won't work because the algorithm run to decrypt the code and the device ID do not match. For single user licenses this is tried and tested on many android apps I've deployed but Obviously this technique must be thought out if you intend to have corporate licenses for thousands of devices on one bulk purchase
My 2 cents
|
|
|
|
|
Hi,
Thanks for reply and your several suggestion.
I want give some more details about my specific case and what I want obtain:
1)- My application not need installation, because it consists in a simple EXE file (running in Compact framework provided devices) to be simply copied on device.
2)- My application is not provided of internet access.
3)- I am interested only to sell single user licences, not corporate licences.
Actually I installed on my PDA, a software (not mine)that to make it fully working, I buyed a registration-key and I received it via E-mail.
To be fully working the software, I must entered in it only my full Name + a registration-key.
And then apparentely it is not read and/or to used the hardware Device-ID.
How works this kind of protection?
Ignazio
|
|
|
|
|
Er okay Ignazio,
First thing, the example you gave is a poor attempt at security. Why? nothing stops someone from simply using the same full Name + a registration no A.K.A key on another device! because your application is designed to accept any valid key, so if my friend bought a key i could just borrow it and use his name and I could just take the same app and replicate it on several devices, or worse if i crack the algo on it i could make my own keys to sell because the keys and en/decryption technique are stored locally on the device, not a good idea. However if this is sufficient "protection" for your app then hey who am i to talk... as for how it works? there way too many books that could best educate you on that
If all else fails u can also try
1. a query for a unique ID of the mobile device through lineGetGeneralInfo or such similar API i.e.TAPI functions. check out msdn for more info here
http://msdn.microsoft.com/en-us/library/aa458219.aspx[^] or make another small app just to extract that serial.
2. once your application extracts the serial/IMEI number of the device and displays it to the user, they can then enter it on say your website where they have a registered account. in other words they pay for the license and can then login onto your website where your server side encryption algorithm is running.
3. They can now enter the serial as displayed on the mobile device and receive an instant key unique to there device.
4. When the user fires up the application on their device, it will check the serial against the stored key before starting. This way you keep your key encryption technique away from prying curiosity of would be crackers. you will need to make changes to your application to incorporate security i.e. decrypting the key against the serial of the device. there are several readily available techniques to do this. in fact i think there's an entire .net class that can help you do this check out on msdn.
Anyway hope i helped a little,
All the best
|
|
|
|
|
|
Yes something along those lines would be a much better license protection system. Not perfect but much better.
|
|
|
|
|
hi,
i had a problem in VBA, and i really hope you guys is able to help mi.
i'm creating a simple system using VBA in excel, therefore i'm using the sheets as my DB. how am i suppose to call the things i wan.
2nd question
how am i suppose to link the data list or list box with the sheets.
Thanks really hope to hear from you guys thanks
Best Regards
Veon cheng
|
|
|
|
|
veon cheng wrote: how am i suppose to call the things i wan.
I see you meant to type 'want', and that's cool. We all make typos. But, I still can't work out what on earth you may be asking for. I don't do VBA, but I doubt anyone who did, could answer you either, for this reason. Perhaps you need to explain more.
Christian Graus
Driven to the arms of OSX by Vista.
Read my blog to find out how I've worked around bugs in Microsoft tools and frameworks.
|
|
|
|
|
hi
sorry about the "wan" thingy. hmm ok i'm creating a form in excel where the form is able to let the user to select the start date and end date of the report to be generated. therefore i need to know the code that is able to call the data from an excel sheet to get the figure as well as items in the excel sheet. where i want to use the excel sheet as a DB. how?
thanks
Veon
|
|
|
|
|
there are objects that allow you to look at the various sheets and reference them by name etc.
One of the best things to do, is record a macro and perform a number of operations e.g. move around sheets, changing values in cells etc.
Then look at the code that is recorded.
The object browser will also help you identify the various objects and methods that can be called.
|
|
|
|
|
Hi to all,
I am a VC++ learner. I am having a tough time to understand the concepts/basics/ needs of ATL, COM ...
is it releted to only VC++?..or its like a concept, something to do with all the languages.
Please give an idea on it....ATL and COM
regards and thanks
hrishi
-----------------------------
I am a beginner
|
|
|
|
|
Two possibilities here.
The first is that you can't tell the differences between Visual Basic and C++, in which case, ironically, VB is probably more the language for you The second is that you rudely spammed the whole site.
In either case, it's plain you ask without trying to do any research yourself. A .NET app can use COM. ATL is a template library for generating COM objects, and is C++ only, but it's just a tool, COM is the end result. .NET programmers only create COM objects if they need to talk to VC++.
Christian Graus
Driven to the arms of OSX by Vista.
Read my blog to find out how I've worked around bugs in Microsoft tools and frameworks.
|
|
|
|
|
Hello Everybody,
Had Set vb-hourglass Cursor in my application.For user to wait until the process is completed.The problem is that when run the app the Cursor Some times changes to vb-hourglass and some times doesn't.I used Me.Mouse-pointer and even Screen.Mouse-pointer set to vb-hourglass. But yet the problem exist.Can anyone Provide solution to the prob and Why does it Happen?
Thanks in Advance.
|
|
|
|
|
Better use Me.Cursor = Cursors.WaitCursor and then later Me.Cursor = Cursors.Default to set it back.
My advice is free, and you may get what you paid for.
|
|
|
|
|
Hello Johan Hakkesteegt,
Thanks for your reply. But Me.Cursor=Cursors.WaitCursor this code is not supportted by Vb6.Can u Provide any other way to achieve it.
|
|
|
|
|
I am sorry, but VB6 is not supported anymore in general. I have not used it for years. If at all possible try to use VB.NET instead.
My advice is free, and you may get what you paid for.
|
|
|
|
|
hi,
Is there a way to use BitBlt in order to find if
a specific BMP file is inside another ?
for example:
If I have Bitmap1.Bmp which is a small file
and Bitmap2.Bmp which is bigger,
can i find out if the picture inside Bitmap1 is
also inside Bitmap2 ?
Thanks in advance.
|
|
|
|
|
No - that is not even remotely what BitBlt does. You'd have to examine the bits of the bigger file, to see if you can find the bits of the smaller file inside it.
Christian Graus
Driven to the arms of OSX by Vista.
Read my blog to find out how I've worked around bugs in Microsoft tools and frameworks.
|
|
|
|
|
Currently I am doing that by tring to find a line of pixels which are the top row of the smaller file
inside the bigger file and if i find it i compare the rest pixel lines.
i was told there is a simpler way to do that.
if anyone knows of such way, please write it down.
Thanks.
|
|
|
|
|
Kobi_Z wrote: i was told there is a simpler way to do that.
I've been told lots of things too. It's possible that you could use BitBlt operations to merge two identical bitmaps and end up with one that's all black or all white, but you want to find a bitmap in a SECTION of another, which kills even that idea. You're stuck. Read my image processing articles for ideas on how to most quickly compare images. You will need to use C#, VB only writes slow imaging code.
Christian Graus
Driven to the arms of OSX by Vista.
Read my blog to find out how I've worked around bugs in Microsoft tools and frameworks.
|
|
|
|
|
imho an efficienty pattern findign algorithm would be your best choice. using bitblt is like using the worst pattern finding solution ever
ofcourse you might want to aviod using GetPixel(). Heres a class, use this (unfortunately i cant give proper credit to the author):
-Load your bitmap;
-Create a fast bitmap.
-copy your loaded bitmap into fast bitmap (instanicate a graphics over it and use drawimage)
-you have a simple array of bites in the fast bitmap (bits). expose it and use with an efficient pattern finder.
public class FastBitmapEditor
{
public int Height;
public int Width;
public Bitmap bitmap;
byte[] bits;
GCHandle handle;
int stride;
int pixelFormatSize;
public FastBitmapEditor(int width, int height)
{
Width = width;
Height = height;
PixelFormat format = PixelFormat.Format32bppArgb;
pixelFormatSize = Image.GetPixelFormatSize(format) / 8;
stride = width * pixelFormatSize;
bits = new byte[stride * height];
handle = GCHandle.Alloc(bits, GCHandleType.Pinned);
IntPtr pointer = Marshal.UnsafeAddrOfPinnedArrayElement(bits, 0);
bitmap = new Bitmap(width, height, stride, format, pointer);
}
public Color GetPixel(int x, int y)
{
int blue = bits[(y * Width + x) * 4];
int green = bits[(y * Width + x) * 4 + 1];
int red = bits[(y * Width + x) * 4 + 2];
int alpha = bits[(y * Width + x) * 4 + 3];
return Color.FromArgb(alpha, red, green, blue);
}
}
|
|
|
|
|
Hello !
Is there any kind of algorithm that will calculate how many rectangles can if in one big rectangle ?
I have following problem: have big rectangle, and then many smaller rectangles. I need to fit as much rectangles as it is possible in the big one.
Can anyone help ?
Btw, I was trying to make something myselft, but I only came out with recursive solution, and I think that it will be too slow (especially when you have maaaaany rectangles).
Thanks
|
|
|
|
|
You might get a better answer in the Algorithms forum. But I would personally iterate from 0 to srcRect.Width, and iterate inside that from 0 to srcRect.Height. If the two iteration variables aren't equal, then add it to the list. That'll account for different sizes. You could loop again, through each item in the list to take different positions and the same size into account.
The problem I can think of is that this would be extremely slow.
|
|
|
|
|
hehe, that's kind of what I've thought of Thanks anyway
|
|
|
|
|
I can't offer you a ready made solution but I figured out a little function that may at least help you out: Round a number to a multiple of another number[^]
It would only give you a one-dimensional solution, but someone posted a reply to my article, saying that they used it in a grid calculation.
My advice is free, and you may get what you paid for.
|
|
|
|
|
Thanks for reply, I'll look into that
|
|
|
|