Live data from Hacker News

Defeating a 40-year-old copy protection dongle

dmitrybrant.com

281–290 of 302 posts

Re: Defeating a 40-year-old copy protection dongle

#281

Earlier quoted context omitted.

Unity has always had janky shaders, the fact people still use it over Unreal Engine or even Godot is completely baffling. Unity is getting way too cheeky considering how they started out. =3

For anything smaller than AAA, C# is just generally much more pleasant to work in than C++. That's Unity's edge. And Godot is the "new" kid on the block I'd agree that between Unreal and Godot, Unity doesn't look very attractive right now. But inertia will carry them for a long time

Programming semantics is a large part of the equation, but it's a secondary part. Unity is just too damn EASY for spinning up a prototype and gluing other modules onto it. C# is a part of that but simple implementation is so much easier and powerful than other engines.

This goes out the window for polished end products but that's a different argument... but by then the ship has often already sailed and you're already using Unity.

Re: Defeating a 40-year-old copy protection dongle

#282
post #243

Earlier quoted context omitted.

SoftICE was such a gift and pain in the ass. I did a massive crack that involved a program and it’s inf/dll hardware driver package. Some of the most rewarding work I’ve done and also just so tedious! Having to stop the OS like that and accidentally getting to the kernel but then not wanting to lose my position so having to hit step over and step out until just the right place… whew.

Yep. I used SoftICE to do a few of these dongle-workarounds. Amazing and terrible software. :D

I honestly can’t recall how I even found SoftICE, but my uncle gave me a floppy with LJPEGViewer and the license was written on the disk. Eventually I lost the original but I’ll be dammed if I’m going to use Paint. I fired up SoftICE, managed to break before the “invalid key” dialog, and just did a cute little “return true” and that was that

Re: Defeating a 40-year-old copy protection dongle

#283
post #138

Earlier quoted context omitted.

I remember an icon editor (or something similar) for Windows 3.1, it was a shareware where you could enter a code to remove the nag screen. No crack was necessary, I basically managed to enter valid registration codes by just typing random numbers. In the end I had enough valid numbers that I could figure out the logic, it was something about the sums of digit groups.

This was true for the 10-digit CD keys Microsoft used for many products in the 90s: the first three digits could be almost anything, and the last seven digits had to sum to a multiple of 7, so, e.g., 111-1111111 was a valid product key (for any product that used the scheme).

I think it was StarCraft where we’d just try random keys until it would work, usually only three or four needed.

Re: Defeating a 40-year-old copy protection dongle

#284
post #243

Earlier quoted context omitted.

SoftICE was such a gift and pain in the ass. I did a massive crack that involved a program and it’s inf/dll hardware driver package. Some of the most rewarding work I’ve done and also just so tedious! Having to stop the OS like that and accidentally getting to the kernel but then not wanting to lose my position so having to hit step over and step out until just the right place… whew.

Yep. I used SoftICE to do a few of these dongle-workarounds. Amazing and terrible software. :D

Haha yeah. It was mostly just fun for me as a nerdy child who spent way too much time on Astalavista forum.

Cracking and RE were just gateways into a career in (defensive) security for me.

Re: Defeating a 40-year-old copy protection dongle

#285

Earlier quoted context omitted.

For anything smaller than AAA, C# is just generally much more pleasant to work in than C++. That's Unity's edge. And Godot is the "new" kid on the block I'd agree that between Unreal and Godot, Unity doesn't look very attractive right now. But inertia will carry them for a long time

Programming semantics is a large part of the equation, but it's a secondary part. Unity is just too damn EASY for spinning up a prototype and gluing other modules onto it. C# is a part of that but simple implementation is so much easier and powerful than other engines. This goes out the window for polished end products but that's a different argument... but by then the ship has often already sailed and you're already…

A few of those Unity store Assets are Copyright submarines. Where the original rights holders work was slightly tweaked to avoid detection for royalty fees in some jurisdictions.

Those assets end up being a liability later after publishing, can get your content DMCA flagged, and a firm sued (you will 100% lose in court if you don't settle.)

The Unity store does not prevent this issue, and kit bashing fun became dangerous to a publisher on the platform. It was impossible to determine what is safe with the new LLM tools, so the board banned the platform and engine.

Firms do make this mistake everyday, or just license generic Reallusion content. =3

"There is a bear in the woods. For some people, the bear is easy to see. Others don't see it at all. Some people say the bear is tame. Others say it's vicious and dangerous. Since no one can really be sure who's right, isn't it smart to be as strong as the bear? If there is a bear." (Hal Riney)

Re: Defeating a 40-year-old copy protection dongle

#287

Earlier quoted context omitted.

Another method (much more common for software that asks for two pieces of information, like a name and a key) is to take a memdump of the process at the "your key is invalid" dialog, find the invalid key you just typed, and hope that a valid key is somewhere nearby in memory. Unlike the assembly trick, this requires 0 programming expertise beyond the ability to type `strings` on the command line. This works because s…

The proper thing to do is not to zeroize the correct string memory before comparing. The proper thing is to only store the hash in the binary in the first place, not the correct string. (Although having a 2nd layer of hashing before comparing might also be a good idea, and in that case you would want to zeroize the 1st hash before comparing the 2nd hash.)

You can't not store the correct string in this case, as the key is calculated from the user's email address. There is an infinite number of possible keys. THe only way to check if the key is correct is to recalculate it yourself.

These days, I guess you could make the key an ECDSA signature for a public key embedded in the binary if you were willing to accept such long keys.

Re: Defeating a 40-year-old copy protection dongle

#288

Earlier quoted context omitted.

You can break laws. You just have to realistically estimate the risk. The chance is low, but the impact is high. Maybe you set up an LLC just in case, or you act from the shadows like "Anna" The government's traditionally very weaponized. I'd err on the side of overestimating risk unless you're certain about the legalities. Your life could be ruined. Most things that are worth doing could ruin your life. You could di…

> ... but the impact is high. Wow. I kind of regret the effort supplying supporting facts and reasoning demonstrating the impact is almost invariably zero or negligible. > Most things that are worth doing could ruin your life. You could die in a car crash too. So... you agree? > You have to choose which risks to take. And you have to choose which concerns to troll. Maybe consider the potential unintended harm you may…

After Samourai, Tornado Cash, and so on, I'm not trusting anyone to tell me the possible impact of breaking a law is low. The government has repeatedly demonstrated that it's willing to apply the maximum penalty it can to anyone it hates, laws be damned.

Re: Defeating a 40-year-old copy protection dongle

#289

Earlier quoted context omitted.

Could the molecules from the food stop forming parts of my body?

I am not chemist or biologist but I don't think that is possible.

Impossibility is the only reason it can't? It would be totally legal you think?

Re: Defeating a 40-year-old copy protection dongle

#290

Earlier quoted context omitted.

It might be possible to use the rest of that RAM above the 4GB barrier as a ridiculously fast RAM disk, with an XMS driver like this one: https://github.com/Baron-von-Riedesel/HimemSX

Huh, so someone actually built this? I was thinking about something similar the other day, in the form of a Windows 9x driver that would use that inaccessible RAM as a "page file".

I did a similar thing on my DOS PC. Lots of DOS software gets confused when there is more than 64MB of XMS/EMS free. So I just gave 64MB of the 128MB to smartdrv. It's more RAM drive I ever had when using DOS for work back in the day.

Win95 complains about needing REAL mode compatibility for a RAM disk though. I wonder how much performance degradation is noticeable with a RAM disk though.

Post reply on HN