By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
458,028 Members | 1,309 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 458,028 IT Pros & Developers. It's quick & easy.

Posting Etiquitte?

P: n/a
I hear people say not to multipost, does these mean not to ask the same
question in another group or to submit the question to all the groups via
the same submission, with multiple newsgroups in the "send to" box? Just a
curious question from someone who has only googled and altavista'd since the
beginning of time.

Jeff
Nov 20 '05
Share this Question
Share on Google+
62 Replies


P: n/a
Nak
> The strength of the encryption isn't the issue here - as you say, RSA is
fine. The problem is how to keep secure the key that you're using to decrypt the data. The only really secure way to do this is via some sort of
activation scheme involving a remote server.


Aaah, that's were you haven't seen the whole point. It doesn't matter if
someone sees the decrypted data, the whole point is that none else will be
able to make a license file that can be decrypted with my public key. It
isn't possible to simply find the matching key if you have one of the is it?
Not that *I* am aware of anyway.

I had thought about that, but the idea is that when someone purchases
software, I would send them a license file encrypted with *my* private key,
only files encrypted with this key can be decrypted my the application. You
might be thinking that someone could simply crack the program to change the
key that is used to decrypt with, but that would cause my application to
fail as it is "strong named".

I know that *no* software is safe, even with a hardware dongle; software has
been cracked with ease/ But just by adding several layers it fends off the
less able crackers at least. One thing I'm not doing is buying a 3rd party
product, I wouldn't trust anyone else with the task, even if they are
"godlike" programmers.

The finny thing is that Microsoft PA is not a bad way of protecting
software, except for the fact that if you change your hardware configuration
beyond a certain threshold they will de-activate your software. This has
happened to myself before after changing and adding a few components, even
though I have an DELL OEM copy of XP that doesn't need activating my myself.
There are *some* protection software out there that employs similar methods
to PA and they use a points based method, if you change a major piece of
hardware more points are put towards the license being invoked, changing a
hard drive for example would add only a small number of points.

As one wise man once said, "It's all a load of bollocks!"

Nick.

--
/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\
"No matter. Whatever the outcome, you are changed."

Fergus - September 5th 2003
/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\
Nov 20 '05 #51

P: n/a
Nick,

Trying to reverse-engineer the private key is out of the question - no
hacker/cracker would be that stupid.

A much easier route is to use ildasm to disassemble your app, patch it in
the appropriate place and then ilasm it back into a normal (not
strong-named) assembly, which is then distributed. You can try to get around
this by creating a separate licensing assembly and then strong-naming both
of your assemblies and linking them together so that your licensing assembly
can be called only by your app. So then the cracker might need to
ildasm/ilasm both of your assemblies.

The assembly metadata that .NET provides makes reverse-engineering code a
relatively simple exercise. Even using a code obfuscator won't help you much
if all the cracker has to patch is the licensing part of your code.
But just by adding several layers it fends off the less able crackers at least. <<

It only needs a single cracker to break your scheme and distribute a cracked
program for everyone else to use. Windows XP activation, for instance, was
cracked within hours of the RTM being available.
One thing I'm not doing is buying a 3rd party product, I wouldn't trust
anyone else with the task, even if they are "godlike" programmers. <<

You are correct in not trusting some of the commercial copy protection
schemes, which are pure snake oil. But if you think that you can do better
than, say, a team of specialists who've studied this area for years, then
you're just peddling snake oil yourself.

Regards,

Mark
--
Author of "Comprehensive VB .NET Debugging"
http://www.apress.com/book/bookDisplay.html?bID=128
"Nak" <a@a.com> wrote in message
news:eg**************@TK2MSFTNGP10.phx.gbl... The strength of the encryption isn't the issue here - as you say, RSA is
fine. The problem is how to keep secure the key that you're using to decrypt the data. The only really secure way to do this is via some sort of
activation scheme involving a remote server.


Aaah, that's were you haven't seen the whole point. It doesn't matter if
someone sees the decrypted data, the whole point is that none else will be
able to make a license file that can be decrypted with my public key. It
isn't possible to simply find the matching key if you have one of the is it?
Not that *I* am aware of anyway.

