Recent Changes to Etch and Visual Etch
Contents
Visual Etch Changes.
Visual Etch V1.182
- Multiple instances of Visual Etch can now run simultaneously
Visual Etch V1.181
- Adding tools now only requires adding a .desc file to the apps\bin\desc
directory instead of modifying params.mdb.
- Adding a perl script to be used as a tool script now only requires
that the perl script with a .pl suffix be put in apps\bin\perl. All the
files ending with .pl in this directory is automatically linked in as a
tool script.
- User32.dll now defaults to etch with husks.
- The image base check in Win95 now only checks the top bit instead of
the top two bits. If the top bit is set, Visual etch defaults these DLLs to
"no etch/no patch".
Visual Etch V1.180
- Visual Etch now checks the image base in the Win95 case. If either of
the top two bits of the image base is set, it defaults these DLLs to
"no etch/no patch".
Visual Etch V1.179
- Fixed bug that causes husk,patch, and no etch to create a run time
error in the tool scripts.
Visual Etch V1.178
- fixed by removing outdated references to threed32.ocx and grid32.ocx which
caused Visual Etch to fail to build on VB 5.
Visual Etch V1.177
- fixed bug that caused the command [vetch x.vpr] to open x.vpr.vpr.
Visual Etch V1.176
- Default project file extension is now .vpr instead of .vprj to accomodate
Win95 idiosyncrosies.
Visual Etch V1.175
- Visual Etch now asks the user for a new project name when the
selected project could not be open. This usually happens when you run
multiple instances of Visual Etch.
Visual Etch V1.174 and V.1.173
- Fixed Visual Etch exit sequence to work around a bug in the CloseWindow
routine in the RichTextBox that ships with MS Visual Basic 5.
Visual Etch V1.172
- Changed the params database to reflect new information about Win95
dlls that are located in the shared address region, and therefore shouldn't
be etched or patched.
Visual Etch V1.171
- Fixed opcode histogram tool to use decoder's internal table.
- Cleanup fixes to disasm makefile, and to apps\generic.mak.
Visual Etch V1.170
- Replaced old VB4 controls with VB5 controls. Should now compile
with VB5.
Visual Etch V1.169
- Added a disassembler tool to the suite
Visual Etch V1.168
- Updated sources to compile on VB5.0
Visual Etch V1.167
- Change environment variable TEMP to TMP in xprof.pl, for consistency.
- xprof.pl now refuses to optimize certain dlls that it knows
it cannot handle.
Visual Etch V1.166
- Changed the default outbase in etch.pl from 0x300000 to 0x500000,
because the former address is reserved in the Win95 address space.
Visual Etch V1.165
- Etch error messages do not reflect the full etch command line to the
user. The full command line is put in etch.log.
Visual Etch V1.164
- Fixed etcherrorlog and etchwarninglog in etch-setenv.bat. Fixed some
bugs with CPU options parameters that made it fail occassionally.
Visual Etch V1.163
- Fixed bug with dllwalk which caused cached Dlls not to refer to the
correct etched Dll when the later Dll is etched with "Use Original Name".
Visual Etch V1.162
- Added a "Rebase etched executable" option to the UI. This option
runs editbin on the etched and patched DLLs to speed up application load
time.
- cache animator now works on Win95
- fixed dllwatch and monitor to work with user scripts
(e.g. Visual Test scripts).
Visual Etch V1.161
- Enhanced etchtrace:
- multithread safe
- include options for picking the location of the trace file and
skipping the first n memory references
- tries to name the trace with the application name using
$ENV{"EXENAME"}
- libutil.h now has macro_fast_lock, macro_fast_unlock for fast
mutual exclusion
- Instrumentation Coverage (exact,etched) tool now supports "run only"
Visual Etch V1.160
- Removed the "Create husk" checkbox from the Module Parameters window.
- Added SHLWAPI.DLL to the don't etch list in params.mdb.
- Changed the Module Parameters window so that code discovery now has
options 0, 1, and 2 instead of just aggressive or non-aggressive.
Note: When you start up with old projects, vetch will warn you about
converting the code discovery options to the new ones.
Visual Etch V1.159
- Fixed bug with "Save As..." in table display widget
- Added "Close Window" to the file menu option in the table and file
display widgets.
- Changed the buttons that read "Done" in the Module Params and the
Selective Etching dialog boxes to read "Close".
Etch Changes.
Etch V.1.200
- Fixed bug when forward maps were not being generated for husks.
Etch V.1.199
- Fixed bug in etchwrap.c for Win95.
Etch V.1.198
- Added forwardmap-rt.c, loadhusk-rt.c, proceduremap.{h,cxx} to the tree.
- Husks now fully supported.
- user32 can now be etched.
- fixed bug in ArgBranchTarget that had it reporting target addresses
that were off by small random offsets.
Etch V.1.197
- Modified etchwrap to use the etched or patched versions of
kernel32.dll routines on behalf of the application.
Etch V.1.196
- Modified "-batchlist" command in dllwalk to "-batch list"
- Added "-batch imagebase < batchfile>" command to dllwalk:
prints the image base of every module listed in < batchfile>.
Etch V.1.195
- New "-imagebase" command in dllwalk: prints image base of executable
module to stdout.
- New "-batchlist < batchfile>" command in dllwalk:
prints the imports of
every module listed in < batchfile>.
- Fixed bug in dllwalk: catch exception raised when an invalid executable
module is opened.
Etch V.1.194
- Reworked etchwrap to use purely name mapping instead of dealing
with names and handles.
- Fixed bug with Photoshop.
Etch V.1.193
- Fixed hardware performance counters .h files to work with C++
Etch V.1.192
- Added code to help debug code discovery.
Etch V.1.191
- Fixed hardware perf counter .h files to work with C++ files.
Etch V.1.190
- Added ProcGetNumFromAddress call to the Etch API.
- Fixed bug with disassembler that prevented it from running outside
of Visual Etch.
Etch V.1.189
- Fix decoder bug mapping two-byte opcode instructions to internal
decoder tables.
- The decoder now recognizes the CMPXCHG8B and XBTS instructions.
- Etch can now disassemble ntoskrnl.exe.
Etch V.1.188
- cvdump now handles non-contiguous disjoint procedures from dbg files
correctly.
Etch V.1.187
- Moved most of the error messages to go to stderr instead of stdout.
Etch V.1.186
- Purged most of code copied from MSDN in cvdump.
Etch V.1.185
- Fixed bug in cvdump that caused it to output the wrong information for
.dbg files from optimized binaries.
Etch V.1.184
- Fixed bug in cvdump that caused it not to work on cvdump user32.dll debug
files.
Etch V.1.183
- Added -Ur flag to etch. This causes etch to keep on etching binaries
that have no relocation information.
- Added .dbg file support to cvdump
- Added -hex flag to cvdump to produce hex output
- forloop.exe now accepts a command line argument to limit how high
it counts to.
Etch V.1.173
-
Allow file header to grow to accomodate new sections (previously
we relied on having extra space in the original executable file
header).
-
Set the IAT directory entries (required for drivers, not for user DLLs).
-
Fix bug in dllwatch that caused notepad.exe to hang while running help.
Etch V.1.164
- Rename some of the functions in etch-api.{cxx,h}, for consistency.
For example, all the instruction API calls are of the form InstGet...,
and the basic block API calls are BbGet..., but the procedure and module
calls were all GetProc... and GetModule..., so I renamed them to
ProcGet... and ModuleGet... I also modified the tools
in the apps directory to use the new names for the api calls.
Etch V.1.163
- Implemented a quick check to speed up watcom special case checking
in traverse.cxx.
- Small text change on how to add new instructions in disassembler.m4 .
- Added '/fixed:no' link flag to makefile for test/forloop.exe
- Minor changes to Etch error and warning messages.
- Re-add the CPUID instruction to maps.c.
Etch V.1.162
- Changes to import.cxx, and outimport.cxx to handle duplicate
entries in the IMAGE_IMPORT_DESCRIPTOR table. The fix we used
in Etch V1.161 had some problems, I implemented a new solution in
outimport.cxx that only affects the OutImportTable.
Etch V.1.161
- Changes to import.cxx to detect and handle binaries with duplicate
entries in the IMAGE_IMPORT_DESCRIPTOR table.
- Eliminated unused code from program.cxx, outimport.cxx.
- Eliminated debug printf from cvdump.cxx.
Etch V.1.160
- The decoder library now supports REPNE MOVS. Even though processor
manuals state that this is illegal, the P6 executes this instruction
as REP MOVS, and the watcom compiler generates this instruction.
- Changes to traverse.cxx to detect which compiler generated this
code.
- Changes to exefile.cxx to support the executable header of pvengine.exe.
Etch V.1.159
- Etch now exports:
print_decoded_inst(char *s, DCInstruction_t *decoded, unsigned pc)
which prints out the decoded instruction only. The function is
different from print_asm because print_asm prints the pc
along with the raw instruction bytes aside from the decoded instruction.
Etch V1.158
- Fixed build problem with Etch 1.157 - genall now invokes the
install-headers make target before building any source files.
Etch V1.157
- Moved disasm-print.c from the disassembler tool into the main decoder
tree. Now etch exports the function
print_asm(char *s, DCInstructionT *decode, unsigned pc)
which prints out the dis-assembled string into s.
Etch V1.156
- Improved support for 'husks', to partially solve problems etching
user32.dll.
Etch V1.155
- Added support for NB11 debug format.
Etch V1.154
- Two fixes to the decoder. First, the operand access for FLDT
(10 byte FLD) was fixed from WRITE to READ. Second, the operand access
for fp load constant instructions (e.g. FLDZ) was changed from WRITE
to NA since the operand is implicit. The fp load constant instructions
are listed as having no operands.
Etch V1.153
- Changed apps\profutil\moduledb.cxx to help cgprof work better when
run outside of vetch.
- Changed the build-setup script to use TMP instead of TEMP, for
consistency.
- Fixed memory allocation problem in traverse.cxx - only shows up
when etching very large executables.
Etch V1.152
- Relocations are always written in sorted order, since win95 sometimes
crashes when they're written out of order.
Etch V1.151
- Fixed minor memory allocation problem in ExportTable::ExportTable.
- Added destructor definition for ExportTable.
- Etch now builds and runs under MSVC 5,0.
Etch V1.150
- Fixed a minor memory allocation problem in etch.
- Fixed the etchwrap mechanism so that it works properly outside of
the Visual Etch environment - it no longer needs the WORKINGDIR environment
variable set.
Etch V1.149
- Fixed "etch -h" so that the help message reflects the real behavior with
respect to code discovery options "-O0", "-O1" and "-O2".
Etch V1.148
- Added support for CPUID instruction to the decoder.
- Implemented the ReplaceInst() API call. See the
documentation release notes for
minor changes to the way ReplaceInst() works.