Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как рассмотреть двоичный код, Как рассмотреть двоичный код файла 
:(
    Опции темы
Мебель
Дата 18.12.2004, 04:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 49
Регистрация: 14.11.2004
Где: Великие Луки

Репутация: нет
Всего: нет



Каким образом можно вскрыть программно любой файл, для просмотра его двоичного кода, ну например в редакторе Memo? Если можно дайте, plese пример... smile
PM MAIL ICQ   Вверх
SPrograMMer
Дата 18.12.2004, 11:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Спамер :)
**


Профиль
Группа: Участник
Сообщений: 442
Регистрация: 5.11.2004
Где: Краснодар

Репутация: 2
Всего: 6



Зачем тебе в двоичном виде?
Если так сильно надо, то открывай файл как
Код

 Var
    F:File Of Byte;

И каждый считаный байт переводи в двоичный

PS: Только кажись геморойно это.


--------------------
животное = зверь
законченный гентушник
PM MAIL ICQ Jabber   Вверх
Мебель
Дата 18.12.2004, 21:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 49
Регистрация: 14.11.2004
Где: Великие Луки

Репутация: нет
Всего: нет



Это понятно, но как содержимое отобразить в Memo? smile
PM MAIL ICQ   Вверх
Ddddddelphi
Дата 18.12.2004, 23:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 48
Регистрация: 1.12.2004

Репутация: нет
Всего: нет



для этого есть команда chr(b:byte):char
PM MAIL   Вверх
Zero
Дата 19.12.2004, 00:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2169
Регистрация: 23.10.2004
Где: Россия, г. Рязань

Репутация: 8
Всего: 24



А есть специальный способ, открыть файл как не типизированый и дальше делай чё хотиш.
Код

var
 f:file;
 i:integer;  //Буферная переменная содержащая кусок файла
 n:integer;  //Количество считываемых байт
...
assignfile(f,'<Путь>');
reset(f,<Кол-во байт>); //т.е. по в посколько байтном режиме он должен открытся
blockread(f,i,n);
...
closefile(f);
...

PM MAIL ICQ   Вверх
Marriage
Дата 19.12.2004, 01:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 842
Регистрация: 4.5.2004
Где: Таганрог

Репутация: нет
Всего: 2



Это есть код функции , которая получает аргументом число от 0 до 255 и возвращает его двоичное представление. То есть, что нужно сделать это читать f : file of Byte побайтно, а после того как прочитал в переменную, нужно вызвать функцию , и Memo.Lines.Add....





Код

function TForm1.GET_BINARY(qwerty:byte ):string;

var
sub_mass : array[1..8] of byte;
i,y,z    :             integer;
buf      :                byte;
str:string;
Begin

Sub_Mass[1]:=128;
Sub_Mass[2]:=64;
Sub_Mass[3]:=32;
Sub_Mass[4]:=16;
Sub_Mass[5]:=8;
Sub_Mass[6]:=4;
Sub_Mass[7]:=2;
Sub_Mass[8]:=1;



i:=0;
y:=1;
z:=0;



 Begin
  buf := qwerty;


  while y <= 8 do
   Begin
    If buf < Sub_Mass[y] then
      Begin
       str:=str+'0';
       y:=y+1;
       z:=z+1;
       End
     Else
      Begin
       buf := buf - Sub_Mass[y];
       str:=str+'1';
       y:=y+1;
       z:=z+1;
      End;
   End;
  y:=1;
  i:=i+1;
 End;

result:=str;

end;




2ZERO

А если <Кол-во байт> > SizeOf(Integer) ????

Это сообщение отредактировал(а) Marriage - 19.12.2004, 01:26


--------------------
Praemonitus, praemunitus
PM MAIL ICQ   Вверх
SoWa
Дата 19.12.2004, 07:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Харекришна
****


Профиль
Группа: Комодератор
Сообщений: 2422
Регистрация: 18.10.2004

Репутация: 2
Всего: 74



А если <Кол-во байт> > SizeOf(Integer) ????

А других типов в Дельфи и небыло отродясь?! smile


--------------------
Всем добра smile
PM MAIL ICQ   Вверх
Vit
Дата 19.12.2004, 07:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vitaly Nevzorov
****


Профиль
Группа: Экс. модератор
Сообщений: 10964
Регистрация: 25.3.2002
Где: Chicago

Репутация: 48
Всего: 207



не парится, скачать и поставить компонент HexEdit - с мемо всё равно много не выжмешь для такой задачи....


--------------------
With the best wishes, Vit
I have done so much with so little for so long that I am now qualified to do anything with nothing
Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru
PM MAIL WWW ICQ   Вверх
Marriage
Дата 19.12.2004, 12:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 842
Регистрация: 4.5.2004
Где: Таганрог

Репутация: нет
Всего: 2



Цитата

А если <Кол-во байт> > SizeOf(Integer) ????

А других типов в Дельфи и небыло отродясь?!

И что ты этим хотел сказать ????


--------------------
Praemonitus, praemunitus
PM MAIL ICQ   Вверх
Snowy
Дата 20.12.2004, 12:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 192
Всего: 484



Вот как раз integer тут и не нужет.
Вот накатал на скорую ногу. Рабочий вариант:
Код

procedure FileToHex(fn:string);
const
 hex: string='0123456789ABCDEF';
var
 f: file of byte;
 m: array[0..15] of byte;
 l: string;
 i,n: integer;
begin
 Form1.Memo1.Clear;
 if not FileExists(fn) then exit;
 Assign(f,fn); Reset(f);
 repeat
   BlockRead(f, m, 16, n);
   l:=''; if n>0 then begin
     for i:=0 to n-1 do begin
       l:=l+copy(hex,m[i] div 16 +1,1)+
          copy(hex,m[i] mod 16 +1,1)+' ';
     end;
     Form1.Memo1.Lines.Add(l);
   end;
 until (n = 0);
 CloseFile(f);
end;

Выводит на Form1.Memo1 файл в обычном 16-ричном виде, как и любая hex смотрелка.

То же самое, но в двоичном виде:
Код

procedure FileToBin(fn:string);
const
 m: array[1..8] of byte=(128,64,32,16,8,4,2,1);
var
 f: file of byte;
 b: byte;
 l: string;
 i: integer;
begin
 Form1.Memo1.Clear;
 if not FileExists(fn) then exit;
 Assign(f,fn); Reset(f);
 while not EOF(f) do begin
   Read(f,b); l:='';
   for i:=1 to 8 do
     if (b or m[i]) = b then l:=l+'1'
     else l:=l+'0';
   Form1.Memo1.Lines.Add(l);
 end;
 CloseFile(f);
end;


Это сообщение отредактировал(а) Snowy - 20.12.2004, 12:22
PM MAIL   Вверх
Мебель
Дата 21.12.2004, 21:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 49
Регистрация: 14.11.2004
Где: Великие Луки

Репутация: нет
Всего: нет



Спасибо большое!!!!!!!!!! Буду пробовать!!!! smile smile
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0711 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.