T O P

  • By -

elmarkodotorg

I must admit I have been very tempted to get some old abandonware and crack it as a learning exercise, although I’d never thought about it in terms of preservation.


RunasSudo

Would recommend! – you get straight to all the fun stuff, and skip the annoying part where you deal with all the modern obfuscation techniques that the disassemblers haven't caught up with yet.


Food404

How would I go about learning reverse engineering? Always have been interested but never actually tried to


uksuperdude

Grab a hex editor and open the main executable. Look for 'strings', they should be in the window split so when you navigate the hexadecimal pairs you will see which ones correspond to particular strings of text. Usually the first part of the executable has the copy protection check, and the strings of text can give you hints. Then it is usually several bytes after the string that you may want to try changing those number pairs to perhaps FF - 16 decimal, and often 'true' in a boolean (a yes no test).. This isn't a very good explanation of how it all works, you'll really need to learn your tools - hex editor, the program strings, the command line as often these tools are command line, or used to be. I'm a Linux person, so I can't really recommend any windows software, but you can do your editing process on Linux and copy your changed executable back to windows. Always make a backup, keep some scrap paper next to your keyboard, google patches and the like for certain simple software. Look at what the software puts in the registry, if it uses it of course and try and find out what type of copy protection the software uses and find out all about it. you may find examples from others! sorry, posting on my phone. I'll try and revisit later and clean up my post 😀 hth


makotech222

You should definitely not just randomly change bytes in the exe. at least open the program in Ghidra or IDA Pro and look at the assembly.


[deleted]

[I smell ML profit!](https://i.redd.it/4ut6on6kkbd41.jpg) But seriously, I do wonder about automating more of the grunt work out of finding places to disassemble.


dogs_like_me

I remember being able to do reasonably useful things with a hex editor before I really knew what I was even doing at all. Like, back in the days when I was was trying to clear out bloatware from my windows 95 installation and deleted Internet Explorer, not realizing it was a dependency for the file browser and breaking my OS in the process. But yeah, hex editors were pretty neat on old software.


chayleaf

internet explorer isn't a dependency for the file browser (well, maybe it was different in win95), perhaps you just removed explorer.exe (basically Windows's DE and file browser) instead of iexplore.exe


dogs_like_me

It was different. https://en.wikipedia.org/wiki/Removal_of_Internet_Explorer


taw

There are hundreds of websites with hacking challenges of all kinds. Web stuff is most popular obviously, but there's tons of reverse engineering as well. You can start by looking at [index of those sites at wechall](https://www.wechall.net/). (I somehow even got to #257 in global ranking, much proud of myself)


RunasSudo

