<command>
-l/-g : расшифровывает original L2 files/ это относится к оффициальному клиенту
-d/-s : decrypts files encrypted with "new" RSA pairs
-e/-h <met> : encrypts file with chosen method. You must provide one
of the following: 111, 120, 121, 211, 212, 411, 412, 413, 414
-t : ignore tail (i.e. Exteel files have no tail)
Optional commands:
-r <rsa> : выбирает другую rsa ключевую пару.
0 - l2encdec's невыполнение 1 использованы чтобы
декодировать файлы L2J-VN. Вы не должны обеспечить эту команду,
если Вам не нужно пара кроме #0
Пример:
Расшифровка l2encdec.exe -s ItemName-e.dat
получим dec-ItemName-e.dat
Шифрование l2encdec.exe -h 412 dec-ItemName-e.dat
получим enc-ItemName-e.dat
После расшифровки к имени файла автоматом добавляется "dec-" а после шифровки - еще и "enc-"
------------------
l2asm-disasm, применяется для привидения расшифрованных бинарных файлов к табличному текстовому виду и наоборот.
Файлы Lineage - это набор упорядоченых даных, но не подписаных и на глаз не определить где, что начинается и заканчивается.
ddf файлы содержат структуры для преобразования (бинарный файл)<->(текстовый файл).
-d обязательное, и так - входные и выходные файлы
-e дополнительное и выполняет украшенный ddf файл с автоматически скорректированными выборами (особенно полезный для МЯГКО* выборы для l2asm).
-q аннулирует переменную ЗАГОЛОВКА и подавляет линию заголовка печати
-l заставьте 'немой перевод с основными транслитерациями
-f заставьте экономию их ASCF's с ' намеком
- <chartab> позволенное Вы выбираете как 8- битовые символы должны быть интерпретированы - устанавливается по умолчанию на ISO-8859-1
Получете текстовый файл в виде таблицы.
l2asm <-d ddf_file> [-q] input_file output_file
-q аннулирует переменную ЗАГОЛОВКА - l2asm примет заголовок, линия не присутствует
-l заставьте 'немой перевод с основными транслитерациями
-f заставьте кодирование всех строк ASCF как 8- бит
- <chartab> позволенное Вы выбираете как 8- битовые символы должны быть интерпретированы - устанавливается по умолчанию на ISO-8859-1
Оформлено плохо, по сути тема не для раздела Делфи совсем. Скорее уж это просто описание приложения la2encdec. Теперь вопрос, почему я не должен удалить эту тему?
________________
Ни одно доброе дело не остается безнаказанным.
Описание писал для того что бы было понятно что я хочу от вас!
Мне всего навсего нужен алгоритм для двух приложений L2asm и disasm что бы реализовать оболочку Визуальный Редактора dat файлов клиента Lineage!
Программу пишу на Delphi и за этого выбран раздел Delphi!
Вопрос так и остался как средствами Delphi реализовать визуальную работу с консольным приложениями L2asm и disasm прошу хотя бы алгоритм остальное сам сделаю!
Для полного понимания выложу исходник в исходнике реализована расшифровка и зашифровка файлов с помощью l2encdec.exe
[Ссылки могут видеть только зарегистрированные пользователи. ]
Код:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Controls, Forms,
Dialogs, StdCtrls, Shellapi, ImgList,
XPMan, FileCtrl, ComCtrls, ExtCtrls, Menus, ToolWin;
type
TForm1 = class(TForm)
ImageList1: TImageList;
XPManifest1: TXPManifest;
Panel3: TPanel;
ToolBar1: TToolBar;
ToolButton2: TToolButton;
ComboBox1: TComboBox;
StatusBar1: TStatusBar;
Panel1: TPanel;
Panel2: TPanel;
FileListBox1: TFileListBox;
FilterComboBox1: TFilterComboBox;
PopupMenu1: TPopupMenu;
N6: TMenuItem;
N7: TMenuItem;
PopupMenu2: TPopupMenu;
N8: TMenuItem;
N9: TMenuItem;
N10: TMenuItem;
N11: TMenuItem;
N12: TMenuItem;
Timer1: TTimer;
ToolButton1: TToolButton;
ToolButton3: TToolButton;
ToolButton4: TToolButton;
Memo1: TMemo;
Memo2: TMemo;
Panel4: TPanel;
Panel5: TPanel;
ToolBar2: TToolBar;
Edit1: TEdit;
ToolButton6: TToolButton;
ToolButton8: TToolButton;
Edit2: TEdit;
ToolButton5: TToolButton;
ToolButton7: TToolButton;
ToolButton9: TToolButton;
Timer2: TTimer;
ToolButton10: TToolButton;
Timer3: TTimer;
Edit3: TEdit;
Memo3: TMemo;
Splitter1: TSplitter;
procedure N5Click(Sender: TObject);
procedure ToolButton2MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure FileListBox1DblClick(Sender: TObject);
procedure ToolButton4Click(Sender: TObject);
procedure FileListBox1Click(Sender: TObject);
procedure ColorBox1Click(Sender: TObject);
procedure N8Click(Sender: TObject);
procedure N9Click(Sender: TObject);
procedure N10Click(Sender: TObject);
procedure N11Click(Sender: TObject);
procedure N12Click(Sender: TObject);
procedure ToolButton2Click(Sender: TObject);
procedure ToolButton1Click(Sender: TObject);
procedure ToolButton5Click(Sender: TObject);
procedure ToolButton6Click(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
procedure Timer2Timer(Sender: TObject);
procedure ToolButton9Click(Sender: TObject);
procedure Memo1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
procedure Edit2MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
s: string;
chosenDirectory: string;
implementation
uses Unit2;
{$R *.dfm}
procedure TForm1.ColorBox1Click(Sender: TObject);
begin
// Memo1.Font.Color:= ColorBox1.Selected; // Выбор цвета текста
end;
procedure TForm1.Edit2MouseDown(Sender: TObject; Button: TMouseButton;
// почистить Edit2
Shift: TShiftState; X, Y: Integer);
begin
Edit2.Clear;
end;
procedure TForm1.FileListBox1Click(Sender: TObject); // Статус бар
begin
StatusBar1.Panels[0].Text := 'Имя файла: ' + FileListBox1.Items
[FileListBox1.ItemIndex];
end;
procedure TForm1.FileListBox1DblClick(Sender: TObject); { РАСШИФРОФКА }
var
h: hwnd;
i: Integer;
begin
copyfile(PChar('l2encdec.exe'), PChar(FileListBox1.Directory), False);
// Открыть файл для расшифровки
// Выдергиваем имя файла и расширение
s := FileListBox1.Items[FileListBox1.ItemIndex];
Memo3.Lines.Add('{ РАСШИФРОФКА... } ' + s);
begin
// Теперь нам следует указать файл который нам нужен.
// Команды Раскодировать -s полный путь к файлу. Пример: C:\l2encdec.exe -s C:\l2.ini
// запуск скрыт SW_HIDE заУпск виден SW_SHOW
ShellExecute(h, 'open', 'l2encdec.exe',PChar(' -s ' +s), NiL, SW_SHOW);
begin
// батник
//Memo4.Lines.Text:= 'start '+'l2encdec.exe' + PChar (' -s ' +FileListBox1.FileName);
// Memo4.Lines.SaveToFile('Clean.bat');
begin
// Открыть в Memo1 раскодированый файл
sleep(1000);
Memo1.Clear;
Memo1.Lines.LoadFromFile('dec-' + s);
begin
// Подсчет строк в Memo
Memo2.Clear;
For i := 0 to Memo1.Lines.Count - 1 do // Запускаем цикл поиска строки
Memo2.Lines.Add(IntToStr(i));
Edit1.Text := IntToStr(i);
Memo3.Lines.Add('{ РАСШИФРОФКА ЗВЕРШИНА } ' + s);
end;
end;
end;
end;
end;
procedure TForm1.Memo1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
ToolButton2.ImageIndex := 6; // смена значка не сохранен
end;
procedure TForm1.N10Click(Sender: TObject);
begin
Memo1.PasteFromClipboard;
end;
procedure TForm1.N11Click(Sender: TObject);
begin
Memo1.ClearSelection;
end;
procedure TForm1.N12Click(Sender: TObject);
begin
Memo1.SelectAll;
end;
procedure TForm1.N5Click(Sender: TObject);
begin
close;
end;
procedure TForm1.N8Click(Sender: TObject);
begin
Memo1.CutToClipboard;
end;
procedure TForm1.N9Click(Sender: TObject);
begin
Memo1.CopyToClipboard;
end;
procedure TForm1.Timer1Timer(Sender: TObject); // Перемотка 2-х Memo вместе
var
P1, P2: Integer;
FirstVisibleLine: Integer;
begin
P1 := SendMessage(Memo1.Handle, EM_GETFIRSTVISIBLELINE, 0, 0);
P2 := SendMessage(Memo2.Handle, EM_GETFIRSTVISIBLELINE, 0, 0);
SendMessage(Memo2.Handle, EM_LINESCROLL, 0, P1 - P2);
end;
procedure TForm1.Timer2Timer(Sender: TObject); // Авто перемотка текста
begin
Memo1.Perform(WM_VSCROLL, SB_LINEDOWN, WM_VSCROLL);
end;
procedure TForm1.ToolButton1Click(Sender: TObject); // выбор папки
begin
SelectDirectory(' Укажите папку system вашей игры!', ' ', chosenDirectory);
FileListBox1.Directory := chosenDirectory;
end;
procedure TForm1.ToolButton2Click(Sender: TObject); { ЗАШИФРОВКА }
var
h: hwnd;
begin
// Сохранить изменение
Memo3.Lines.Add('{ ЗАШИФРОВКА... } ' + s);
Memo1.Lines.SaveToFile('dec-' + s);
// Теперь нам следует указать файл который нам нужен.
// Команды Закодировать -h 111, 120, 121, 211, 212, 411, 412, 413, 414 полный путь к файлу. Пример: C:\l2encdec.exe -h 412 C:\l2.ini
ShellExecute(h, 'open', 'l2encdec.exe', PChar
(' ' + ComboBox1.Text + ' dec-' + s), nil, SW_HIDE);
begin
// Копировать закодированый файл
sleep(1000);
if copyfile(PChar('enc-dec-' + s), PChar(FileListBox1.FileName), False) then
Memo3.Lines.Add('{ ЗАШИФРОВКА ЗАВЕРШИНА } ' + s);
end;
end;
procedure TForm1.ToolButton2MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
ToolButton2.ImageIndex := 2; // смена значка сохранен
end;
procedure TForm1.ToolButton4Click(Sender: TObject);
var
h: hwnd;
begin
// A:\l2Notepad Version 1.0.0.1\l2disasm.exe -d C4/dec-armorgrp.ddf dec-armorgrp.dat dec-armorgrp.txt
// "X:\l2asm-disasm_097\l2disasm.exe" -d "X:\l2asm-disasm_097\DDF\C4\sysstring-e.ddf" "X:\work\sysstring-e.dec" "X:\work\sysstring-e.txt"
ShellExecute(h, 'open', 'l2disasm.exe', PChar
(' -d ' + FileListBox1.FileName + ' ' + FileListBox1.FileName + ' ' +
FileListBox1.FileName), nil, SW_SHOW);
sleep(1000);
Memo1.Lines.LoadFromFile('dis-dec-' + s);
end;
procedure TForm1.ToolButton5Click(Sender: TObject); // Поиск текста в Memo1
var // Объявляем переменные
Find: string; // Искомая строка
i: Integer; // Счетчик для цикла
begin
Find := Edit2.Text; // Записываем в find текст из Edit
For i := 0 to Memo1.Lines.Count - 1 do // Запускаем цикл поиска строки
If Pos(Find, Memo1.Lines.Text) <> 0 Then
Begin
Memo1.SetFocus();
Memo1.SelStart := Pos(Find, Memo1.Lines.Text) - 1;
Memo1.SelLength := Length(Find);
end;
end;
procedure TForm1.ToolButton6Click(Sender: TObject); // Поиск строки по номеру
var
line: Integer;
begin
Memo1.SetFocus;
line := StrToIntDef(Edit1.Text, 1);
Memo1.SelStart := Memo1.Perform(EM_LINEINDEX, line, 0);
Memo1.Perform(EM_SCROLLCARET, 0, 0);
Memo1.SelLength := 1;
end;
procedure TForm1.ToolButton9Click(Sender: TObject);
// Визуальный поиск включение
begin
if Timer2.Enabled = True then
Timer2.Enabled := False
else
Timer2.Enabled := True;
begin
if Timer2.Enabled = True then
ToolButton9.ImageIndex := 14
else
ToolButton9.ImageIndex := 11;
end;
end;
end.
Последний раз редактировалось BiTru; 13.02.2012 в 20:15.
Причина: Добавлено сообщение
Смотришь в хекс редакторе структуру файла и по ней вынимаешь нужную информацию...
________________
Принимаются пожертвования любых размеров в фонд поддержки начинающих программистов
Кошельки: WMZ - Z276844220882; WMR - R231028582939; WMU - U394136909210; ЯД - 410011494605270.
ТС, что там обьяснять?
Пользуешся все тем же shellexecute, только верно расставляегшь параметры.
А если ты хочешь консольный вывод получать в свое оконное приложение то так и спроси у гуглы.
________________
Ни одно доброе дело не остается безнаказанным.
(l2asm disasm) Если честно я не разу не пользовался этими программами,
в мануалах непонятное описание откуда какой файл берется?
и за этого мне трудно придумать алгоритм. Объясните пожалуйста как правильно пользоваться этими программами?
P/S Код в Delphi мне не нужен я сам его прекрасно знаю! Мне нужна подробная информация пользования программой l2asm disasm
(я не спорю возможно я жестко туплю но все же жду помощи)
Последний раз редактировалось BiTru; 19.02.2012 в 10:17.