Легенда:
новое сообщение
закрытая нитка
новое сообщение
в закрытой нитке
старое сообщение
|
- Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
- Новичкам также крайне полезно ознакомиться с данным документом.
|
В догонку 30.07.02 20:26 Число просмотров: 2073
Автор: Access Статус: Незарегистрированный пользователь
|
Не знаю где ты смотрел про регистрацию, но для русских написано 100р.
|
<programming>
|
[Pascal] Спецы, помогите пожалуйста. 19.07.01 12:30
Автор: X_Shadow Статус: Незарегистрированный пользователь
|
Ситуация следующая. Я програмист. Взялся разработать один проект. Дизайн для
него важен. Решил использовать технологию скинов. Наткнулся на пакет
ActiveSkin производитель SoftShape (softshape.com). Класный пакет, красивые
и мощные эфекты. Но это все лирика. Короче, пакет шароварный 90$, и если не
зарегестрирован, то при запуске матерится, но работает. Решил сее
упущение подправить. SoftIce-ом нашел нужные байты для подправки в памяти,
они оказались в OCX - элементе.
...
MOV EDI, [KERNEL32!GETTICKCOUNT]
CALL EDI
MOV [EBP-0C],EAX
PUSH 10
PUSH 121585F0
PUSH 1215855C
PUSH EBX
CALL [USER32!MESSAGEBOXA]
CALL EDI
SUB EAX.[EBP-0C]
MOV DWORD PTR [1215DAE4],00000001
CMP EAX,00000190
JB 12121622
.....
Как зарегестрить так сказать "официально" я не знаю, наверное где-то прописыва
ется в реестре. Но меня устроит, пусти оно не матерится при запуске. Я отключил
вызов функции MessageBoxA, там еще и защита по времени выполнения, если менее
190 тиков повторяется вызов всего этого блока и понятное дело падает в
бесконечный цикл. Я подправил и это, изменив 190 на 0. Все заработало не
матерясь. Но ОБЛОМ!. При двойном клике на форме прога виснит вообще.
Может это и совпадение и виснит оно не в обработчике двойного клика, а например,
при перерисовке формы. Как я не бился ничего. Но что еще самое странное,
я попробовал оставить вывод окна сообщения, но поменял
PUSH 10 на PUSH 0, по сути поменял внешний вид окна, и оно поменялось при выводе,
но опять все висло. Я подумал, може каким-то образом проверяется на изменения
кода, правдо не представляю как, но оказалось нет. Так как когда я только
поменял в CMP 190 на 0, то все работало не вися. У меня уже ум за разум заходит,
что делять не знаю, може кто поможет, я не много знаю из технологии OCX, може
что там есть хитрое. Но что еще странное, демка, поставляемая в пакете на
Delphi на 200 с хвостом килл больше чем мною скомпиленное из их исходников, без
малейшего изменения. Что может быть, помогите, кто знает, советом или практически.
Я хотел бы использовать этот пакет.
P.S. Буду очень признателен за помощь. Заранее благодарен.
|
|
[Pascal] Спецы, помогите пожалуйста. 22.04.03 03:04
Автор: Васек Статус: Незарегистрированный пользователь
|
А ты не пробовал платить за нее? Програмисты все же старались.
Я заплатил и все работает отлично.
|
|
Присмотритесь к дате корневого сообщения, ветке уже год ;-) 01.08.02 15:01
Автор: Cyril <sc> Статус: Member Отредактировано 01.08.02 15:01 Количество правок: 1
|
|
|
В догонку 30.07.02 20:26
Автор: Access Статус: Незарегистрированный пользователь
|
Не знаю где ты смотрел про регистрацию, но для русских написано 100р.
|
| |
Спишись с автором. Или в долг даст, или вообще подарит (может быть). Наш автор. Ты же коммерческий проект делаешь. А он тоже не просто так пакет этот писал. 01.08.02 12:24
Автор: KMiNT21 <http://blog.kmint21.com> Статус: Member
|
|
|
[Pascal] Спецы, помогите пожалуйста. 19.07.01 14:47
Автор: ukv Статус: Незарегистрированный пользователь
|
Самый простой способ проверить наличие защиты на изменение кода -
в интересующем месте исходной программы поменять местами 2 команды, в данном случае это
SUB EAX,[EBP-0C]
MOV DWORD PTR [1215DAE4],00000001
Если такой защиты нет, то на работе программы такое изменение никак сказаться не должно.
Дальше такое соображение: вызов MessageBox отключался вместе со стоящими перед
ним PUSH'ами? Если нет, то стек подобной шутки не простит. Я бы фрагмент
PUSH 10
PUSH 121585F0
PUSH 1215855C
PUSH EBX
CALL [USER32!MESSAGEBOXA]
CALL EDI
SUB EAX.[EBP-0C]
MOV DWORD PTR [1215DAE4],00000001
CMP EAX,00000190
переписал в виде
nop....nop
mov eax,600
MOV DWORD PTR [1215DAE4],00000001
CMP EAX,00000190
0x600=1536 (полторы секунды - вполне нормальное время реакции).
|
| |
[Pascal] Спецы, помогите пожалуйста. 30.07.02 20:23
Автор: Access Статус: Незарегистрированный пользователь
|
Может я не профи , но сделал так и работает у меня как часы:
Кусок:
:1001BD3E 399EF0000000 cmp dword ptr [esi+000000F0], ebx
:1001BD44 57 push edi
:1001BD45 753A jne 1001BD81
:1001BD47 391D58090410 cmp dword ptr [10040958], ebx
:1001BD4D 7532 jne 1001BD81
Заменил на:
:1001BD3E 399EF0000000 cmp dword ptr [esi+000000F0], ebx
:1001BD44 57 push edi
:1001BD45 753A je 1001BD81
:1001BD47 391D58090410 cmp dword ptr [10040958], ebx
:1001BD4D 7532 je 1001BD81
|
| | |
А при переносе на другую тачку всё работает? 02.02.04 18:17
Автор: Jackson Статус: Незарегистрированный пользователь
|
> Может я не профи , но сделал так и работает у меня как > часы: > > Кусок: > :1001BD3E 399EF0000000 cmp dword ptr > [esi+000000F0], ebx > :1001BD44 57 push edi > :1001BD45 753A jne 1001BD81 > :1001BD47 391D58090410 cmp dword ptr [10040958], > ebx > :1001BD4D 7532 jne 1001BD81 > > Заменил на: > :1001BD3E 399EF0000000 cmp dword ptr > [esi+000000F0], ebx > :1001BD44 57 push edi > :1001BD45 753A je 1001BD81 > :1001BD47 391D58090410 cmp dword ptr [10040958], > ebx > :1001BD4D 7532 je 1001BD81 >
А при переносе на другую тачку всё работает?
|
|
|