Page 2 of 2

Re: Unz - распаковщик файлов zip и 7z, основанный на archiver.obj

Posted: Thu Feb 25, 2021 4:27 pm
by maxcodehack
Что то я посмотрел - unz распаковывает только один раз после запуска системы. Потом просо падает и не распаковывает

Re: Unz - распаковщик файлов zip и 7z, основанный на archiver.obj

Posted: Tue Jun 08, 2021 12:58 am
by Leency
Я исправил положение поля с паролем, но выяснилась другая проблема: память поля затирается. Первые 1-4 байта.
Я проверял даже на старых дистрах - то же самое. Пароль соответственно не работает.

Кто разбирается в ассемблере, гляньте, пожалуйста.
Прилагаю тестовый архив с паролем.

Пароль 123456

Re: Unz - распаковщик файлов zip и 7z, основанный на archiver.obj

Posted: Mon Jun 14, 2021 10:36 pm
by IgorA
Leency wrote:Прилагаю тестовый архив с паролем.
А какой пароль для распаковки этого архива? Единицы как на скрине?

Re: Unz - распаковщик файлов zip и 7z, основанный на archiver.obj

Posted: Mon Jun 14, 2021 11:17 pm
by Leency
Добавил другой архив.
Пароль 123456

И обновись с SVN. Я удалил старый код, получив одобрение автора. Была задумка, которая осталась незакончена, сделать предпросмотр содержимого архива и выделение чекбоксами.

Вообще код Unz требует структуризации и чистки :)

Re: Unz - распаковщик файлов zip и 7z, основанный на archiver.obj

Posted: Tue Jun 15, 2021 9:59 am
by IgorA
В общем что я смог выяснить по текстовому полю с паролем:
1) сначала текстовое поле с паролем берет текст из переменной

Code: Select all

password	rb 256
2) потом в это текстовое поле подставляется какое-то поле из структуры dlgInfo

Code: Select all

	mov	ebx,[dlgInfo]
	mov	eax,[ebx+19*4]
3) и где-то в программе по адресу этого поля структуры dlgInfo пишутся какие-то символы, которые отображаются квадратиками
Т.е. не понятно что это за структура dlgInfo ? И не ясно в какой из функций появляются символы квадратики, возможно где-то внутри функции aPluginLoad ???
Пробовал делать что-бы текстовое поле работало само по себе а при закрытии из него пароль копировался по адресу [dlgInfo+19*4]. Квадратики пропадают, но появляется сообщение Ошибка в данных архива или неверный пароль и пароль не распаковывается. Т.е. проблема не в текстовом поле, потому что оно само по себе работает.

Re: Unz - распаковщик файлов zip и 7z, основанный на archiver.obj

Posted: Tue Jun 15, 2021 11:55 am
by GerdtR
Картина такая: ссылка на password хранится в структуре edtPassword и в переменной forpassword. Очевидно я думал, что место хранения пароля может быть не только в password. Но это не важно. Важно то, что в коде unz я виду лишь одну запись в поле password - и это запись нулевого байта 0 - очистка строки, короче:
Spoiler:proc DialogBox dlgInfo:dword
pushad
mov ebx,[dlgInfo] ;**
mov eax,[ebx+19*4]
mov [forpassword],eax
mov byte[eax], 0 ;здесь обнуляю строку
mov [stateDlg], 0
mcall 51,1,threadDialogBox,stackDlg
В строке ** очень интересно то, что тут в 19 dword лежит ссылка на password. Этот dlgInfo <= kfar_info_struc.DialogBox и kfar_info.DialogBox , но где используется kfar_info_struc - не вижу. А kfar_info используется плагином. В kfar нет аналогичного бага? Ну и в поле password пишет boxlib. На этом всё пока.
Отлаживать это дело надо, долго и упорно.

Re: Unz - распаковщик файлов zip и 7z, основанный на archiver.obj

Posted: Mon Jun 21, 2021 1:44 am
by dunkaist
Should be fixed in #8900.

Re: Unz - распаковщик файлов zip и 7z, основанный на archiver.obj

Posted: Mon Jun 21, 2021 10:16 am
by Leency
Great, thanks!