Имя пользователя:
Пароль:
 

Показать сообщение отдельно

Всем до свидания!


Moderator


Сообщения: 8314
Благодарности: 2863

Профиль | Отправить PM | Цитировать


для начала как рисуется прогрес бар

он рисуется специальной битовой маской, сделаной из 8 картинки ntoskrnl
рисуется наложением поверх со смещением на каждом этапе на 8 пикселей вправо.
чтобы получился "бегунок", то, что было отрисовано на предыдущем шаге закрашивается прямоугольником с индексным цветом 0, т.е. первым в палитре.
в картинке от MS (и большинстве других) индексный цвет 0=фону картинки=черный. Т.е. эти квадратики не "закрашиваются" а "исчезают"
достаточно поменять индексный цвет 0 с черного на что либо другое (на иллюстрации на тёмно бордовый) как сразу становится видно, как всё рисуется



на иллюстрации, кстати видна и замеченная некоторыми "проблема черного прямоугольника в верхнем левом углу" - он там рисуется всегда, но вот цвет его не обязательно черный - он рисуется первым цветом в палитре, который очень часто, действительно оказывется черным.

в исходной статье говорится о 3 местах определяющих вертикальную позицию прогрес бара, и о 2 определяющих параметр позиция+высота (т.е. о нижней границе прогресбара)
во всех источниках говорится о синхронном изменении байтов, при этом не поясняется, а что будет, если в эти позиции записать разные значения.

я эксперементировал с ntoskrnl.exe версии 5.1.2600.5657
в нём позиция находится по смещениям 31af0 34b00 34b8c
а нижняя граница 31b6e и 34b82

в TUKernel.exe создаваемом TU смещения другие (и сам файл иного размера) позицию я не искал, а нижняя граница в 33fc3 и 357a2.

при записи в эти ячейки разных значений можно наблюдать следующее



видно что единый прогрес бар развалился на отдельные элементы у которых 3 разных верхних границы и 2 разных нижних. Практичесого смысла в таком раздельном изменении параметров я не увидел, но зато в плане исследовательском результат обрадовал - значит искать точки с горизонтальной позицией прогрес бара (если их несколько) можно по одной. Целиком переместить по горизонтали получится только при нахождении всех точек, но частичный результат будет заметен и после одного изменения в правильном месте.

ну вот и подошли к тому, ради чего весь сыр бор и был затеян — к горизонтальному положению прогрес бара.

встал вопрос, что же искать. На одном из форумов была дана информация что горизонтальное положение прогресбара 256 т.е. (00 01 00 00 )
убил на поиски больше дня, но результатты были нулевые

решил проверить в фотошопе положение прогресбара и понял что искал не то.
горизонтальное положение прогрес бара 259 (03 01 00 00 )

и тут пошло веселее были найдены адреса 34b05 и 34b0c , манипуляция с данными в которых приводила к смещению отдельных элементов (судя по всему первого и последнего кубика) прогресбара.



вот собственно и всё, остальные иследованные места с (03 01 00 00) ничего не принесли.
то ли я что то пропустил, то ли нужно было искать-ковырять файл ещё дальше (глубже), то ли искать нужно было не 259, а например 259+8.
вообщем я иссяк и поиски прекратил.

вот адреса которые я пытался модифицировать




BMW09121985, удачи в продолжении поисков

Последний раз редактировалось Amigos, 18-03-2009 в 14:15.

Это сообщение посчитали полезным следующие участники:

Отправлено: 10:04, 16-03-2009 | #8