Software patches |
Добро пожаловать, гость ( Вход | Регистрация )
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, БД и прочего мусора. |
-=CHE@TER=- |
Nov 5 2023, 15:57
Сообщение
#2
|
Walter Sullivan Группа: Root Admin Сообщений: 1,361 Регистрация: 4-February 08 Пользователь №: 3 Спасибо сказали: 314 раз(а) |
Решил тут недавно пройтись UPX'ом по одной своей сишной программе собранной под GCC 3.2 из Dev-CPP и опа:
"CantPackException: unexpected value in PE header (try --force)" Файл всё ещё можно упаковать насильно при помощи ключа "--force", но не удобно. Полез в исходные коды UPX: CODE /src/p_w32pe_i386.cpp PackW32PeI386::needForceOption() r |= ((ih.flags & IMAGE_FILE_32BIT_MACHINE) == 0) В общем, у поля Characteristics в PE-заголовке, нет флага IMAGE_FILE_32BIT_MACHINE (0x100). Разработчики Windows-версии GCC, как и Watcom, тоже как-то документацию не очень читали. Как бы и так всё работает, но давайте поправим. Берём файл (именно этот, а не C:\Dev-Cpp\bin\ld.exe): C:\Dev-Cpp\mingw32\bin\ld.exe И меняем: 00044391: 00 01 Обращаю внимание, что это поправит только компиляцию и сборку через GCC.EXE и LD.EXE. Если, например, с программы нужно снять отладочные символы через утилиту strip.exe или проделать ещё какие-то манипуляции, то все такие программы придётся исправлять тоже, потому что в них всех это поле пересобирается заново! Для этого ищем последовательность: 66 81 4D DE 00 02 (or word [ebp-22], 0200h), потом поднимаемся вверх до последовательности 66 C7 45 DE 00 00 (mov word [ebp-22], 0000h) и там заменяем последний 00 на 01. Правильнее, конечно, ставить это флаг вместе с IMAGE_FILE_EXECUTABLE_IMAGE (02h), но так как он всего один байт, то там места нет, поэтому приходится заменять инициализацию (обнуление) всего этого поля перед добавлением других флагов. Теоретически не должно быть фатально, потому что эта версия GCC (3.2 из Dev-CPP) старая и только 32-х битный код собирать и умеет. |
Упрощённая версия | Сейчас: 4th December 2024 - 21:17 |