Re-Enabling Disabled Functions Author: Volatility http://www.ImmortalDescendants.com 03/09/99 Please Read The Disclaimer
Before Continuing.
A friend of mine going to college for electronics challenged me to this program. This essay doesn't outline a complete crack, just the re-enabling of some functions my friend needed :) There are many other interesting things that can be done with this program, so if you'd like to continue on, I'll gladly add your additions to this essay (with full credit to you of course). Read my notes on some of the things I found at the end of this essay if you're interested. This is not a complete newbie's essay, so it assumes you have some general cracking knowledge, such as dead-listings, conditional jumps, assembly etc. Prepare To Crack If you're like me, you won't even remotely understand how this program works. So, I had to badger my friend to tell me what the disabled functions were. He told me that in the Student version, you can only place 50 components on the board (.ckt file), and additionally, you cannot "Run" the simulation. Since I also didn't know how to work the program, I had him send me a .ckt file that already had 50 components on it. I also had him teach me how to add components to the board. Now I have enough info -- time to rock :) You can add components by typing r or c, or by highlighting and right-clicking one, and choosing "duplicate". Once you get up to 50 components on the board and try to add another one, you'll get a nasty little message box that says "The Student version's schematic limit of 50 devices has been reached". Make a note of this string. Make The Crack Let's disassemble this sucker, and look for our string. Open the program in Wdasm ("Disassembler", "Open file to disassemble"). This will take awhile (or at least it does on my tiny old 75mhz cpu). Once disassembled, open up the SDR (String Data References) window ("Refs", "String Data References"). There are a TON of strings
listed, but we're interested in finding "The Student version's schematic
limit of 50 devices has been reached". Once you find it, double-click
it, and you should land here:
Now, obviously we want to jump to the "good guy" routine, not continue on to the error... so let's change the condtional jump above from jl, to jne -- this should ensure that we always jump to the "good guy" routine. 1) Highlight the
line "jl 004271B5", and get the offset from below (should be 26597).
Now we should always jump to the "good guy" routine, so let's run the patched program and try to add more than 50 components to the board. If we press r and/or c, we can sucessfully add over 50 components! Now let's highlight one, right-click it, and choose "duplicate". Uh oh!!! there's that nasty message again... looks like we have more work to do. Open up the SDR window
in Wdasm again, and find the string again. Double-click it, and
we'll find another instance of this string here:
Hmm... nothing interesting
here, but as we can see, the string is referenced by a jump... so let's
follow this reference. Scroll up until you get to the jump at
004B4341. You should now be here:
Now we could try patching this jump, but we see a better jump above this one (you should always follow jumps first to see what the routine they land at looks like). Let's patch the line "jle 004B4347" by following the same steps as the previous patch (of course changing the offset, and changing the bytes from 7E19 to 7519). Now, let's run the patched program again, and try to add more than 50 components again. We can still add over 50, but let's try the "duplicate" function again. Great! Works like a charm! After patching these two jumps, I created a patch file, and sent it to my friend, but NOOOOO, this wasn't good enough for him, he had to have the cake and eat it too! Now he wanted to be able to run his simulation - picky leech :) So, let's try to run the circuit board? we created (must have over 50 components). Choose "Simulation", "Run" from the menu bar. Now we get another nasty message that says "Modified circuits containing more than 50 devices cannot be simulated in the student version" Again, let's open the
SDR window in Wdasm, and look for this string. Once we find it,
double-click it, but this time, let's be safe. Once you land at
an instance of it, double-click the string again.... good, only one
instance. You should be here:
We see two conditional jumps in the code above. To save you time, the jump that leads to the "good guy" routine is at the line "jle 004CE871", and again, you should always follow the jumps to see where they land. Patch this line just as we did the previous two times (again changing the offset, and patching the bytes from 7E1C to 751C). Now run the patched program, add more than 50 components to the board, and choose "Simulation", "Run" again. Well, I don't think our circuit runs, but the sucker sure would if we knew how to design one. Job done! Interesting Notes As I stated in the preface
of this essay, this crack is not complete. In fact, I think there
is MUCH more that can be done with this program. If you want to
continue on, and make any progress, send me your work, and I'll add
it to this essay (with full credit to you). Here are some potentially
interesting things I found: I'm sure you can find more interesting things, but have fun with these!
Copyright © 1999 Volatility And The Immortal Descendants. All Rights Reserved. |