I had thought about that, but the idea is that when someone purchases
software, I would send them a license file encrypted with *my* private key,
only files encrypted with this key can be decrypted my the application. You
might be thinking that someone could simply crack the program to change the
key that is used to decrypt with, but that would cause my application to
fail as it is "strong named".

I know that *no* software is safe, even with a hardware dongle; software has
been cracked with ease/ But just by adding several layers it fends off the
less able crackers at least. One thing I'm not doing is buying a 3rd party
product, I wouldn't trust anyone else with the task, even if they are
"godlike" programmers.

The finny thing is that Microsoft PA is not a bad way of protecting
software, except for the fact that if you change your hardware configuration
beyond a certain threshold they will de-activate your software. This has
happened to myself before after changing and adding a few components, even
though I have an DELL OEM copy of XP that doesn't need activating my myself.
There are *some* protection software out there that employs similar methods
to PA and they use a points based method, if you change a major piece of
hardware more points are put towards the license being invoked, changing a
hard drive for example would add only a small number of points.

As one wise man once said, "It's all a load of bollocks!"

Nick.

--
/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\
"No matter. Whatever the outcome, you are changed."

Fergus - September 5th 2003
/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\

Nov 20 '05 #52

P: n/a
Hi Nick,

|| One thing I'm not doing is buying a 3rd party product,
|| I wouldn't trust anyone else with the task, even if they
|| are "godlike" programmers.

Not even one who eschews Option Strict On ?

|| You are correct in not trusting some of the commercial
|| copy protection schemes, which are pure snake oil.

I was going to offer to write you a protection scheme based on a
derivative of ASP but then I realised that that would probably just come out
as snake oil.

;-)

Regards,
Fergus
Nov 20 '05 #53

P: n/a
Nak
Hi Fergus,
Not even one who eschews Option Strict On ?
Then I *would* seriously consider it.
I was going to offer to write you a protection scheme based on a
derivative of ASP but then I realised that that would probably just come out as snake oil.


Don't you just hate it when you program snake oil, the keyboard gets all
greasy, I'm going to start programming with big rubber gauntlets I think :-)

Nick.

--
/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\
"No matter. Whatever the outcome, you are changed."

Fergus - September 5th 2003
/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\
Nov 20 '05 #54

P: n/a
Nak
Hi Mark,
A much easier route is to use ildasm to disassemble your app, patch it in
the appropriate place and then ilasm it back into a normal (not
strong-named) assembly, which is then distributed. You can try to get around this by creating a separate licensing assembly and then strong-naming both
of your assemblies and linking them together so that your licensing assembly can be called only by your app. So then the cracker might need to
ildasm/ilasm both of your assemblies.
Yup, I agree that no software is 100% safe unfortunately.
The assembly metadata that .NET provides makes reverse-engineering code a
relatively simple exercise. Even using a code obfuscator won't help you much if all the cracker has to patch is the licensing part of your code.
Yeah, that's one reason I'm not bothering with code obfuscation. That and
the obfuscators I have tried do not allow Strong naming.
It only needs a single cracker to break your scheme and distribute a cracked program for everyone else to use. Windows XP activation, for instance, was
cracked within hours of the RTM being available.
Yup, no software is safe, even the ones that employ hardware dongles.
You are correct in not trusting some of the commercial copy protection
schemes, which are pure snake oil. But if you think that you can do better
than, say, a team of specialists who've studied this area for years, then
you're just peddling snake oil yourself.
I personally don't believe that to be a problem, lack of experience doesn't
mean a product would be any less viable. Microsoft have thousands of
employees, billions pounds and years of experience but I would still rather
use competitive "freeware" alternatives against some of their "attempts" for
software. My opinion has always been that if you are able to do the
research correctly and analyse the pro's and con's too then you're always on
for a winner.

The problem with employing a web service is that I can't do that without a
"fanny on", I do not have a permanent IP address and I also have "Free" web
space, which means that I would have to write a locator file to my web site
every time my IP address changes just so the applications could find my web
service. As well as a web service lowering the security of my system, at
current I do not have anything like that running as I have had *enough*
problems with hackers in the past.

Nick.

--
/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\
"No matter. Whatever the outcome, you are changed."

