forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Основной форум (http://forum.boolean.name/forumdisplay.php?f=49)
-   -   Защита содержимого JAR файла от распаковки (http://forum.boolean.name/showthread.php?t=7513)

abcdef 27.12.2008 01:37

Защита содержимого JAR файла от распаковки
 
Где-то видел программы.. и инфу, что встроенный в java распаковщик игнорирует некоторую часть заголовка архива, если ее удалить, то стандартными архиваторами файлы из архива не распакуются, но java их примет..

Кто-нить интересовался\делал подобное?

ViNT 27.12.2008 01:58

Ответ: Защита содержимого JAR файла от распаковки
 
Не знаю на счет такой программы, но мне кажется WinRAR что угодно распакует.

beZ_probleM 27.12.2008 02:35

Ответ: Защита содержимого JAR файла от распаковки
 
ViNT +1 ))))

abcdef 27.12.2008 02:42

Ответ: Защита содержимого JAR файла от распаковки
 
программы - в смысле модифицированные jar-файлы,..

да-Winrar много форматов понимает,
но он или другой распаковщик не выгрузит файлик из архива, если, к примеру, умышленно изменить контрольную сумму..

ViNT 27.12.2008 02:56

Ответ: Защита содержимого JAR файла от распаковки
 
Тема интересная, но во-первых, относится ли это к мобильной java (может распаковщик какого-нибудь старого,а может и нового телефона тоже повиснет), во-вторых, найти бы, какие данные игнорируются, дальше написать программу не проблема.

blackman 27.12.2008 10:32

Ответ: Защита содержимого JAR файла от распаковки
 
ViNT это не тот JAR. Описанный тобою - какой-то старый забытый экзотический формат архивов (на wotsit.org нашел, да? ;).
А j2me JAR - это по сути обычный ZIP-архив.
И даже если в нем попортить некоторые заголовки и он будет распаковываться телефонным интерпретатором, а тем же WinRAR-ом открываться не будет (ну мало ли вдруг), то все равно можно будет сделать Repair archive программами для восстановления битых архивов, коих море.

ViNT 27.12.2008 12:53

Ответ: Защита содержимого JAR файла от распаковки
 
Цитата:

Сообщение от blackman (Сообщение 92963)
ViNT это не тот JAR. Описанный тобою - какой-то старый забытый экзотический формат архивов (на wotsit.org нашел, да? ;).
А j2me JAR - это по сути обычный ZIP-архив.
И даже если в нем попортить некоторые заголовки и он будет распаковываться телефонным интерпретатором, а тем же WinRAR-ом открываться не будет (ну мало ли вдруг), то все равно можно будет сделать Repair archive программами для восстановления битых архивов, коих море.

Там и нашел. Вы правы, сам как бы знаю, что JAR то ZIP, но раз написано... Лень было проверять.

abcdef 27.12.2008 15:50

Ответ: Защита содержимого JAR файла от распаковки
 
ViNT - формат исполняемого файла, относиться к java (MIDletPascal), мне тоже интересно - все-ли телефоны обработают измененный архив...

blackman - конечно восстановать можно, достаточно получить блок упакованных данных и к примеру распаковать стандартной windows-библиотекой zlib, вот пример модуля упаковки/распаковки для Delphi:
Код:

unit zip;interface Var err:Integer; function compressFile(name,name2:String):Boolean;
function uncompressFile(name,name2:String):Boolean; implementation uses zlib,Classes;
Var inStream, outStream:TMemoryStream;
procedure init;Begin inStream:=TMemoryStream.Create;outStream:=TMemoryStream.Create;End;
procedure done;Begin outStream.Free;inStream.Free;End;
procedure compress; begin err:=0;with TCompressionStream.Create(TCompressionLevel({clNone}clMax),outStream) do
try try CopyFrom(inStream,inStream.Size);except else err:=1; end; finally Free;end;end;
procedure uncompress;Const BufferSize=4096; Var ZStream:TDecompressionStream;Buffer:array[0..BufferSize-1]of Byte;
Count:integer; Begin err:=0;ZStream:=TDecompressionStream.Create(InStream);try try repeat
Count:=ZStream.Read(Buffer, BufferSize);if Count=0 then Break;OutStream.WriteBuffer(Buffer,Count);until false;
except else err:=1;end;finally ZStream.Free;end;End;
function compressFile(name,name2:String):Boolean;Begin Result:=true;try try init;inStream.LoadFromFile(name);compress;
outStream.SaveToFile(name2);finally done;end;except else Result:=false;end;End;
function uncompressFile(name,name2:String):Boolean;Begin Result:=true; try try init;inStream.LoadFromFile(name);
uncompress;outStream.SaveToFile(name2);finally done;end;except else Result:=false;end;End;begin end.

