ДО
do_
.............. .......... .. ..........

December 2024
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31

ДО [userpic]

Посоветуйте, плз, хороший hex-editor, кто в теме. Мне очень нравится 010 Editor, но пользоваться коммерческим софтом мне не позволяет религия. Я даже уже собрался его клон писать. Нужны, главным образом, бинарные темплейты, дизассемблинг не нужен, я немного не по этой части.

Upd: Ещё неплохо бы, чтобы он при этом непечатные символы отображал в колонке ASCII, а не заменял их на точки, как это делает xxd, например.

Comments

hiew

к сожалению, тоже коммерческий.

biew?

аффтар, правда, пизданутое ебанько, но программа хорошая.

хм... скачал, запустил -- упала.

хм. у меня и под вендой, и под лялепсом работала. ну, у тебя есть варианты: забить или отладить. %-)

...а там есть возможность добавлять темплэйты для парсинга файлов произвольного формата? Если есть -- возможно, игра и стоит свеч.

ну... есть, конечно: там исходники дают. %-)

Ну, исходники я сгенерить и сам, типа, могу, для этого чужие исходники сомнительного происхождения не требуются. Но кодить это на C достаточно неэффективно, много лишнего повторяющегося кода, да и перекомпилировать каждый раз надо.

Вот например, в 010 Editor создаёшь новый темплейт, там пишешь набор структур, из которых состоит файл, и оне автоматически заполняются, и сразу становятся доступными для просмотра. Реверс-инжинирить неизвестный формат становится легко и весело. Как-то так:

typedef struct { // bmfh
CHAR bfType[2];
DWORD bfSize;
WORD bfReserved1;
WORD bfReserved2;
DWORD bfOffBits;
} BITMAPFILEHEADER;

typedef struct { // bmih
DWORD biSize;
LONG biWidth;
LONG biHeight;
WORD biPlanes;
WORD biBitCount;
DWORD biCompression;
DWORD biSizeImage;
LONG biXPelsPerMeter;
LONG biYPelsPerMeter;
DWORD biClrUsed;
DWORD biClrImportant;
} BITMAPINFOHEADER;

// Define the headers
LittleEndian();
SetBackColor( cLtGray );
BITMAPFILEHEADER bmfh;
BITMAPINFOHEADER bmih;

// Check for header
if( bmfh.bfType != "BM" )
{
Warning( "File is not a bitmap. Template stopped." );
return -1;
}

кстате, нечно подобное было у SEN под названием stlview или как-то так. потом, вроде, он в hiew что-то такое перетащил. больше, вроде бы, никто такого не делал (из консольных).

впрочем, я обычно пишу скриптец на Lua и slang для реверса.

В общем, решил плагин под vim писать. Тормозной, правда, будет, как и всё, писанное на vim-скрипте, ну что делать.

кстате, в midnight commander есть hex editor, гыгы.

Притом, язык темплэйтов далёк от стандартного C, там возможны такие пассажи:

// Define each line of the image
struct BITMAPLINE {

// Define color data
if( bmih.biBitCount < 8 )
UBYTE imageData[ bytesPerLine ];
else if( bmih.biBitCount == 8 )
UBYTE colorIndex[ bmih.biWidth ];
else if( bmih.biBitCount == 24 )
RGBTRIPLE colors[ bmih.biWidth ];
else if( bmih.biBitCount == 32 )
RGBQUAD colors[ bmih.biWidth ];

// Pad if necessary
if( padding != 0 )
UBYTE padBytes[ padding ];

} lines[ bmih.biHeight ] <optimize=true>;

а hex-редактором с названием «010» я бы и так пользоваться не стал. мало ли, что он вытворит с цифрами 0x08-0x0f…

название, может, и ебанутое, но по функционалу очень хороший. Вот именно что-то такое хотел видеть, когда начинал поиск, и даже мою фантазию они немного переплюнули.

Не понимаю, впрочем, зачем они им барыжат. Один же хрен на таком продукте особых денег не заработаешь, а ничего больше они вроде и не сделали.

HxD работает у меня. Не интересовался многоплатформенностью его.

Если речь о структуре, то можно самому под свои нужды написать, наверное (если геморройность оценивать).

О готовом можно инструментарий поискать, например, на http://wiki.xentax.com/index.php/Game_File_Format_Central — я на что-то натыкался, но боюсь, что на коммерческое как раз в части работы с форматами, которые задаёшь сам, но что-то точно должно быть там.