A plugin interface that accepts a plugin DLL that works in a similar fashion to the plugin interfaces of Ollydbg and IDA (interactive disassembler). Or maybe an embedded C-style script interpreter like CINT.
I can envision a couple plugins that would be immediately useful to me, which could be implemented on top of an API interface that works in a similar fashion to C stdio.h functions for getting and putting bytes into a file opened by HxD.
Code: Select all
// gets filename
int hxdgetcurrentfilename(hHxdFile, int buflen, void* pfilename);
// opens a file in HXD and returns a handle to that file
hHxdFile hxdopen(char *name, char *mode );
// closes file opened by HXD
int hxdclose(hHxdFile hFile);
// gets the current IO position
long hxdtell(hHxdFile hFile);
// changes IO pointer, origin being an enum SEEK_BEG, SEEK_CUR, SEEK_END
int hxdseek(hHxdFile , long offset, int origin);
// read into buffer, x count bytes, from hHxdFile
int hxdread(void *buffer, size_t count, hHxdFile hFile);
// write bytes at current pos
int hxdwrite(void *buffer, size_t count, hHxdFile);
// get byte at current pos
char hxdgetc(hHxdFile hFile);
// put byte at current pos
hxdputc(char X, hHxdFile hFile)
And some other obvious things like setting selections and highlighted areas inside of HxD.
Theoretical disassembler plugin DLL linked with DiStorm disassembler
or perhaps a PE-viewer plugin?