HEX editor

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
bodja
Новичок
Новичок
 
Сообщения: 40
Зарегистрирован: 02.04.2006 (Вс) 15:18
Откуда: Ukraina

HEX editor

Сообщение bodja » 04.07.2007 (Ср) 19:53

Может у кого есть наработки или примеры по НЕХ редактору ,
поделитесь пожалуста,
а то мне пока ничего умного в голову не приходит и хотелось бы глянуть как нужно грамотно делать подобный редактор.

jangle
Википедик
Википедик
Аватара пользователя
 
Сообщения: 3013
Зарегистрирован: 03.06.2005 (Пт) 12:02
Откуда: Нидерланды

Сообщение jangle » 05.07.2007 (Чт) 9:34

Сделать можно, но по моему это изобретение велосипеда
Вложения
BinFileEdit.zip
(26.84 Кб) Скачиваний: 120

bodja
Новичок
Новичок
 
Сообщения: 40
Зарегистрирован: 02.04.2006 (Вс) 15:18
Откуда: Ukraina

Сообщение bodja » 05.07.2007 (Чт) 20:55

За код спасибо,будем разбираться :)

jangle писал(а):Сделать можно, но по моему это изобретение велосипеда


Это немного для другого,редактор не сама цель :)

Wildwhiteash
Начинающий
Начинающий
 
Сообщения: 21
Зарегистрирован: 21.06.2007 (Чт) 17:02
Откуда: Украина, Николаев

Сообщение Wildwhiteash » 06.07.2007 (Пт) 22:33

есть такой XHexEditXControl.OCX
понравился очень, но не бесплатный.
Впрочем скрутить ему голову, дело 10 минут.

SSecurity
Служба безопасности
Аватара пользователя
 
Сообщения: 1283
Зарегистрирован: 19.08.2003 (Вт) 1:11
Откуда: Россия, Мурманск

Сообщение SSecurity » 07.07.2007 (Сб) 14:28

Вообще для того чтобы написать такой редактор потребуется, вот эти две стандартные функции:
Код: Выделить всё
Print CDec("&hAA")  '170
Print Hex(170)         'AA

Dim A as byte
File = "D:\blabla.bla"
Open File for Binary as #1
'N - номер байта с которым работаешь
' get #1, N, A ' - для чтения
' put #1, N, A ' - для записи
Close #1

+ немного фонтазии для отображения и выбора файлов :)

С Уважением,
Сергей
Программист - это маленький Бог, а все его ошибки - это самостоятельные творения:)
Так задумано:)

bodja
Новичок
Новичок
 
Сообщения: 40
Зарегистрирован: 02.04.2006 (Вс) 15:18
Откуда: Ukraina

Сообщение bodja » 07.07.2007 (Сб) 17:38

Wildwhiteash писал(а):есть такой XHexEditXControl.OCX
понравился очень, но не бесплатный.
Впрочем скрутить ему голову, дело 10 минут.


Спасибо ,не родился я хакером :)
По той ссылке ,контролл работет ,но не сохраняет файл и функции не все работают,давно облизываюсь около него :)
Очень хороший контролл.

Вообще для того чтобы написать такой редактор потребу....


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

SSecurity
Служба безопасности
Аватара пользователя
 
Сообщения: 1283
Зарегистрирован: 19.08.2003 (Вт) 1:11
Откуда: Россия, Мурманск

Сообщение SSecurity » 07.07.2007 (Сб) 17:49

bodja писал(а):Это понятно ,но тут еще куча других проблем.
Нужно будет извращаться с отображением ,так как больше 64кило не влазит в TextBox ,и форматы файлов поддерживать разные нужно.
Вроде мелочь ,но как коснулся ,куча кода получается.


Вот это какраз таки и не проблема, чтобы смотреть HEX код тебе не нужно весь файл отображать, вполне достаточно выбрать область (которая на экран залезет), привязать его к скролу и показывать ну скажем 480 байт (16 байт Х 30 строк).
Текстбокс это выдержит ... кроме того ... можешь сделать внизу панельку, мол перейти на тако-то байт ... это если ты целеноправлено захочешь сменить скажем 5396 байт, ты сразу к нему перейдешь. Можешь даже его цветом выделить :)

А с фоматами - в чем проблема, ты же открываешь файлик как обыкновенный бинарик, и типы тут могут быть любыми :)


так что, ничего сложно с этим нет