Fergus - September 5th 2003
/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\
"Mark Pearce" <ev**@bay.com> wrote in message
news:uK*************@tk2msftngp13.phx.gbl...

One thing I'm not doing is buying a 3rd party product, I wouldn't trust
anyone else with the task, even if they are "godlike" programmers. <<


Regards,

Mark
--
Author of "Comprehensive VB .NET Debugging"
http://www.apress.com/book/bookDisplay.html?bID=128
"Nak" <a@a.com> wrote in message
news:eg**************@TK2MSFTNGP10.phx.gbl...
The strength of the encryption isn't the issue here - as you say, RSA is
fine. The problem is how to keep secure the key that you're using to decrypt
the data. The only really secure way to do this is via some sort of
activation scheme involving a remote server.


Aaah, that's were you haven't seen the whole point. It doesn't matter if
someone sees the decrypted data, the whole point is that none else will be
able to make a license file that can be decrypted with my public key. It
isn't possible to simply find the matching key if you have one of the is

it? Not that *I* am aware of anyway.

I had thought about that, but the idea is that when someone purchases
software, I would send them a license file encrypted with *my* private key, only files encrypted with this key can be decrypted my the application. You might be thinking that someone could simply crack the program to change the key that is used to decrypt with, but that would cause my application to
fail as it is "strong named".

I know that *no* software is safe, even with a hardware dongle; software has been cracked with ease/ But just by adding several layers it fends off the less able crackers at least. One thing I'm not doing is buying a 3rd party product, I wouldn't trust anyone else with the task, even if they are
"godlike" programmers.

The finny thing is that Microsoft PA is not a bad way of protecting
software, except for the fact that if you change your hardware configuration beyond a certain threshold they will de-activate your software. This has
happened to myself before after changing and adding a few components, even
though I have an DELL OEM copy of XP that doesn't need activating my myself. There are *some* protection software out there that employs similar methods to PA and they use a points based method, if you change a major piece of
hardware more points are put towards the license being invoked, changing a
hard drive for example would add only a small number of points.

As one wise man once said, "It's all a load of bollocks!"

Nick.

--
/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\ "No matter. Whatever the outcome, you are changed."

Fergus - September 5th 2003
/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\

Nov 20 '05 #55

P: n/a
Hi Mark,

|| I can't do that without a "fanny on",

Just for your information, this isn't an anatomical reference, as I first
thought, lol., nor a reference to a specialised server (same thing, really)
;-)

It means a lot of hassle.

Regards,
Fergus
Nov 20 '05 #56

P: n/a
Nak
> It means a lot of hassle.

LOL, as I said, it's a "fanny on"!

Nick.

--
/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\
"No matter. Whatever the outcome, you are changed."

Fergus - September 5th 2003
/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\
Nov 20 '05 #57

P: n/a
Hi Nick,

BIG LOL :-D

I usually put my keyboard into the washing machine at the end of every
week.

Regards,
Fergus
Nov 20 '05 #58

P: n/a
Nak
> I usually put my keyboard into the washing machine at the end of every
week.


LOL

What washing power do you use? Does it have a built in fabric softener? does
it get your whites whiter than white?

Nick.

--
/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\
"No matter. Whatever the outcome, you are changed."

Fergus - September 5th 2003
/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\
Nov 20 '05 #59

P: n/a
Nick,
My opinion has always been that if you are able to do the research correctly and analyse the pro's and con's too then you're always on for a
winner. <<

Maybe in some areas, but not in cryptography or implementation of
cryptography protocols. Here's industry expert Bruce Schneier's scathing
attack on DIY crypto schemes:
http://www.counterpane.com/crypto-gr....html#snakeoil

This is also slightly interesting, also from Bruce Schneier:
http://www.counterpane.com/crypto-gram-9811.html#copy

Regards,

