Дабы было удобнее ковырять разные бинарные файлики, патчить их. А то в обычном hex-редакторе пока найдешь нужный байт, пока пересчитаешь значения бит - куча времени уходит...
Ну если под вайном работают - почему нет? Я большие файлы открываю в HexEditor от VirtualDub, запущенного в вайне. Изврат, но работает быстрее чем ghex, который файлы в себя целиком засасывает.
> Что-то мне кажется, что сейчас набегут вендотролли и начнут советовать проприетарные платные редакторы.
ну почему сразу виндотроли? помню в досе когда то была такая приблудина, которой в конфиге можно было на её внутреннем языке задать формат структур файла и она после представляла просматриваемый файл разбитый на соотв. структуры. чудная была программка, очень помогала при ковырянии во всяких вражеских бинарниках. только вот забыл как она называлась :(
А ее можно научить битовым полям переменной длины?
Например:
The next nine bytes represent a data structure used in the SWF format called a Rectangle. Here is the file description of a rectangle:
RECT
Field T ype C ommen t
Nbits UB[5] Bits in each rect value field
Xmin SB[Nbits] x minimum position for rect
Xm ax SB[Nbits] x maximum position for rect
Ymin SB[Nbits] y minimum position for rect
Ymax SB[Nbits] y maximum position for rect
To understand these bytes, we need to look at the individual bits.
78 00 05 5F 00 00 0F A0 00
0111 1000 0000 0000 0000 0101 0101 1111 0000 0000
0000 0000 0000 1111 1010 0000 0000 0000
There are five fields in a rectangle structure: Nbits, Xmin, Xmax, Ymin, Ymax. The unsigned
Nbits field occupies the first five bits of the rectangle and indicates how long the next four signed
fields are.
Here’s where we hit another subtle point about the SWF file representation. Reading and writing
bits is different from reading and writing words and dwords. There is no swapping at all. This is
because when Flash is reading an n-bit field, it reads a byte at a time until it has read all n bits.
You don’t do any swapping inside of bytes so there is no swapping at all. So the next five bits are
read in order and evaluate to 15. Although the Nbit field usually varies, it appears fixed in the
header so that header has a fixed size (It may just be because the movie dimensions are usually
the same).
> Ааааа хочу такую.... А что если побробовать замутить ? Обычный HEX-едитор только с подключаемыми ASN-формами или зюмелем. От это былоб счастие...
у меня возникало желание написать что-то подобное, но оно как правило возникало лишь тогда, когда приходилось ковыряться в различных бинарниках и достаточно быстро улетучивалось сразу после того, как необходимость в ковырянии отпадала.
вопрос даже не в том, чтобы сесть и написать её - это в принципе не есть большая проблема. но вот разработать грамотный и удобный в использовании язык, с помощью которого можно было бы легко описывать сложные структуры данных причём с поддержкой ветвления i.e. "если поле x = 1 то дальше идёт структура foo а если 2 то структура bee" - это несколько более геморойно. ANS.1 или аналоги за базу конечно взять можно, но AFAIR тот же ANS.1 не поддерживает к примеру ветвления а делать упрощённую версию которая только что и умеет порезать файл на фиксированный набор структур - это далеко не так полезно как хотелось бы.
ps: а та програмулина была достаточно вумная с точки зрения языка описания. с её помощью, к примеру, можно было вполне сносно смотреть и редактировать DBFы или собственные форматы на основе btree и прочие подобные штуки.