Цитата:
Сообщение от 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 редактор не лазить.
Вот такой мысел
|