DevaTools for Dreamweaver UltraDev

Navigation through Deva's Subtleties

Date 10/20/01
by Sojourner
Published by Tsehp
There is a crack, a crack in everything. That's how the light gets in.
()Beginner (x )Intermediate ( )Advanced ( )Expert



"Deva™ is a family of products that will help you create easy-to-use navigation systems for web sites, intranets, and HTML-based help. Deva helps you leverage the power of Macromedia® Dreamweaver® for creating HTML content by expanding Dreamweaver capabilities to easily create tables of contents, keyword indexes, and full-text search systems."

Tools required

not really needed this time--w32dasm 8.x--your choice of flavors --Try Protool's site--

softice -- look around

hex editor needed- UltraEdit 8.xx or whatever you want to use-

not needed---Restorator 2.5 or any resource editor you wish-- you'll have to look around to find this baby or get something from protools:

unpacker for neolite from protools or a dumper. see above link.

Dumpfx by yoda, maybe by protools. see above link, also.

You will in all likelihood collect other tools as you go along, even as I have. I want to thank those people who have contributed to the scene in this way.

Target's URL/FTP

Just go to this site and then download what you need.

To Do List
What to do - our only "to do" is to fix the time limit

As always, we start at the beginning. You have downloaded the software haven't you? And you do have UltraDev or Dreamweaver already installed don't you? If you don't then you're wasting you're time because you won't be able to follow along. I got into this program because I'm always looking for tools to extend Dreamweaver UltraDev and I think I found this guy originally because of the Macromedia site. They always list xtras for their software and now something called "extensions" for some of their software. DevaTools looked like a likely candidate as a potentially useful tool. I like, and use RoboHelp for standalone help files and DevaTools seemed to offer some of the same capabilities in a limited way. It was worth a shot anyway.

It was hard to follow the installation of the files but you end up with some important directories inside of Dreamweaver, like **\Configuration\JSExtensions\ and ***\Configuration\Shared\Deva. The first was found to be most important. How, you may ask, did I "find" that little nugget? It is a good question and one that deserves to be answered. By looking around in these directories you'll find several .dlls. You'll also find that these have been compressed maximally with neolite, so you won't be able to uncompress them with neolite. You'll have to use another method. There are several unpackers around which may be able help here. Please bear in mind that this is not a tutorial dedicated to unpacking. There are plenty of others far more qualified to assist you in these endeavors.

After you have installed DevaTools and cranked up Dreamweaver or UltraDev you will get a notice telling you that this program has 30 days to use and then register it "blah, blah, blah." Actually that little tidbit eventually leads to a timeout message that originates from DevaReg.dll. The timeout mesage was discovered using softice and setting a breakpoint on the user32.dll messageboxa---bpx messageboxa. You have to bear in mind that the offset you see will be from a file that is now unpacked sitting around in memory, because if you go straight into the DevaReg.dll, it won't be there with that same info. You have to unpack your files first. I will tell you that DevaTools uses shrlk21.dll to protect their running app. But, you can't use the one sitting around in your c:\windows\system area, because it will recognize that as a bad subtitute. Again, you have to unpack it to use it properly. There are several unpackers to try. I say, 'to try,' because some dumping or unpacking of files will cause corrupted files. You'll just have to try and see what works. Additionally, you may need to use a tool like, ProcDump to help identify certain aspects of a file, like size (say 00136000) and base size (say 00400000) in case you're using a dumper such as IczDump that requires a total size or range. Another thing, do one file at a time and then check it through Dreamweaver before going on to the next one. There's no sense in doing a whole lot of dumping and changing without checking first. You'd just be wasting your time. Additionally, you can't isolate problems when you do a mass set of changes. And realistically, you only have to work on the shrlk21.dll. The others are merely for academic study if you wish to.

************Things to do--only one thing here this time!

Now, how did I discover that shrlk21.dll protects these .dlls? If you just start Dreamweaver fresh without having done any changes yet, you can use DumpFX by yoda to see what .dlls are loaded by Dreamweaver and you'll be able to see all the currently loaded .dlls, including the DevaTools dlls. DumpFX shows us that in the \Dreamweaver**\Configuration\JSExtensions\shrlk21.dll resides and is providing protection, but it may also be found in the \Dreamweaver**\Configuration\Shared\Deva\ directory. The only one I've found that we need to deal with is the first one. Again, you need to perform a dump of this .dll and be sure it works right. Now once you have a good working copy of shrlk21.dll, use softice and set a 'bpx getlocaltime' because we know that we time out eventually and there has to be some kind of a checking mechanism going on. This is a very commonly used way of doing these checks, and it is indeed the way in which this check is done. One of the easiest ways to deal with this is to breakpoint in softice and catch it there, because with the dumped .dlls, you may not know where there is directly! We have to go about this in a round about way. I caught the break at 03608C81 mov cx, [esp+0E] <--the day

03608C86 mov dx, [esp+0A] <--the month

03608C8B mov ax, [esp+08] <--the year

This is all we see in softice. W32dasm is very good about disassembling files, but if these files are mangled in any way, it won't do right. Now, since I told you that this way of catching date checking is very common I, of course, have other disassemblies that I have that does have all the code I need so I can see the proper way to set this up. If you want to load a good date just check to see when you first installed the software and ran it. Use that date. All you're wanting is the day, month and year all in hex format. Here is a repeat of above with original code in place and the fixed code at the end.

03608C81 668B4C240E mov cx, [esp+0E] <--the day 66B9010090 mov cx, 0001

03608C86 668B54240A mov dx, [esp+0A] <--the month 66BA0A0090 mov dx, 000A

03608C8B 668B442408 mov ax, [esp+08] <--the year 66B8D10790 mov ax, 07D1

Bear in mind for the sake of this tutorial that these dates I have set above will not be your dates. They are just for illustrative purposes. You need to insert your correct date in there in hex, of course. Just follow my format and you'll be ok. Now, naturally, you can single-step through softice once you have caught the breakpoint, just F-11 once and you should be at the calling function return point. Here you can see what is actually loaded from the getlocaltime call into the registers there: cx, dx, and ax. The question becomes, since I can't use w32dasm, how am I going to find the correct offset in order to patch the file. While you are looking around in softice as noted above you will see somehting like "shrlk21+8081 text" at the bottom of the code window. This can help you to localize that offset. Additionally you can do a search in Ultraedit for 668B4C240E and you will find it at 8055, but there is another just a couple of lines down at 8081. Just be sure you change them all and you'll be all right. So, in all, you're looking to change six entries:

8055, 805A, 805F, 8081, 8086, 808B

Again, I emphasize that these are MY dumped offsets and may not be yours. Do your own research friends. I am here to help. Once you have accomplished these changes, your prog will not time out and you can continue to evaluate the quality of DevaTools. It's difficult to truly evaluate something in 30 days! Heck you may not even use it enough during those 30 days to effectively manage that evaluation.


Final Notes

This was a more difficult lesson because of the complexity of the task. There were many steps to perform and trials, but certainly worth having to look to figure things out. Until later.
If you have any questions please feel free to contact me at

Oh Duh
I wont even bother explaining you that you should BUY this target program if you intend to use it for a longer period than the allowed one.