Terry Pinnell <m...@somewhere.invalid>
news:3gcebcl9ov14iibeq...@4ax.com Wed, 01 Mar 2017
20:46:46 GMT in alt.comp.freeware, wrote:
[snip]
> That's generous of you but I've definitely concluded that it would
> be a task out of all proportion to its benefit.
Alright then.
> In case it's of interest to you and others who have been
> forensically pursuing this, here's the opening part of the reply I
> received from MX Pro support:
It confirms to a point what myself and several? other posters who've
taken a look and commented, (Especially JJ) what we suspected to
begin with. I tend to disagree with the near impossible task aspect
though. It would be far easier for them (since they have the actual
source code to the application) to either write a utility based on it
that does what you seek to do, or incorporate the functionality into
the main program; although I do confess, I'm not sure the customer
base warrants the changes/newly created program time and effort
required.
Based on my own experiences with other programs though, while I agree
the task would be a difficult one from a reverse engineering
perspective, the actual effort required to write the resulting
program itself wouldn't be a difficult task.
Although I certainly understand the reasoning behind a checksum -
makes it more difficult to turn one/more macros into something
potentially harmful without your knowledge or consent. Having that
present does make the process that much more difficult. Not only
would you have to mapout the bytes which control the section you
actually want to play with, you also have to deal with a checksum as
well. Is the checksum specific for a certain amount of bytes, or the
entire .mex file (aside from it's own bytes of course)? Once you
determine what exactly it's trying to ensure stays as you wrote it
originally, you have to determine how it's generated so that you can
generate new ones to go along with the requested changes you make to
it.
It may have multiple checksums, one per macro record in fact, which
again, is something you'd (the program) have to compensate for. If I
understood you correctly, you wrote previously that you have more
than one macro stored as a single file. It would be necessary to
rewrite the entire file if automated (which is what a hex editor that
can extend bytes without overwriting what's already there) just to
change a single macro string inside. Further, it may also be
necessary to do quite a few patch record updates throughout the large
file to adjust for what was done to that single record. And this
entire process would have to be repeated anytime you decided a text
string needed to be changed in some way. Does the macro language
allow for presets of any kind? For example, could you use %appdata%?
If so, you might consider doing a different folder layout to be more
in tune with one. Another option would be a different folder layout
that doesn't require drive letter specification and would be the same
across all systems your macro is intended for.
And you always have the best (imho) option, switch to software that
is open which wouldn't make what should have been a relatively
trivial direct file editing task much more difficult than it needs to
be. I tend to use/run software that has open file formats. If not
outright open, doesn't go out of their way to make my efforts to map
it out a difficult pain in my backside.
> When Macro Express changes a macro it determines if the new macro
> will fit in the existing space. If it cannot then it adds it to a
> new spot at the end of the list of macros and marks the original
> space as unused. The Pack commands reclaims that space. (The Pack
> command comes with its own side-effects, however.)"
Off the top of my head, possibly due to a bug in the routines that
'pack' and/or the file layout itself, one could damage/outright lose
one or more valid macros during the packing process. I could see that
happening, since it treats the .mex files much like an OS treats it's
file system. Files you delete via normal methods aren't deleted, the
first letter is renamed to a non standard character which tells the
OS not to show it to you on directory/folder/file listings and that
the space it once took is available for use, if the OS is asked to
write something that can fit within those confines AND that area is
next in line for a partial/complete fill in.
I know, likely much more detailed information than you wanted.
Apologies. :)