IPB

Добро пожаловать, гость ( Вход | Регистрация )

> Software patches
-=CHE@TER=-
Oct 23 2010, 16:18
Сообщение #1


Walter Sullivan
***

Группа: Root Admin
Сообщений: 1,361
Регистрация: 4-February 08
Пользователь №: 3
Спасибо сказали: 314 раз(а)



ACDSee 5.0.0.0025 PowerPack (2002)
Disable database and Windows 7 compatability patch
Отключение IDBSvr.exe и БД изображений

Пользуюсь с незапамятных времён этой версией ACDSee. Тут нет огромного количества ненужных свистопыхтелок (или по крайней мере большую часть из них можно отключить или скрыть) которые наводнили другие версии этой программы. Зато всё остальное представлено в полном объёме.
Единственная проблема, которую не удалось отключить штатными средствами - это опухание БД с изображениями. Дело в том что ACDSee для быстроты работы делает превью изображений и сохраняет их в свою БД. Последняя, в свою очередь, со временем пухнет всё больше и больше что мне на системном диске как бы нафиг не надо.
Ещё, как выяснилось, программа не дружит с многоядерными процессорами и разваливается на них.
И, наконец, при попытке открыть каталог содержащий .LNK или .URL файл с длинным адресом программа сразу падает.
В общем решение всех проблем такое:

1) Отучаем ACDSee запускать свою БД. Для этого меняем в файле:
C:\Program Files\ACD Systems\ACDSee\5.0\ACDSee5.exe
; uni-processor patch
; запускать только на 1 ядре
00000167: 01 -> 41
; disable IDBSvr database service
; отключаем сервис базы данных изображений
000175D5: 86 -> AE
000175F2: 86 -> AE
0001760E: 29 -> 00
0001761B: 74 -> EB
0001761C: 08 -> 1B
0001B7E7: E8 -> B8
0001B7E8: 74 -> 00
0001B7E9: 8A -> 00
; fix long URL crash - disable .LNK/.URL handling
; исправляем падение при длинных URL - отключаем их обработку
001E94E4: 2E -> 00
001EA254: 2E -> 00

2) Удаляем всё из каталога:
C:\Documents and Settings\%USERNAME%\Application Data\ACD Systems\

После всего этого ACDSee даже быстрее стартует (на глаз), т.к. нет необходимости дожидаться загрузки "IDBSvr.exe", её .DLL, БД и прочего мусора.
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
 
Reply to this topicStart new topic
Ответов
-=CHE@TER=-
Mar 6 2016, 05:57
Сообщение #2


Walter Sullivan
***

Группа: Root Admin
Сообщений: 1,361
Регистрация: 4-February 08
Пользователь №: 3
Спасибо сказали: 314 раз(а)



Продублирую тут своё сообщение из другой темы.
У меня стоят несколько плагинов для FAR Manager, в том числе и Calculator v3.0 by Cail Lomecb © 1998-2001 (calc). Калькулятор этот при всех достоинствах адово часто падает, если в выражении встречается буква "e" (экспоненциальная запись числа). Сам я этой функцией редко пользуюсь, а вот если в шестнадцатеричном числе встретилась такая буква, а после неё ещё и цифра - всё, труба.
Что заметил, если запустить FAR и сразу запустить калькулятор вбив туда "9e999", то результат будет "1.#INF" (как и должно). А если сначала открыть любой файл на редактирование (перед этим colorer выводит окно "just wait - i'm realoading..."), то после этого упомянутое выше выражение будет приводить к обвалу калькулятора. Иногда, кстати, и colorer обваливается тоже, но при каких условиях сказать затрудняюсь, ибо это редко происходит.
Так вот! Если в каком-нибудь плагине вызвать:
CODE
Set8087CW($133F); // Delphi
_control87(0x133F, 0x133F); // C++ #include <float.h>
То калькулятор валиться перестанет.
Это команды для управления математическим сопроцессором отключающие ошибки вычисления.
Intel® 64 and IA-32 Architectures Developer's Manual: Vol. 1
По всей видимости colorer за каким-то чёртом меняет флаги сопроцессора (кстати говоря, их даже некоторые функции WinAPI меняют типа CreateWindow() - см. исходные коды Delphi 7 - они там все такие функции оборачивают с сохранением до и восстановлением флагов после вызова).
Немного подумав, я пришёл к выводу что можно, в качестве костыля, отключить в калькуляторе ошибки вычисления таким макаром. Решил поглядеть исходные коды Delphi 7 у обозначенной команды чтобы знать какой код вставлять:
CODE
procedure Set8087CW(NewCW: Word);
begin
  Default8087CW := NewCW;
  asm
    FNCLEX // don't raise pending exceptions enabled by the new flags
{$IFDEF PIC}
    MOV EAX,[EBX].OFFSET Default8087CW
    FLDCW [EAX]
{$ELSE}
    FLDCW   Default8087CW
{$ENDIF}
  end;
