Delphi World - это проект, являющийся сборником статей и малодокументированных возможностей  по программированию в среде Delphi. Здесь вы найдёте работы по следующим категориям: delphi, delfi, borland, bds, дельфи, делфи, дэльфи, дэлфи, programming, example, программирование, исходные коды, code, исходники, source, sources, сорцы, сорсы, soft, programs, программы, and, how, delphiworld, базы данных, графика, игры, интернет, сети, компоненты, классы, мультимедиа, ос, железо, программа, интерфейс, рабочий стол, синтаксис, технологии, файловая система...
Исследование SnagIt32 v4.0.1

Оформил: DeeCo
Автор: http://www.cracklab.narod.ru

Как всегда :) попалась ко мне в руки эта программка, которая очень даже мудрым образом снимает скриншоты и текст любой сложности с экрана, Но и даже может сгенерировать по вашим манипуляциям целый видеофильм, типа "Как я пытался пьяным нажать на Пуск", и всё это сохранить в авишник или gif.
Короче программа бесспорно нужная и приятная сердцу.
Но (как всегда) возникло одно НО:
программа шароварная и постоянно выскакивают напоминания о незарегистрированности. Эти напоминания очень смахивают на обычные Окна. Для начала я попытался стандартными методами, но ничего не смог найти, тогда я вспомнил, что когда хочешь сделать окно видимым (enabled) то надо юзать АПИшную функцию EnableWindow.
Так вот, я ставлю в айсе бряк на эту самую функцию: bpx EnableWindow do "p ret" выхожу из айса и запускаю программу и почти сразу оказываюсь тут:
:0043FF94 FF15F8EF4700            call USER32.EnableWindow
:0043FF9A C745E401000000          mov [ebp-1C], 00000001
посмотрим немного выше в поисках какого-нибудь условного перехода, который уведёт нас далеко от текущей позиции (поближе к ret из функции) И я нашёл такой переход немного выше:
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0043FF4D(C)
|
:0043FF59 837DEC00                cmp dword ptr [ebp-14], 00000000 ;перед этим чего-то проверили
:0043FF5D 7508                    jne 0043FF67 ;если мы анрегистред - то прыгаем
:0043FF5F 83C8FF                  or eax, FFFFFFFF
:0043FF62 E9EC000000              jmp 00440053 ;иначе прыгаем на выход из функции и никакого напоминания не показываем

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0043FF5D(C)
|
:0043FF67 8BCE                    mov ecx, esi
:0043FF69 E81AFFFFFF              call 0043FE88
:0043FF6E 8BF8                    mov edi, eax
:0043FF70 897DE0                  mov dword ptr [ebp-20], edi
:0043FF73 E8480D0000              call 00440CC0
:0043FF78 57                      push edi
:0043FF79 E8E5070000              call 00440763
:0043FF7E 8365E400                and dword ptr [ebp-1C], 00000000
:0043FF82 85FF                    test edi, edi
:0043FF84 741B                    je 0043FFA1
:0043FF86 57                      push edi

* Reference To: USER32.IsWindowEnabled, Ord:0168h ;проверяют активно ли главное окно
                                  |
:0043FF87 FF15D0EF4700            Call dword ptr [0047EFD0]
:0043FF8D 85C0                    test eax, eax
:0043FF8F 7410                    je 0043FFA1 ;если нет то прыгаем....
:0043FF91 6A00                    push 00000000
:0043FF93 57                      push edi

* Reference To: USER32.EnableWindow, Ord:00B2h ;...иначе - делаем его неактивным
                                  |
:0043FF94 FF15F8EF4700            Call dword ptr [0047EFF8]
:0043FF9A C745E401000000          mov [ebp-1C], 00000001
Как оказалось напоминание показывается не функцией enablewindow, а чем-то другим, а enablewindow назначалась главному окну, которое должно было бы стать disabled, когда появится окно напоминания!!! Но нам повезло, и место проверки "А нужно ли напоминание" оказалось рядом, а именно по адресу:
:0043FF5D 7508                    jne 0043FF67
тут нужно, чтобы мы никогда не прыгали, т.е. поменяем команду jne 0043FF67 на jne 0043FF5F. Можете проверить - при старте никакого напоминания нет! Ура.
Теперь я могу не отвлекаться на то, чтобы каждый раз закрывать окно с напоминаниями!

Ну а для тех, у кого нифига не получилось, как всегда готовый крак:
-------вырезать тут-----------
SnagIt32 v [4.0.1] CRACK by vallkor//PTDS

it'll remove all nag screens!!! 
snagit32.exe
0003F35E: 08 00
------вырезать тут------------

ВсЁ!

исследовал и наваял туториал:
vallkor //PTDS (vallkor@chat.ru)

Проект Delphi World © Выпуск 2002 - 2024
Автор проекта: USU Software
Вы можете выкупить этот проект.