Mark
--
Author of "Comprehensive VB .NET Debugging"
http://www.apress.com/book/bookDisplay.html?bID=128
"Nak" <a@a.com> wrote in message
news:Or**************@TK2MSFTNGP10.phx.gbl...
Hi Mark,
A much easier route is to use ildasm to disassemble your app, patch it in
the appropriate place and then ilasm it back into a normal (not
strong-named) assembly, which is then distributed. You can try to get around this by creating a separate licensing assembly and then strong-naming both
of your assemblies and linking them together so that your licensing assembly can be called only by your app. So then the cracker might need to
ildasm/ilasm both of your assemblies.
Yup, I agree that no software is 100% safe unfortunately.
The assembly metadata that .NET provides makes reverse-engineering code a
relatively simple exercise. Even using a code obfuscator won't help you much if all the cracker has to patch is the licensing part of your code.
Yeah, that's one reason I'm not bothering with code obfuscation. That and
the obfuscators I have tried do not allow Strong naming.
It only needs a single cracker to break your scheme and distribute a cracked program for everyone else to use. Windows XP activation, for instance, was
cracked within hours of the RTM being available.
Yup, no software is safe, even the ones that employ hardware dongles.
You are correct in not trusting some of the commercial copy protection
schemes, which are pure snake oil. But if you think that you can do better
than, say, a team of specialists who've studied this area for years, then
you're just peddling snake oil yourself.
I personally don't believe that to be a problem, lack of experience doesn't
mean a product would be any less viable. Microsoft have thousands of
employees, billions pounds and years of experience but I would still rather
use competitive "freeware" alternatives against some of their "attempts" for
software. My opinion has always been that if you are able to do the
research correctly and analyse the pro's and con's too then you're always on
for a winner.

The problem with employing a web service is that I can't do that without a
"fanny on", I do not have a permanent IP address and I also have "Free" web
space, which means that I would have to write a locator file to my web site
every time my IP address changes just so the applications could find my web
service. As well as a web service lowering the security of my system, at
current I do not have anything like that running as I have had *enough*
problems with hackers in the past.

Nick.

--
/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\
"No matter. Whatever the outcome, you are changed."

Fergus - September 5th 2003
/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\
"Mark Pearce" <ev**@bay.com> wrote in message
news:uK*************@tk2msftngp13.phx.gbl...

One thing I'm not doing is buying a 3rd party product, I wouldn't trust
anyone else with the task, even if they are "godlike" programmers. <<


Regards,

Mark
--
Author of "Comprehensive VB .NET Debugging"
http://www.apress.com/book/bookDisplay.html?bID=128
"Nak" <a@a.com> wrote in message
news:eg**************@TK2MSFTNGP10.phx.gbl...
The strength of the encryption isn't the issue here - as you say, RSA is
fine. The problem is how to keep secure the key that you're using to decrypt
the data. The only really secure way to do this is via some sort of
activation scheme involving a remote server.


Aaah, that's were you haven't seen the whole point. It doesn't matter if
someone sees the decrypted data, the whole point is that none else will be
able to make a license file that can be decrypted with my public key. It
isn't possible to simply find the matching key if you have one of the is

it? Not that *I* am aware of anyway.

I had thought about that, but the idea is that when someone purchases
software, I would send them a license file encrypted with *my* private key, only files encrypted with this key can be decrypted my the application. You might be thinking that someone could simply crack the program to change the key that is used to decrypt with, but that would cause my application to
fail as it is "strong named".

I know that *no* software is safe, even with a hardware dongle; software has been cracked with ease/ But just by adding several layers it fends off the less able crackers at least. One thing I'm not doing is buying a 3rd party product, I wouldn't trust anyone else with the task, even if they are
"godlike" programmers.

The finny thing is that Microsoft PA is not a bad way of protecting
software, except for the fact that if you change your hardware configuration beyond a certain threshold they will de-activate your software. This has
happened to myself before after changing and adding a few components, even
though I have an DELL OEM copy of XP that doesn't need activating my myself. There are *some* protection software out there that employs similar methods to PA and they use a points based method, if you change a major piece of
hardware more points are put towards the license being invoked, changing a
hard drive for example would add only a small number of points.

As one wise man once said, "It's all a load of bollocks!"

Nick.

--
/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\ "No matter. Whatever the outcome, you are changed."

Fergus - September 5th 2003
/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\


Nov 20 '05 #60

P: n/a
Hi Nick, Mark,

|| http://www.counterpane.com/crypto-gr....html#snakeoil

#snakeoil - LOL.

Regards,
Fergus
Nov 20 '05 #61

