Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
UNTITLED()			      LOCAL			      UNTITLED()

NAME
     dhex -- hex editor with a diff mode

SYNOPSIS
     dhex [-x]
     dhex [-h] [-v] [-g] [-k] [-ab -ad -ah -ao base address] [-f config-file]
	  [-m marker-file] [-ob -od -oh -oo offset] [-r searchlog]
	  [-sa -sab string (ascii)] [-sh -shb string (hex)] [-w searchlog]
	  [file]
     dhex [-h] [-v] [-g] [-k] [-a1b -a1d -a1h -a1o base address 1]
	  [-a2b -a2d -a2h -a2o base address 2] [-cb] [-cd upper-limit] [-cl]
	  [-f config-file] [-m marker-file] [-o1b -o1d -o1h -o1o offset1]
	  [-o2b -o2d -o2h -o2o offset2] [-r1 searchlog1] [-r2 searchlog2]
	  [-s1a -s1ab -s1h -s1hb string (ascii/hex)]
	  [-s2a -s2ab -s2h -s2hb string (ascii/hex)] [-w1 searchlog1]
	  [-w2 searchlog2] [file1 file2]

DESCRIPTION
     dhex  is  a  hex  editor. It can be used to alter individual bytes in large
     files. Since it is a text-mode programm based on ncurses, it can run in nu-
     merous scenarios.	Its special feature is the diff mode: With it, the  user
     has  a  visual  tool for file comparison. This mode is invoked when dhex is
     called with two instead of one file as parameters.

OPTIONS
     All the options are case-insensitive and can be given as either  upper-  or
     lowercase characters.

     -ab -ad -ah -ao base address
		 After	loading  a file, every address gets a base address other
		 than 0. With this, it is  easier  to  work  on  partial  memory
		 dumps. The base address can be given as a binary one with [-ab]
		 , as a decimal one with [-ad] , as a hexadecimal one with [-ah]
		 or an octal with [-ao].

     -a1b -a1d -a1h -a1o base address 1

     -a2b -a2d -a2h -a2o base address 2
		 For the diff mode, it is possible to set two different base ad-
		 dresses.  Again, a binary address can be given as [-a1b -a2b] ,
		 as decimal one with [-a1d -a2d] , as hexadecimal one with [-a1h
		 -a2h] or an octal one with [-a1o -a2o].

		 This base address is calculated into the marker files	as  well
		 as the searchlogs.

     -cb -cl	 Diff mode only: The input files can be correlated from the com-
		 mand  line with the best -cb or longest -cl match. This is very
		 slow.

     -cd upper-limit
		 Diff mode only: The input files can be correlated from the com-
		 mand line with the minimum difference. To improve the	correla-
		 tion speed, an upper limit can be provided.

     -f configfile
		 Usually,  .dhexrc  is being read from the invoker's home direc-
		 tory. With this parameter, any other config file can be loaded.
		 See dhexrc(5) for a description of its file format.

     -g 	 Shows the license

     -x 	 Starts the hexcal

     -h 	 Shows the help screen

     -k 	 Starts the keyboard setup manually before  any  file  is  being
		 loaded.  This	is very helpful when calling dhex from an exotic
		 terminal.

     -m markerfile
		 It is possible in dhex to set bookmarks and  store  them  in  a
		 markerfile  for  later use. With this parameter, the markerfile
		 is being read at start time, making it unnecesarry to read them
		 later through the  gui.  Their  file  format  is  described  in
		 dhex_markers(5).

     -ob -od -oh -oo offset
		 After	loading  a  file,  the cursor is set to 0, and the first
		 page of bytes is being shown on the screen. With one  of  those
		 parameters it is possible to start at any other location in the
		 file. The cursorposition could be given as a binary number with
		 [-ob] , as a decimal one with [-od] , as a hexadecimal one with
		 [-oh] or an octal with [-oo].

     -o1b -o1d -o1h -o1o offset1

     -o2b -o2d -o2h -o2o offset2
		 For  the diff mode, it is possible to set two different cursor-
		 positions at start time.  Again,  the	cursorpositions  can  be
		 given as a binary number with [-o1b -o2b] , as decimal one with
		 [-o1d	-o2d]  , as hexadecimal one with [-o1h -o2h] or an octal
		 one with [-o1o -o2o].

		 This way, the first few bytes in a file  can  be  skipped,  and
		 just the rest can be compared.

     -r searchlog
		 When  searching  from	the  command line, the offsets are being
		 read from this searchlog.  Its  format  is  being  decribed  in
		 dhex_searchlog(5).

     -r1 searchlog1

     -r2 searchlog2
		 When  searching  in two files simultanously, the offsets can be
		 read from two different searchlogs.

     -sa -sab -sh -shb string
		 Instead of setting the cursor offset to an absolute  value,  it
		 is  possible  to  search for a specific string from the command
		 line. If there is  an	additional  [-ob  -od  -oh  -oo  offset]
		 present,  the	search	will start there. It is possible to read
		 and write search logs with [-r searchlog]  and  [-w  searchlog]
		 respectively.	With [-sa string] is being interpreted as ASCII.
		 [-sh string] interprets it as hex. For backwards search,  [-sab
		 string] or [-shb string] can be applied.

     -s1a -s1ab -s1h -s1hb string1

     -s2a -s2ab -s2h -s2hb string2
		 In  the  diff mode, it is possible to search for two strings in
		 two files simultanously.

     -v 	 Prints out the version of dhex.

     -w searchlog
		 When searching from the command line, write  the  results  into
		 this  searchlog and quit. It is being written in the format de-
		 scribed in dhex_searchlog(5.)

     -w1 searchlog1

     -w2 searchlog2
		 When searching in two files simultanously,  write  the  results
		 from both searches into those log files.