С Уважением,
Сергей
Программист - это маленький Бог, а все его ошибки - это самостоятельные творения:)
Так задумано:)

bodja
Новичок
Новичок
 
Сообщения: 40
Зарегистрирован: 02.04.2006 (Вс) 15:18
Откуда: Ukraina

Сообщение bodja » 07.07.2007 (Сб) 19:55

Я как раз тоже к этому додумался ,прогулявшись на свежем воздухе :)

У меня все равно файл разбивается на блоки по 256 байт ,вот и привяжу блоки к скроллу,так еще проше будет.

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

iGrok
Артефакт VBStreets
Артефакт VBStreets
 
Сообщения: 4272
Зарегистрирован: 10.05.2007 (Чт) 16:11
Откуда: Сетевое сознание

Сообщение iGrok » 07.07.2007 (Сб) 21:16

Ничего никуда преобразовывать не надо, по той простой причине, что ВСЕ файлы пишутся в бинарном виде. А уж как все это отображать - дело программы, которая это дело читает.
То есть бинарный редактор, сделанный по такому принципу будет открывать ВСЕ файлы, но только в бинарном виде. Если тебе нужно что-то другое, тогда да.. Нужно писать парсеры, конвертеры, и.т.д.. Но ты-то спрашивал про HEX редактор, не так ли? ,-)
label:
cli
jmp label

SSecurity
Служба безопасности
Аватара пользователя
 
Сообщения: 1283
Зарегистрирован: 19.08.2003 (Вт) 1:11
Откуда: Россия, Мурманск

Сообщение SSecurity » 07.07.2007 (Сб) 22:43

bodja писал(а):У меня все равно файл разбивается на блоки по 256 байт ,вот и привяжу блоки к скроллу,так еще проше будет.


Тебе по сути ничего разбивать не нужно.
На самом деле у тебя 2 пути:
1. НЕЭФФЕКТИВНЫЙ. С самого начала прочитать файл, засунуть его например в переменную Стринг. и потом показывать область из 256 байт как ты разбивал, тогда функция MID(BUF, N, 256) тебе нужна (N - позиция, BUF - буфер для хранения содержимого файла) .... если мне память не изменяет то у тебя будет ограничение на размер - 4 ГБ, правда если размер файла 3ГБ ... ты в лучшем случае минуту будешь ждать пока все загрузится.

2. ПРИЕМЛИМЫЙ. В режиме реального времени считываешь только 256 байт из файла и смотришь в редакторе .... можешь поредактировать и в тоже место сохранить. тут
Код: Выделить всё
OPEN .. FOR BINARY AS ..

быстро и оперативно.

А по форматам - согласен с мнением iGrok

С Уажением,
Сергей[/syntax]
Программист - это маленький Бог, а все его ошибки - это самостоятельные творения:)
Так задумано:)

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Сообщение Andrey Fedorov » 07.07.2007 (Сб) 23:41

bodja писал(а):По той ссылке ,контролл работет ,но не сохраняет файл и функции не все работают,давно облизываюсь около него :)
Очень хороший контролл.


В кирпичах есть мой. Баловался как-то, потому там желательно поправить несколько мелочей (ну лень вылизывать то что делалось просто из интереса, а не для практической задачи - энтузиазм по мере того как со всем разобрался пропадает). А так - работает. Файлы до 2 Gb, полноценные UNDO/REDO.
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...

bodja
Новичок
Новичок
 
Сообщения: 40
Зарегистрирован: 02.04.2006 (Вс) 15:18
Откуда: Ukraina

Сообщение bodja » 08.07.2007 (Вс) 0:26

iGrok писал(а):Но ты-то спрашивал про HEX редактор, не так ли? ,-)

Вот именно ,про НЕХ ,а не про BIN редактор :)
Для ясности вот небольшое содержимое нех-файла(открыто блокнотом)
:100000000FE50DBF04E00EBFA0E0B1E022242D9269
:100010001EEF211A10E4211608F02224A03012E06D
:10002000B107A8F370D2AD98AC9A00E000936800D5
:1000300001E0009369005CD0A0E0B1E0FDD1AD9A91
:10004000AC9800E40093680001E00093690050D090

Понятно что бинарно я могу его прочитать ,как любой другой,но его содержимое не бинарно ,а в нех виде.

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

В кирпичах есть мой.