end;
Опа-опа-опа! FNCLEX сбрасывает уже накопленные ошибки и только после этого FLDCW загружает новые флаги. Собственно, на FLDCW плагин calc и валился (их там даже два подряд):
CODE
; calc.dll:00009EC4
push  ebp
mov   ebp, esp
add   esp, -00Ch
fstcw [ebp][-02]
fwait
mov   ax, [ebp][-02]
or    ah, 00Ch
mov   [ebp][-04], ax
fldcw [ebp][-04]
fistp q,[ebp][-0C]
fldcw [ebp][-02]; <-- exception here
mov   eax,[ebp][-0C]
mov   edx,[ebp][-08]
leave
retn
По сути, всё что нужно - это всунуть инструкцию fnclex (2 байта) перед fistp. Т.к. после этой процедуры есть выравнивающие байты, то я просто сдвинул код:
QUOTE
; version info:
; 100864 bytes
; 2001.05.02 14:10:44
; FAR Manager Calculator v3.0
; Cail Lomecb © 1998-2001
CALC.DLL
00009EE0: D9 DB
00009EE1: 6D E2
00009EE2: FE D9
00009EE3: 8B 6D
00009EE4: 45 FE
00009EE5: F4 8B
00009EE6: 8B 45
00009EE7: 55 F4
00009EE8: F8 8B
00009EE9: C9 55
00009EEA: C3 F8
00009EEB: CC C9
00009EEC: CC C3
После чего калькулятор наконец-то перестал валиться.
User is offlineProfile CardPM
Go to the top of the page
+Quote Post

Сообщения в этой теме
-=CHE@TER=-   Software patches   Oct 23 2010, 16:18
-=CHE@TER=-   Переименовал тему. FlashGet 1.73 Build 128 (2006)...   Nov 18 2010, 12:55
-=CHE@TER=-   Да, блин! Долбанный ACDSee! Добавил в перв...   Mar 27 2011, 11:14
-=CHE@TER=-   Как выяснилось, ACDSee 5 - самый лучший из ACDSee,...   Jan 11 2012, 21:52
-=CHE@TER=-   На Windows 7 она работает, но почему-то заваливает...   Jan 14 2012, 15:11
-=CHE@TER=-   Продолжаем разговор. На этот раз мы будем исправля...   Oct 12 2013, 10:42
-=CHE@TER=-   Многие знают, что ещё со времён MS-DOS есть такая ...   Nov 17 2013, 11:03
-=CHE@TER=-   И последнее дополнение на сегодня. Не так давно (в...   Apr 1 2014, 14:58
Axsis   Кстати, пара вопросов на тему. Я так понимаю, что ...   Apr 3 2014, 18:48
-=CHE@TER=-   Например foobar2000, которым я пользуюсь, играет и...   Apr 4 2014, 03:26
-=CHE@TER=-   Продублирую тут своё сообщение из другой темы. У м...   Mar 6 2016, 05:57
-=CHE@TER=-   Microsoft Games for Windows 8 v1.2 / Windows 10 fi...   Aug 10 2016, 18:39
-=CHE@TER=-   Переделал и сократил патч для ACDSee5 - сделал его...   Nov 3 2016, 13:28
useretail   А почему не 2.95? Вроде она последняя из вторых.....   Apr 19 2017, 00:42
-=CHE@TER=-   А почему не 2.95? Вроде она последняя из вторых......   Apr 19 2017, 05:19
useretail   Захожу раз в год и как всегда всякие полезняшки уз...   Apr 19 2017, 22:25
-=CHE@TER=-   Захожу раз в год и как всегда всякие полезняшки уз...   Apr 20 2017, 04:52
-=CHE@TER=-   Блин, чёртов ACDSee5! В который раз переделыва...   Aug 27 2017, 09:21
-=CHE@TER=-   Решил тут недавно пройтись UPX'ом по одной сво...   Nov 5 2023, 15:57


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0 -

 



Упрощённая версия Сейчас: 26th December 2024 - 18:16