P: n/a
Hi Guys,

Here's one cracker's view - [name changed to reduce the infamy].

[ps. For anyone who disapproves of me posting this publicly - this
material and much more like it (and 'better') is readily available out there.]

<quote>
Hi All!
I'm Stoopid The Cracker and In This Tutorial I'll Explain you How To Crack
Any type of registration protection.
First of all.Use Softice cause i don't like Live Approch.
Ok
Run Your target program and go on the registration dialog,then put
in the dialog any name and any serial number but DON'T press OK
before press "control+d" to pops up softice and in softice sets some
Break points.......for approching with a registration routine we must
breakpoint on api(windows functions) used to read Your name and Your
Sn.
They are
Getwindowtext
GetwindowtextA
Getdlgitemtext
GetdlgitemtextA
Hmemcpy (that's not an api but it's the best)

Well the "A" after the api means 32 bit so if your program is 32 bit
put the A if not don't.Easy!
I always use only Hmemcpy cause it runs 99,9% of the times.
Well now exit from softice by pressing control+d and press ok,if you have set
a working bpx softice will pops up.

Now start the real cracking.....
Press F12 until you can read on the bottom line of SoftIce the name
of the file of the program you're cracking....
then if before your location there's a call ok,if not press again F12 until
you find it.
Then you must step into the code.....(by pressing F10),if in your stepping you
find some
condictional jumps have a look at them......btw step until you find a call
that prompt you
something like a messagebox or something else that prompt you the "You
entered a Wrong code",
well before that call you noticed a condictional jump that jumped on that call
or dindn't jump
over that call....if yes try to inverse the jump (change a jz into a jnz)
or (a better way) change the value of the eip in order to make that jump to
jump or not.
Doing this if you find the good jump the program must prompt you "Thank for
Registering this
fucked program",
now the crack is near to the end...
Often cracking this way you will only prompt the "You Are Regged" but the
program still continue
to be unregged so in order to crack it 100% and easly there are 2 ways

1) trace into the call BEFORE our important condictional jump and try to
understand the code,
in order to find the real compare instrucion that often is kept in this call
not out....if
you find out our real compare instruction,and change the below condictional
jump in order to
make it jump or not(it depends if it before jumped or not,do the reverse).
Ok now the program should be fully cracked!

2) this is a worse way than the first but it works!This way is easyer for
beginners
You must trace into the call before our important codictional jmp,and then put
a bpx in its first line,then press "x" and exit from softice and use the
program in all its functions,create new,open,about,save, and when softice pops
up press "f12" in order to get out that call and look for a near condictional
jump and try to inverse it and look if the program looks like regged, you must
sign up all these condictional jump and inverse it,and your program is
cracked!

Stoopid the Cracker

</quote>

The point is that it is very easy to bypass any security where there is
any easily identifiable and accessible central point. The two best types of
protection are methods that are impossible to crack through sheer
sophistication (whatever that might entail and whenwver someone designs one)
and those that are simply too much effort or too fuzzy.

I would favour a distributed approach where detection of illegality in the
registration or files, etc, leads to a delayed degradation of services, say a
random number of hours/days/keypresses/etc after detection - implemented by
changing encoded settings/menus, or whatever. This means that a hacker would
have to be very dedicated, methodical and patient - and he can never release
the cracked product without wondering if there is some two-week time-bomb
still waiting to disable the program.

The initial registration procedure would make it <very clear> that
tampered-with program <will> fail and include a well-worded disclaimer.

Such a scheme is a challenge to design and implement, probably hell to
test, too - but even more of a challenge to break. ;-)

Regards,
Fergus
Nov 20 '05 #62

P: n/a
Cor
Hi Fergus, mostly this is true,

Tell someone "You cannot and..........
Such a scheme is a challenge to design and implement, probably hell to
test, too - but even more of a challenge to break. ;-)


And not to forget the times your nice protection scheme goes wrong.
Activate a helpdesk for that.

I've heard many times that people had problems with Internet.
Often that was because the firewall did close everything.
But it has a benefit, you don't get spam
:-))
Cor
Nov 20 '05 #63

62 Replies

This discussion thread is closed

Replies have been disabled for this discussion.