Не тот что сверху давали?
А то я только этот видел,
если не этот ,как называется ,я поисчу :)

iGrok
Артефакт VBStreets
Артефакт VBStreets
 
Сообщения: 4272
Зарегистрирован: 10.05.2007 (Чт) 16:11
Откуда: Сетевое сознание

Сообщение iGrok » 08.07.2007 (Вс) 9:04

Стоп. Не путай теплое с мягким. Тебе именно про хекс редактор и писали. Хекс редактор - редактор шестнадцатиричного кода.

А тебе нужен просто редактор со своим форматом. В принципе, с этим и блокнот справляется =)
label:
cli
jmp label

SSecurity
Служба безопасности
Аватара пользователя
 
Сообщения: 1283
Зарегистрирован: 19.08.2003 (Вт) 1:11
Откуда: Россия, Мурманск

Сообщение SSecurity » 08.07.2007 (Вс) 13:56

iGrok писал(а):Стоп. Не путай теплое с мягким. Тебе именно про хекс редактор и писали. Хекс редактор - редактор шестнадцатиричного кода.

А тебе нужен просто редактор со своим форматом. В принципе, с этим и блокнот справляется =)


Я так понимаю ему просто нужно читать файлы созданные другими редакторами. Т.е. под HEX редактором автор понимает программу для работы с результатом работы других программ, т.е. предполагается при необходимости прочитать "своим HEX-редактором" файла "Hello.txt" с текстом "TEST" следует.
Код: Выделить всё
1. взять редактор стороннего разработчика,
1.1. Открыть файл "Hello.txt"
1.2. Сохранить результат в HEX файле
2. взять свой HEX редактором
2.1. открыть им HEX файл
2.2. внести изменения в HEX файл
2.3. сохранить HEX файл
3. взять редактор стороннего разработчика или свой
3.1. открыть HEX файл
3.2. сконвертировать его в бинарик
3.3. сохранить результат в файл


Лично мне кажется, что подобный процесс соддержит немного лишних пунктов, ну это на усмотрение каждого.

2 bodja
Открыв файл и прочитав с него 256 байт ... обратно ты их вписываешь, только в том случае если ты изменения вносил... если нет смело переписывай свой буффер ... файлу всеравно чем ты там занимаешься в редакторе :)

С Увжением,
Сергей
Программист - это маленький Бог, а все его ошибки - это самостоятельные творения:)
Так задумано:)

bodja
Новичок
Новичок
 
Сообщения: 40
Зарегистрирован: 02.04.2006 (Вс) 15:18
Откуда: Ukraina

Сообщение bodja » 08.07.2007 (Вс) 19:56

SSecurity писал(а):Я так понимаю ему просто нужно читать файлы созданные другими редакторами.


Во! Совершенно верно.Спасибо.
А то не как не могли понять друг друга.
Добавлю только ,что это совершенно стандартный формат файла,называется Intel HEX format.

С бинарным форматом уже разобрался,пока сделал только отображение прямо с файла нужного блока как советовали.
Нужно будет еще над самим редактированием байта подумать,что бы
под курсором подменялась каждая тетрада байта (ну чтобы строка не сдвигалась :) ).

С уважением Богдан.

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Сообщение Andrey Fedorov » 09.07.2007 (Пн) 10:42

bodja писал(а):Нужно будет еще над самим редактированием байта подумать,что бы под курсором подменялась каждая тетрада байта (ну чтобы строка не сдвигалась :) ).


А что там думать. По нормальному, редактор пишется в PictureBox, а не в TextBox - и все под конторлем...
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...

X-hacker
Обычный пользователь
Обычный пользователь
 
Сообщения: 83
Зарегистрирован: 26.08.2006 (Сб) 1:22
Откуда: Moldova

Сообщение X-hacker » 09.07.2007 (Пн) 23:22

Если тебе нужен инструмент, то возьми какой-нибудь Hex-Editor из профпакетов FuckYouBill (Претензии не ко мне, они так называются)
Там есть бесплатные, написанные профессиональными хакерами для таких же, чтоб ты и другие не тратили своё время попусту, не изобретали велосипед и не матерились, если оно не работает.
Просто тема давно избитая и поиск даст оччень большие результаты!(Касается и твоей проблемы)
Mail >>
Вложения
HEX.JPG
HEX.JPG (97.19 Кб) Просмотров: 250


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: AhrefsBot, Google-бот и гости: 87

    TopList