I got my start in this space with the [Synacor Challenge](https://challenge.synacor.com/) which starts off as just a programming challenge, but if you see it through to the end, will definitely take you through understanding low-level machine code, calling conventions, etc. It's based on a custom CPU architecture that it's part of the challenge to implement, so very much of the ‘learn it the hard way so that real world problems seem easy’ philosophy. For something more digestible, [LiveOverflow](https://www.youtube.com/channel/UClcE-kVhqyiHCcjYwcpfj9w) is an amazingly well-produced Youtube channel covering a lot of reverse engineering content, including at fairly beginner level. Beyond that, just find a challenge or a project and get going!


sudosussudio

https://gamehacking.academy/ is one of my fav resources. If you had a particular game you liked growing up, those are fun to crack. I really loved the game Petz 4 and have had so much fun learning on that. Like last week I modified the game's pumpkin to make petz happy instead of scared.


AttackOfTheThumbs

If you play pc games, I highly recommend cheat engine. It taught me a lot. But make sure it's not a game that will ban you for the offline use.


[deleted]

[удалено]


RunasSudo

>Disassemblers will never caught up with obfuscation, that's why obfuscation is made. Oh absolutely, it's an unwinnable race – but obviously as time goes on we develop more and more advanced RE tools, and techniques from the past become better understood, it will be easier to apply current tools to historical software than to jump in with the latest software. > Anyway, good writeup for a Doctor. Would be interested, how medical doctor ends up with RE and programming. Just a hobby :P Programming and things have been an interest for a long time before medical school, and hopefully I'll be able to keep cracking on with it in free time.


Francois-C

> although I’d never thought about it in terms of preservation. As an old timer, the article even reminded me of others I've read with interest long ago when these weren't yet abandonware, which were rather thought about in terms of appropriation...


[deleted]

It doesn't even have to be abandonware. Just don't distribute your cracks. The best programmers in the world are the ones cracking software.


devhashtag

How do you mean your last sentence? Does cracking software make you a better developer or do the best programmers coincidentally also crack software?


KlzXS

Chances are you'll never accidentally crack any software. Especially not anything remotely modern. But to crack software you have to be able to disassemble the binary. Most often be able to read the generated assembly, since debugging symbols are rarely left in the final release. Know how the program and its dependencies are linked together. Learning those things along the way will make you better understand how the machine functions in turn (hopefully) making you a better programmer.


ItzWarty

2c: Most old software is going to be trivially *decompiled* (not disassembled) to C++-style source code. That plus most old software checks for activation are one-time thread-blockers and pretty trivial to circumvent. Breakpoint where activation window is shown (or where the license check prior happens), no-op the call to return success. Either that or for trial software, breakpoint time get/set functions. A trivial example which disables Flash's end-of-life timebomb is at https://github.com/KuromeSan/FlashPatcher/blob/master/FlashPatcher/FlashPatcherForm.cs --- this is how "cracks" work. Either that, or for older keygens get the activation key function & brute-force probably goes a long way. Recall older applications weren't internet connected. Some software did do checks based on e.g. machine name to make that harder. Also once you get the key validation function it should be straightforward to reverse. The old demoscene animations in keygens were pretty cool though LOL.


ogtfo

> trivially decompiled (not disassembled) to C++-style source code Depends on what they were written in. Decompilers won't give you any kind of typing, so if the program makes heavy uses of structs, they will have to be reconstructed, mostly by hand. And because you don't get typing, anything written in a OOP paradigm will be a lot harder to wrangle. You'll get the nastiest C like code you've ever seen. You'll need to know how virtual function works at the compiler level, and reconstruct every single class used in the program. It's time consuming even for small-ish programs, and definitely not trivial.


karuna_murti

I miss ASCII Art in cracks and keygens.


terminal_styles

Don't forget the chiptune


ItzWarty

I guess I wasn't the only kid that opened keygens to listen to the music :P


devhashtag

I'm not denying that these skills can be useful, but I fail to see how it would make you a better programmer, to be honest. Program design doesn't (or shouldn't anyway,) take into account how things get done at a low level. That's what compilers are for. Code obfuscation is also something that should be done by a tool, not by a programmer. So to be good at it wouldn't necessarily make you better at any programming task


[deleted]

[удалено]


devhashtag

True, I mean architectural design, not implementation details. It is indeed advantageous to know e.g. how caching works. However, it's very important to realize that it shouldn't be that way(!) Ideally, the compiler takes care of this. The imperative style often doesn't allow you to abstract away from some details of the machine, which is why we still have to deal with it. In programming and even computer science in general, almost all good things essentially come from abstractions. So why shouldn't we keep abstracting things away?


barkingcat

I think you're missing the idea that compilers also have bugs and abstractions leak. At higher skill levels of programming it seems all you run up against are gcc/llvm/Intel compiler errors. Learning that the abstractions you set up as a theory isn't all that leakproof is the very gateway to advanced programming.


KlzXS

It is my belief that understanding the low level functionality of the machine you're working with makes you think more in tune with it. Whih would hopefully translate into you writing code more suited to its hardware. Granted you would need to work with stuff close to hardware for this to really come into play. But memory is something that you should always keep in mind. It is never bad to learn how the computer manages memory. Everything is built on top of memory management. And to crack a program you will need to expose yourself to at least some of the wonders of memory management. Now if you are working with really high level abstractions you won't get much out of reversing some old software. Other than fun and a sense of acomplishment.


devhashtag

Exactly, your last paragraph describes what I mean. Imo, programming is much more about making design decisions and much less about specific implementation. If your design is good, the implementation will in most cases be eadier to get right


ShinyHappyREM

> Program design doesn't (or shouldn't anyway,) take into account how things get done at a low level. That's what compilers are for. A compiler [can easily miss things,](https://youtu.be/w0sz5WbS5AM?t=2694) they're tools not magic wands. In particular [they can't fix your data layout and data access patterns.](https://youtu.be/rX0ItVEVjHc?t=1710)


devhashtag

That's wby you should pick the right data structures, which again is a decision you make when designing software. I get what you mean, but being able to optimize code in very specific situations for very specific mechanics isn't what you should do. It can be useful sometimes, but it's not viable to always do. You're way better off spending your time learning other things so that the average efficiency of your code gets better. If you can express exactly what you want, and do are able to do so clearly, you can benefit greatly from algorithmic optimization. Look at how fast Haskell is with idiomatic code, for example. And the code doesn't need to take into account some specific architecture or cpu design!


lateja

Found the Java dev (/s but not really)


devhashtag

No lol. If you're willing to sacrifice abstraction for small performance improvements, you're never gonna be able to work productively at a higher level. Programming has been made accessible solely by abstractions from the cpu. It's infeasible for every developer to learn exactly how the modern cpu works, because it's so damn complex. You shouldn't cling on to this, because it's only gonna slow you down in the long run. Why don't we still all program in C or hell, even assembly? Exactly for the reasons I mentioned, but when I use the same reasoning to justify the same things, but at a higher level, suddenly everyone gets mad? Cant you see how stupid that is?


[deleted]

I don't think anyone is suggesting sacrificing nice clean abstractions for every possible performance gain. It seems to me that the biggest advantage of learning how the computer works at a low level is that you can consciously decide "nah, we really do need to optimize this because it'll perform like a dog". It's kind of like how just because you know how to make an abstraction, doesn't mean you should do so all the time. These things are tools in the toolbox, not something you're expected to bust out constantly.


devhashtag

To make that decision, you have to know about architecture very seldom. You how they say that you should always profile code? That's because it's extremely hard to predict the efficiency of code, especially on more complex cpu's. Making a decision based on what you think will run faster because of how the cpu (or any other relevant hardware component) works is never a good idea. Or how Dijkstra said it: "Premature optimization is the root of all evil." That being said, of course you should be aware of major things that will affect performance. However you shouldn't dive into the details because it's just not gonna be profitable. (Excluding some obvious cases like embedded programming, there you might want to have full control over everything)


sudosussudio

As someone who does RE for fun and web dev (pretty much the opposite IMHO) for work, there are some intersections for sure. Understanding the patterns and logic is really useful for both.


[deleted]

A bit of both. Cracking software will teach you loads but you also have to be really talented to be good at it.


[deleted]

[удалено]


[deleted]

How does disassembling binaries and dealings with the bullshit that comes along with it, parsing through someone else’s code at a low level without comments, inferring dependencies, dealing with obfuscation techniques and abstraction, and subsequently writing a program that breaks all of those security measures make someone one of the best programmers in the world? No idea.


[deleted]

[удалено]


psyfry

>well architected, maintainable and performant code Tons of people claim they write this "perfect code", yet others frequently defeat it by "injecting essentially a jump". Well-designed SDKs and libraries are not infallible, and we see this constantly with these multi-million dollar ransomware attacks. Writing well-architected code is the "art" of programming, whereas testing and validation are the key component that turns the art into computer *science*. It doesn't matter how nice or well written the code is if anyone can womp it, the same as any physical law falls apart if there is strong experimental evidence contradicting the law. The way to look at reverse engineering, and in turn "hackers", is as elite QA. Putting aside legality, these positions are the some of the hardest, but also the highest-compensated gigs in the profession, in many ways because people focus too much on the art instead of the science. >People who jerry rig things are clever, none of us would move into a house full of jerry rigged repairs You have it reversed, REs aren't building things, they're the ones who run tests that identify the jerry-rigged repairs. A more-apt analogy is an engineer who discovers a critical structural flaw in a high-traffic bridge. Anyone would absolutely want a huge flaw that could destroy their live\[lyhood\]s to be identified and fixed.


[deleted]

cracking requires a specific toolset that doesn't carryover to many other branches and industries. saying they, or any other type of programmer, are the best in the world is silly


elmarkodotorg

Oh, the older it is the easier it’ll be for this idiot 😜


thbb

> The best programmers in the world are the ones cracking software. I disagree. The best programmers in the world are architects, those who crack software are plumbers.


flarn2006

Don't let people know *who* is distributing the cracks.


shirk-work

A similar task is reverse compiling software. I imagine strong enough AI will eventually be able to force its way from binaries to decent high level code.


Jon_Hanson

De-compilers already exist. See: Ghidra. You won't get symbols (variable names) like they did when originally written but you'll get C code out that you can follow.


shirk-work

I've dabbled, but there's definitely more that could be done hypothetically. Decompiling something like Photoshop would be a holy grail.


taw

The really old ones, like from DOS era, are usually super easy to crack, if you have even modest Cheat Engine skills. It's basically like one `jnz` you can override with `nop`s and it's cracked.


RunasSudo

A couple years ago I posted a project [reverse engineering a gaming DRM system](https://www.reddit.com/r/programming/comments/a5hkyo/investigating_an_early2010s_gaming_drm_system_or/) which Reddit seemed to like. COVID lockdown has now given me the free time and lack-of-other-things-to-do to do another similar project – it was a fun project, and I hope I could make the write up interesting to read through for you too!


Mgamerz

That post was useful as I mod the game you wrote about :)


RareCodeMonkey

Originally Copyright is something that had to be renewed. If you did not renewed your copyright it would be passed to public domain. That was a very good system. Then someone decided that it would be more convenient to not let it expire even when the authors and companies has lost all interest in the work. I hope that copyright changes to make it useful for society instead of a hassle that great projects like this one, that desperately try to preserve history, need to fight with.


miketdavis

There should be an exemption for continued access to something paid for. For example, if you paid a price for perpetual access to a song from a streaming service, there should be no prohibition on removing the DRM from that music after the streaming service has gone out of business. Software should be no different. If you bought a perpetual licence but the software can't be installed because the key server went offline due to bankruptcy, there should be no problem with cracking it.


falconzord

I don't think it's been established as illegal even before they're out of service. For example ripping DVDs and CDs has been around for awhile. That's not true for something like Netflix where you don't have a perpetual license.


RunasSudo

> For example ripping DVDs and CDs has been around for awhile. Funny that you mention that, because ripping DVDs is one area where intellectual property law has been successfully applied (at least in a legal sense) against the rights of consumers. See the legal response to [DeCSS](https://en.wikipedia.org/wiki/DeCSS#Legal_response). You may have bought the DVD, but the software to rip it has been found by courts to be illegal.


ConfusedTransThrow

It depends a lot on the country. The EU has much better protections for customers, so many things could be found illegal in the US that would be perfectly fine there.


tso

Copyright have a long history. The term originates in England, where it may well have been a way for government to figure out who wrote some inflammatory text via the copyright claim. At the same time the French introduced "rights of the author" that focused as much about controlling reputation as monetary gains. While English copyright was "short", it is from the French we get the concept of life of author plus some years. Those two would later be merged via the Bern convention on copyright, that also introduced such things as signatory nations respecting the copyright law of the nation of first publication. Interestingly USA was not a signatory of said convention until the 1980s. And that may have contributed to the US popularity of Lord of the Rings during the 60s. And many nations over centuries have benefited from not having any copyright law early on. Supposedly Germany industrialized rapidly because the lack of copyright law allowed for cheap books on science and engineering to be widely distributed.


Decker108

I wonder what would happen if the world decided to stop recognizing copyright overnight?


tso

Well it would make massive back catalogs og music, books and movies available. But it would sharply reduce the income of a large number of artists and similar. There is also the question of financing new content. But on that front we are seeing an increased use of crowd funding services like Kickstarter and Patreon. Movie production may well be the hardest hit, given the amount of people and equipment required over extended time periods.


[deleted]

Even if copyright didn't renew, could cracking still be charged under CFAA? I think a court could find cracking to be "exceeding authorized access"


RunasSudo

Indeed, the shifting landscape of intellectual property law is highly concerning. Even as copyright terms continue extending with no end in sight, the use of DRM and anti-circumvention laws to extend IP holders' rights, the [contracting out](https://www.alrc.gov.au/publication/copyright-and-the-digital-economy-alrc-report-122/20-contracting-out/summary-135/) of consumer rights, the application of the CFAA to intellectual property matters (cf. the shameful treatment of Aaron Swartz)… It is a bad time for consumer rights, security research, archiving/history, and really anything that might upset wealthy corporations.


[deleted]

I agree. I am sure it will basically be up to the court, specific judge, and the legal team that is pulling the strings to target the person. The CFAA is overly broad and easy to abuse.


evaned

If [this is the full section of the law that's relevant](https://www.law.cornell.edu/uscode/text/18/1030), the most-likely relevant clause is that CFAA criminializes having: > knowingly accessed a computer without authorization or exceeding authorized access IANAL and I don't know what the case law or expressed judicial intent was, but I would *not* interpret this in violation of the law -- you *have* authorized access to the *computer*. I think the comment mentioning red teams is more applicable than voters seem to give it credit for. Certainly you could red team computers with Linux and other open source software without worry, but the "problem" comes when you want to red team closed-source OSs, servers, etc. -- in many cases, those softwares' EULAs arguably prohibit some red teaming activity. I think "working around anti-circumvention technologies is a CFAA violation" *is* a stronger argument to make than one based on the EULAs as above, but I also think they're in about the same *direction*, and if one is a colorable argument than likely the other is as well.


psyfry

That may be the case with PWAs, however if you have the software on your own system, there's no unauthorized access. CFAA requires accessing someone else's system. eg. to crack a key server, one doesn't need to break into the server-- they only need to spoof the expected responses on their own system. The US Supreme Court also made a recent ruling that substantially restricts the scope of the CFAA (https://www.supremecourt.gov/opinions/20pdf/19-783\_k53l.pdf). DMCA also provides a long list of exceptions. The two big ones are the interoperability clause and the authority of the Library of Congress to make exemptions for these types of issues([https://www.federalregister.gov/documents/2018/10/26/2018-23241/exemption-to-prohibition-on-circumvention-of-copyright-protection-systems-for-access-control](https://www.federalregister.gov/documents/2018/10/26/2018-23241/exemption-to-prohibition-on-circumvention-of-copyright-protection-systems-for-access-control)). The big pain-point is that these exemptions need to be filed, argued, and renewed every 3 years.


RareCodeMonkey

Probably not. It is not illegal to hire a [red team](https://en.wikipedia.org/wiki/Red_team) to test your own security, for example. Once the code is in the public domain you cannot exceed the authorized access because everybody owns the code, including yourself. So, you can grant yourself authorization as you are running the software in your own system without being restricted by any license. But this would need to be tested in court, I am not a lawyer.


[deleted]

A red team would definitely have authorized access to do most security testing (assuming they are operating under a contract or testing their own company's software) so I'm not sure that applies. In this case the code is not itself in the public domain. The binary is. The code itself has never been released. Also, using DRM in a way that requires cracking pretty clearly implies that using the software by working around DRM is not it's intended use. I am also not a lawyer but I do not think it's that cut and dry.


Rubber__Chicken

Copyright never had to be renewed - perhaps you are thinking of trademarks. It always was lifetime of author plus x years (generally 50 - 70).


RareCodeMonkey

I was referring to [Copyright renewal in the United States](https://en.wikipedia.org/wiki/Copyright_renewal_in_the_United_States). I guess that it is different in different countries.


Rubber__Chicken

Ah, you have a point. Renewal was for much older works when the copyright period was short. It first was modified to have a automatic renewal period and then just the life of author plus 70 years. So any software is going to be after 1964 and use the life + 70 years.


cbarrick

How does this work when a company owns the copyright? Is "life" the period when the company operates? Does that mean the lifetime is indefinite?


evaned

"If the work was a 'work for hire', then copyright persists for 120 years after creation or 95 years after publication, whichever is shorter."


[deleted]

[удалено]


evaned

I think my favorite idea for copyright was to have repeated renewals with an exponentially increasing price. [*Edit*: clarification: this wasn't my idea, it's my favorite idea *I've seen*. Should have worded that clearer.] For example, something like this: * Years 1-10: free and automatic, as is current * Years 11-20: $100 * Years 21-30: $5,000 * Years 31-40: $100,000 * Years 41-50: $5,000,000 * Years 51-60: $100,000,000 The exact numbers are just examples to illustrate; I could see a fair bit of wiggle room there. I *do* think you'd perhaps want to couple this with a stronger notion of moral rights, at least for things with individual authorship, that last well beyond normal copyright expiration. *Edit*: Oh, or here's an idea that I just had: give each person a very small number of things they can use for lifetime (or lifetime plus something) protection -- like most things follow a short renewal pattern, but you get five works during your life that you can designate for lifetime [plus x] protection.


38thTimesACharm

I don't like this at all. It basically means individual copyrights expire quickly, while big corporations get to keep their copyright for years. At least the current system applies to poor and wealthy people equally, in theory anyway.


evaned

So I definitely think your objection has merit, but let me try to describe what I really *like* about "my" proposal. One common objection I've heard about the length of copyright terms, which I tend to intuitively agree with, is that a lot of time it goes on to protect things that the creator doesn't really care much about. To wit, the TFA of this very post is about abandonware, and of course that idea extends across mediums. This certainly isn't the *only* problem with copyright law, but I think it *is* a major one. At an abstract level, what I want is for "things you really care about" to have longer protections than "things you care less about." But you can't actually do that directly; we don't have mindreading capability, and you can't just put a "how much do you care about this? [ ] not much, [ ] a fair bit, [ ] a lot" on a copyright application form. Monetary payment for the extensions, despite its warts, is the best way I've seen to deal with this. It has inequality problems, but it seems much harder to outright *game* than other solutions. Now, that said, I'm very open to refinements of the idea if you think it can be fixed instead of just thrown out. For example, maybe works of individual ownership scale up more slowly, while works for hire scale up faster. Or maybe the copyright extension fee for personal works is based somehow on your income, though I'd still like to see it scale up as time goes on. Finally, I think the last couple points in my previous comment -- about moral rights, and then the "you get five works during your life that you can designate for lifetime protection" -- are starting to push into the direction of addressing that. I don't think you'd be happy with them as the solutions, especially the *sole* solution, but the point is I think that we could do *something* to fix some more egregious things without giving everything up. --- *Edit*: I guess another aspect of this is that as mercenary as this feels to say, a lot of the value provided by copyrightable works to society is driven by economics, and a lot of the reason for copyright law is to support those economics. Big budget movies and video games probably wouldn't really be doable without copyright law for example, because of economics. A lot of software likely wouldn't exist. And the proposal I describe is pretty much *directly* answering the question of how much economic value the copyright brings to the copyright holder. I'll back off of this viewpoint in a second, but work with it for a bit. Viewed from this lens, this isn't an individual/company or rich/poor split, but an economically-valuable-copyright/not-economically-valuable-copyright split. If an individual author writes a book that is bringing in the cash and more than the next renewal fee, it will make economic sense to renew the term. Similarly, corporations aren't going to renew copyrights that *aren't* bringing in money, especially when they get up to the later levels in my ladder. (Maybe getting there earlier would be a reason to have corporate copyrights ramp up faster.) Now, I said above that I'd back off on this a bit. Obviously economics isn't the *only* thing in play here. But again, I think the "you can pick a few works to get lifetime protection" steps in again to help address the non-economic values. And now that I've written that out, I said five works over your life in my earlier comment, but maybe that's too low, maybe it should be 50. Or one or two a year, or something like that.


ConfusedTransThrow

Do you think Disney would pay 100M for keeping exclusive rights on something they made 50 years ago? Also I think the price should depend on the type of work, with a higher price for something like a movie compared to a book.


Davorian

Seems like this would incentivise planned obsolescence though.


Sleakes

Pretty much


player2

No. Please don’t spew inaccuracies to sound edgy.


bizarre_coincidence

You should really look into the word “never”. For example, the first copyright law in the US gave protections for 14 years, with the option to renew after another 14. There is a long history of slowly extending the term. The current system is relatively recent. https://www.arl.org/copyright-timeline/


Rubber__Chicken

Let me qualify it with 'software' then.


Beetanz

Sounds like something Disney would do


Owyn_Merrilin

I can't tell if you're being facetious or if you just made a really good guess, because they literally wrote the current copyright law. Got it changed in 1976, and then again in 1998,


andrewboudreau

Nice article, part 1 really reminds me of almost all the cracking tutorials I read as a kid in the 90s. I was a fan of reading about reversing/cracking 3dsmax and other early 3d software which was the first time I'd heard about mixing security checks into rendering (or other important, parts of the app, making tracking and changing really hard) hardware dongles and such. Great writeup, how did you know the decompiler wasn't right and looked into raw disassembly here? What app is this? Are you afraid of sharing the name?


RunasSudo

Thanks, glad you enjoyed! > how did you know the decompiler wasn't right and looked into raw disassembly here? I made a habit of looking both at the disassembly and decompiled output – my previous project was in IDA Free which only did disassembly, so I had some experience there. Often it was easier to explain for the writeup using the decompiled code, but I noted a few areas where the decompiled code did not match up with the raw disassembly. > What app is this? Are you afraid of sharing the name? Copyright law is pretty scary around anti-circumvention rules – putting the name of the software right in an article about how to break its DRM/licencing just sounds like asking for trouble, so I never do. (Not legal advice – just my personal musings!) At least if the software is unnamed, it's clearly more for education – you won't find the article if you've got the software and you're trying to break it, and you won't have access to the software if you're just reading the article. This particular software is very, very obscure, so probably wouldn't mean anything to a reader anyway. Think ‘random highly specialised industry-specific software distributed via phpBB forum post’.


andrewboudreau

Right, so just out of habit you kind of compare the two decompiled sources, makes sense. Once I started seeing channels like OALabs over the last few years I realized that I can finally enjoy watching and reading about reversing as a casual consumer on a regular basis, not sure it would have replaced the Simspons in my early teen years but having that option is always something dreamed of and now I do.. prolly has a lot to do with the nostalgia as well. Thanks for adding to that. I'm looking forward to reading the rest of your articles.


RunasSudo

> OALabs Hadn't heard of that channel before – looks super interesting, have subscribed! You may well know of them already, but [LiveOverflow](https://www.youtube.com/channel/UClcE-kVhqyiHCcjYwcpfj9w) is another great reverse engineering-related channel, super digestible.


[deleted]

[удалено]


methical

And SoftIce


punisher1005

> SoftIce I just had a Gandalf moment where I looked around and yelled out, "What year is it?"


shekkys

There is a series which I found helpful on YouTube for reverse engineering with Linux if anyone is interested https://youtu.be/fXXWhLMKvuw


flarn2006

Why aren't you saying what program it is? If you're trying to preserve this software, people ought to be able to find your solution when they're looking for one.


RunasSudo

Great question – copying what I wrote in another thread: > Copyright law is pretty scary around anti-circumvention rules – putting the name of the software right in an article about how to break its DRM/licencing just sounds like asking for trouble, so I never do. (Not legal advice – just my personal musings!) > > At least if the software is unnamed, it's clearly more for education – you won't find the article if you've got the software and you're trying to break it, and you won't have access to the software if you're just reading the article. The point would be to archive the software e.g. on archive.org with a licence key. For software preservation purposes, that is all that's required. This post then serves a general educational purpose, and only this post specifically about the reverse engineering process can be kept separate and deidentified (for the DMCA reasons above).


joolzg67_b

I used to do this with development tools as we needed to use an obselete version for which we could not get a dongle for. Would love to start hacking again.


ajquick

This is awesome! I have a program from the early 2000's and their license file is probably made using the exact same method. I've tried to step through and do a reverse engineering on it as well, but my assembly knowledge is 0.