эдесь не добавляется ни какой заголовок, просто упаковываем распаковываем из потока (файла)...
________
нестандартный заголовок - все-же некоторый уровень защиты от посягательств на ресурсы программы..
p.s.: исходники работы с заголовками zip-архивов можно посмотреть здесь: http://www.sources.ru/pascal/archives/index3.htm

abcdef 27.12.2008 21:52

Ответ: Защита содержимого JAR файла от распаковки
 
Вложений: 1
в архиве образец, поковырялся с hex-редактором и нашел некоторое решение, в эмуляторе работает, winrar не распаковывает...
попробуйте восстановить файлы!

p.s.: самое интересное, то что эту защиту увидел в программе на MIDletPascal :)

jimon 28.12.2008 01:30

Ответ: Защита содержимого JAR файла от распаковки
 
abcdef
чот не то, распоковал demka.jar, переименовал в demka.zip, спокойно открыл winrar'ом
...
а вот файлы с него не распаковываются, хотя список файлов я смог получить

ViNT 28.12.2008 01:39

Ответ: Защита содержимого JAR файла от распаковки
 
Что интересно, после выполнения операции восстановления архива файл MANIFEST.MF спокойно извлекся, а остальные мрдуль восстановления даже не нашел.

abcdef 29.12.2008 00:04

Ответ: Защита содержимого JAR файла от распаковки
 
Файл легко восстанавливается утилитой pkzipfix.exe,
...нашел интересную статейку по восстановлению удаленных архивов:
Код:

─ ARCHIVES ───────── Архивы и Архиваторы ─
 Msg  : 19 of 19                            Addr                        Date
 From : Dima Orlov                    2:461/27                        11.06.97
 Subj : Восстановление убитых файлов с помощью ZIP
──────────────────
{> Cut here. FileName= RESTZIP.MSG }
─ 4INT ─ It's interesting ─
 Msg  : 122 of 200                          Addr                        Date
 From : Dima Orlov                    2:461/27                        11.06.97
 Subj : Восстановление убитых файлов с помощью ZIP
──────────────────────────
Hello, Pavel Gulchouck !

 > Лично для меня нет проблемы распаковать какой-нибудь pah3, ain или
 > bsa. Hо паковать файл для других чем-то кроме zip-а (ну или tar+gzip для
 > чисто юниксовых применений) мне в голову не прийдет.

И это правильно. BTW zip - один из самых восстанавливаемых при
повреждениях форматов. Так недавно у меня грохнулся единственный
экземпляр zip'а с сорцами одной программы, причем не просто грохнулся,
а стал нулевой длины. Я запустил свою любимую программку free:
Uses Dos;
var f: File;
begin
Assign(F,'free');
ReWrite(F, 1);
Seek(f,DiskFree(0));
asm
  mov ah,$40
  mov bx, word ptr f
  mov cx,0
  int 21h
end;
close(f);
end.

Которая все свободное место на винте превращает в файл с именем free.
Потом на этот файл напустил pkzipfix, и получил здоровенный zip, в
котором были файлы из всех относительно недавно грохнутых zip'ов,
в том числе и искомые сорцы.

С уважением, Дима Орлов
--- [CONNECT Team]
 * Origin: Electric BBS (0572) 477-177 (2:461/27)


abcdef 22.01.2009 21:12

Ответ: Защита содержимого JAR файла от распаковки
 
Вложений: 1
если кому интересно вот находил в инете маленький и очень простой исходник на Pascal разбора формата zip-файлов на нем была создана программа сборки неупакованных (zip) jar-книжек (все файлы из директории собирались в исполняемый jar), размер данных не уменьшался, но программки запускались, алгоритм легко перенести в мобильную версию, например: тексты качаются с интернета, а программа собирается и сохраняется в файловую систему.


Часовой пояс GMT +4, время: 17:30.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot