Borg Changelog

What's new in Borg 2.28

Jul 9, 2014
  • schedule comment memory is now managed by the scheduler. Should resolve some memory leakage.
  • most structs for savefiles should now be surrounded by #pragma pack....
  • fixed a bug in the display code that caused occasional crashes.
  • fixed a bug when loading a database file for a file where write permission cannot be obtained that resulted in loading the data from the database instead of the exe.
  • jump to address added to menu, allows user to enter an offset to jump to (within the current segment). I wont be adding seg/offs values in the future as Borg will be focussing on PE/Win32 files from now (and so single seg).
  • added oep to global options data structure - which means that file database has an altered format.
  • added an option to change the oep of the program (PE files only), with an optional patching of the executable file. This will be more useful later when I add the single step debug functions for unpacking programs.
  • Changed bool FAR PASCAL into BOOL CALLBACK for MSVC.
  • fixed small bug which stopped the secondary thread process when trying to decrypt before setting top/bottom points.

New in Borg 2.26 (Jan 18, 2013)

  • Bugfix re string printing on unicode and dos style strings.
  • Bugfix re some sib formats.
  • Bigfix re string resource id number generation.
  • Changed delfunc and compare to virtual functions which seems to have cured compiler problems.

New in Borg 2.25 (Jan 18, 2013)

  • revisited header includes and cleaned up a few unnecessary includes.
  • bugfix in finding the current line.
  • bugfix in asm output for uninitdata. db ??
  • db now has h after hex numbers.
  • rep/repne and lock are now treated as proper prefixes rather than separate instructions.
  • sib indexes now appear in separate []'s. eg [eax][ebx*4].
  • ds has now been changed to db, with hex values for non-printing chars.
  • a lot of changes on output to enable easier reassembly of saved listings. 'Dword ptr' and 'Word ptr' are now used more, for tasm compatibility. all hex values starting with alphas are now preceded with zero. all pointer types should now be recognised by assemblers (byte, word, dword, fword, qword, tbyte are used in place of double-real, etc).
  • fld freg now shows only one argument, and fxch.
  • instructions are now added to the database outside the decodeinst instruction as this was leaving corrupted databases in cases where prefix bytes made the instruction straddle comments.

New in Borg 2.24 (Jan 18, 2013)

  • Just added a makefile. Should remember to include and update it with each version now.
  • More common routines to help with interfacing to common dialogs.
  • Some structs are now internal to modules, for example taskitem, as nowhere else needs to know about the data structure.
  • decrypter now has read_item and write_item functions and data structure has been internalised. Similar changes to relocs. Some changes to data.cpp along the same lines.
  • default location naming, for example loc_00401000 for xreffed locations.
  • comments now appear before names.
  • locs are now printed on all lines.
  • bugfix re 2.23 problems with database files not working.
  • bugfix re 2.23 not working on NT.

New in Borg 2.23 (Jan 18, 2013)

  • deleting xrefs now calls window update to update the number of xrefs.
  • updated the segviewer to use findnext.
  • added between(lwb,upb) to lptr class.
  • changed findseg to always leave the iterator pointing to the next segment.
  • cleaned up search code. bugfix - will now find a string if it exactly contains the last byte of a segment.
  • introduced more macros for decoding convoluted structures.
  • moved dialogs from decrypt.cpp to user_fn.cpp
  • corrected a few minor problems, and removed stop/start of thread from setting block extents.
  • commented out the compare function from the list class as it was causing MSVC problems with compilation. MSVC is still problematic though, and I recommend Borland C++ 5.00.
  • renamed dlg_ldopt.* to dlg_ldop.*, 8 chars is better for my batch files!
  • added a short tutorial on using Borg, an introduction for newbies to Borg :)
  • dialogs now return true on processing messages except wm_initdlg which returns false.

New in Borg 2.22 (Jan 18, 2013)

  • Reworking of SYS file support.
  • All functions now have brief comments in the sourcecode, also did some reformatting of some statements.
  • Removed a lot of colour message processing from dialogs and windows, all the WM_CTLCOLORSTATIC, etc. I think this was in originally due to an older compiler and the development version of comctl32 which was with it.
  • Now using macros in some areas where complex typecasts were common (lists and disasm.cpp for example).
  • More basic functions added to simplify coding in some areas, eg disasm.cpp.
  • Reworking of nextseg and lastseg functions and calling code.
  • Formed help.cpp and registry.cpp to take some functions which need less updates.
  • Added CenterWindow(HWND) to support functions and recoded various Dialogs.
  • Removed some redundant code from Dialogs.
  • BOOL,FALSE and TRUE are now bool, false and true.
  • list.cpp is now a template, and is contained in list.h. Removed a lot of unnecessary casting and most of the macros.
  • deletion and compare functions for the lists are now part of the list class and overridden as required.
  • user_dlg.cpp file has been created for user dialogs. This will contain dialogs and code for viewing things, naming things, etc, which helps separate primary thread and secondary/engine thread code out. The viewers are now more disocciated from their classes. Consequences of this are moving exports, imports and names to the gname class and deleting the exports.cpp, exports.h, imports.cpp, imports.h, names.cpp and names.h files.
  • demangle has been moved from the gname class to general functions.
  • naming locations is now directly interfaced to the engine and the secondary thread is stopped rather than going through the scheduler.
  • set range top and bottom now stop the thread for processing.
  • user_dlg routines now enforce stricter stopping and starting of the secondary thread.
  • range viewer moved to user_dlg.cpp
  • xrefs viewer moved to user_dlg.cpp and repeater made a global variable.
  • added separate parsing routines for different searches and cleaned up the search code.
  • added database.cpp for routines for database control of loading and saving.
  • changed fileload to exeload with the intention that exe loading routines will be split up more. added dlg_ldopt which deals with dialogs for file-open for new files and setting of options. the routines here call the appropriate loader.
  • 23. all load and save routines for databases are now in database.cpp and extracted from classes. This has meant making more class variables public (to be looked at later). database.cpp only exposes loaddb and savedb procedures to the rest of the program.
  • 24. naming locations, adding and changing comments now go through the scheduler instead of the primary thread.
  • 25. repeater variable for dialog boxes has been dropped. dialogs must send a request through the scheduler instead. the request when processed by the scheduler simply posts a windows message back to the main window to reshow the dialog.
  • 26. xref deletion now goes through the scheduler.