Показать сообщение отдельно
  #8  
Старый 28.07.2018, 20:33
TEKTON TEKTON вне форума
Новичок
 
Регистрация: 14.03.2011
Сообщения: 60
Репутация: 10
По умолчанию

Цитата:
Сообщение от lmikle
Ну вот прямо так и режешь:

Файл Music1.inc
Код:
const
   xm : array[0..130410] of byte = (
    $45, $78, $74, $65, $6E, $64, $65, $64, $20, $4D, $6F, $64, $75, $6C,
$45, $78, $74, $65, $6E, $64, $65, $64, $20, $4D, $6F, $64, $75, $6C,  
$45, $78, $74, $65, $6E, $64, $65, $64, $20, $4D, $6F, $64, $75, $6C,    
.....
.....   
.....  Куча  куча километровых данных
.....
.....
$45, $78, $74, $65, $6E, $64, $65, $64, $20, $4D, $6F, $64, $75, $6C,  
$45, $78, $74, $65, $6E, $64, $65, $64, $20, $4D, $6F, $64, $75, $6C,  
$03, $03, $03, $03, $03, $02, $03, $02, $03, $02, $02
);

В оригинальном исходнике:
Код:
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;
 
type
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;

{$I Music1.inc}
 
implementation
 
{$R *.dfm}
//Подключаем файл импорта функций ufmod
{$I ufmod.inc *** uFMOD API (WINMM) }
procedure TForm1.Button1Click(Sender: TObject);
begin
 uFMOD_PlaySong(@xm,Length(xm),XM_MEMORY);
end;
 
procedure TForm1.Button2Click(Sender: TObject);
begin
 uFMOD_StopSong;
end;
 
end.

Т.е., по сути, с точки зрения компилятора исходник остается точно таким же. Просто теперь препроцессор скомпонует его из 2х физических файлов, вставив .inc файл прямо вмето директивы включения.

ЗЫ. Для особо умных. я знаю, что у паскаля нет выделенного шага препроцессора, но так легче объяснить.

Нее.
Я наверно не совсем доходчиво изложил мыслю свою.

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

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

Если б трекерная музыка начиналась с определённого заголовка аля
Extended Module: ... и заканчивалась на определённые байты типо как теги в html то было б круто.
Почему такое не было принято не понятно.
Скорее всего просто никого не волновало "выдирание" музыки обратно с уже скомпиленного exe.
А так получается заголовок Extended Module в Hex редакторе можно найти, а где музыка заканчивается, только по "рисунку" и характерным повторениям байтов можно на вскидку определить.
Вот и посетила меня идея что б скрестить трекер плеер с Hex редактором
Что б типо такого получилось:
https://youtu.be/vFx6xNsNQMg
Показанное в ролике, это конечно чудеса монтажа

Типо открываешь в проге exe, она находит начало музыки,
Потом запускаешь плеер и прослушиваешь трек до конца.
Когда музыка остановилась,
кликаешь кнопку и конечный адрес найден.
Ну и что б можно было немного по этим байтам прогуляться было, Вперёд/назад.
Ну и можно сразу резак прикрутить, что б потом в Hex редактор не лазить.
Вот такой мысел
Ответить с цитированием