USER INTERFACE
   General
     Menus  have hotkeys, they are being presented in a different color. To jump
     from one menu item to the next, the cursor keys or the TAB key can be used.

     Input fields can be closed by pressing ESC, ENTER, or any cursor key.  Only
     pressing ESC will not save the changes made in there.

   The keyboard setup
     When  running  dhex  for the first time, without any configfile present, or
     with the parameter -k, the first screen  shown  is  that  of  the	keyboard
     setup.  In  this  screen,	the program asks the user to press certain keys.
     Which are (in order) ESCAPE, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, BACK-
     SPACE, DEL, ENTER, TAB, UP, DOWN, RIGHT, LEFT, PG UP, PG DOWN,  HOME,  END.
     It  also tells the user what it intends to do with those keys later. So the
     user can decide on any alternative he chooses.  If he does not want to bind
     a specific function to a certain key, he can simply press ESCAPE  and  skip
     to the next question.

     After  pressing  all  the	keys, the user can chose whether or not to write
     those keys into the config file.

   The main screen
     The main screen is broken down into three columns: The  first  column  con-
     tains  the  offset  within the file for the current line. The second column
     contains the bytes in the file in hex format. Finally, the third coumn con-
     tains the same bytes, but this time in ascii  format.  If	a  byte  is  not
     printable,  it is being substituted with a '.'.  How many bytes are are be-
     ing shown in a line depends on the width of the terminal. For  example,  if
     the terminal is 80 characters wide, 16 bytes are being shown in each line.

     If  no  other [-o] or [-a] parameter was given at start time, the cursor is
     being set to offset 0. It is also being shown in the hex column.  Here,  it
     can  be moved with the cursor keys. When entering a hexadecimal number, the
     file is being edited. The file can be edited in the ascii column  as  well,
     simply  by pressing the TAB key (or whichever key was substituted for it in
     the keyboard setup). Pressing TAB again will return the cursor to	the  hex
     column.  Pressing F9 (or its substitute) will undo the last of the changes.
     Changes are being shown in a differnt color.

     Editing is not possible in the diff mode. Here, pressing  the  cursor  keys
     will move both files synchronously.

   The goto screen
     Pressing  F1  (or its substitute) will open the Goto... screen. Here, it is
     possible to jump to a  specific  address  directly,  without  the	need  of
     scrolling	there  with  the  cursor keys. The address can be entered in the
     'To' field, either absolute or relative (to leap over a specified amount of
     bytes). An absolute address is being chosen by pressing '=', and a relative
     one by pressing '+' or '-', for a positive or negative  leap  respectively.
     Regardless  of  the  adressing  mode, it has to be entered as a hexadecimal
     number.

     It is also possible to set up to ten bookmarks  in  this  screen:	Pressing
     '0'...'9'	will select one of them. Moving the cursor to "Set" and pressing
     ENTER will alter one of those book marks. The "Diff:"  fields  are  showing
     the difference between the actual cursor position and the bookmark.

     Bookmarks	can  be stored and loaded, for this there are the "Save Markers"
     and "Load Markers" items on the bottom. Upon selecting  one  of  them,  the
     user is being prompted for a filename. It is possible to load a marker file
     at start time, by providing the [-m markerfile] parameter.  dhex_markers(5)
     describes the format of the marker files.

   Searching
     Pressing  F2  (or	its  subsitute)  will open the Search... screen. Here, a
     short string can be entered (either in hex, or in ascii).	If  no	logfiles
     are  being  selected,  the  cursor  will jump to the next occurance of this
     search string upon selection of "Go". It can be chosen  if  the  search  is
     supposed to be conducted forward of backwards.

     To jump to the next occurance, F3 (or its substitute) has to be pressed. To
     jump  to the previous one, F4 has to be pressed. The search itself wraps at
     the edges of the file, meaning that when it reaches the end, it will  start
     from the beginning and vice versa.

     Searchlogs  are an advanced way of searching: Writing to the searchlog does
     not jump the cursor from one occurance to the next. Instead, it will  write
     the  offsets  of all of them into the logfile. Their format is described in
     dhex_searchlog(5).

     Reading from this searchlog means that the search does not cover the  whole
     file:  Only  the  addresses which have been provided in this file are being
     searched. Thus it is possible to search for specific changes. Like for  ex-
     ample   the   number   of	lives  stored  in  the	save  file  of	a  game.
     dhex_searchlog(5) describes the format of the searchlog.

   HexCal
     Pressing F5 (or its substitute) will open a small 64 bit  calculator.  This
     calculator  is  capable of not only performing arithmetic operations (+, -,
     *, /, modulo), but also logic ones. (and, or, xor, shift). There are  three
     columns  to  enter  numbers  as hexadecimals, decimals or in binary format.
     Pressing 'x' will close this screen. Using the command line  argument  [-x]
     will start it from the commandline.

   Correlation
     When  dhex(1) is running in diff mode, pressing F6 (or its substitute) will
     open the dialog for file correlation. This will try  to  find  the  optimal
     offset  between  the  two	files.	There are three algorithms available for
     finding this offset: Searching for the best match (as many bytes as  possi-
     ble  are  the  same), the longest match (as many consecutive bytes match as
     possible), or the minimum difference (as  little  differences  between  the
     bytes as possible).

     Even  though  it seems like the same at first, looking for the minimum dif-
     ference is in fact faster. This can be improved even more, if the user sets
     an upper difference limit.

     Upon selecting Go, the program will search for  the  optimal  offset.  This
     will take some time.

   Saving and quitting
     Pressing  F10 (or its substitute) will close dhex.  In case there have been
     changes made to the file, a save dialog opens up. Here, it is  possible  to
     select whether or not to write the changes back into the file.

FILES
     $HOME/.dhexrc:  The default location of the config file. If the $HOME-vari-
     able is not set, its location has to be provided manually.

BUGS
     Report bugs to <dettus@dettus.net>.  Make sure to include DHEX somewhere in
     the subject.

AUTHOR
     Written by Thomas Dettbarn

SEE ALSO
     dhexrc(5), dhex_markers(5), dhex_searchlog(5)

FreeBSD ports 15.quarterly	  Jan 19, 2019				 DHEX(1)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=dhex&sektion=1&manpath=FreeBSD+Ports+15.1.quarterly>

home | help