NAG

eXeL@B DVD

Материал из Справочник исследователя программ

Перейти к: навигация, поиск

NAG screen (рус. "окно-нытик") вылезает при старте программы или периодически, просит зарегистрировать программу, то есть заплатить деньги.

Программа работает нормально и без ограничений, но выводит раздражающее сообщение о том, что она не зарегистрирована. Как можно убрать это сообщение?

Это сообщение скорее всего выводится какой-либо процедурой или функцией. Надо найти вызов этой процедуры или функции и занопить его.

Вся проблема сводится к тому, как найти этот вызов. Если раздражающее окно - это MessageBox, то ставьте брейкпоинт на функцию MessageBoxA, и когда он сработает жмите F12, выше увидете вызов функции MessageBoxA. Запомните адрес этого вызова. После чего занопьте его и четыре команды push перед ним. Если вызываемое окно - не messagebox, то будет труднее. Можно попробовать поискать с помощью дизассемблера обращение к выводимой в раздражающем сообщении строке и рядом будет вызов процедуры, которая выведет это сообщение, либо обращение будет происходить уже внутри этой процедуры. В этом случае найдите начало процедуры/функции и поставьте туда команду ret (байт C3h) - возврат из функции. Т.е. как только эта функции будет вызываться для вывода сообщения, будет просто происходить мгновенный возврат и ничего выводиться не будет. Только в этом случае не забудьте восстановить стек! Т.е. если параметры для передачи функции помещались в стек, то перед тем, как писать команду ret, необходимо вынуть эти параметры из стека, точнее освободить стек (можно просто сдвинуть стек на нужное число. Например если функции передавалось два 4-х байтных параметра, то для того что-бы освободить стек от этих параметров, указатель вершины стека надо увеличить на 4x2=8. Т.е. написать add esp,8 , а уже потом ret). Если вам что-то не понятно, то это придет с опытом. Я лишь дал "наводку". Тут нет универсального способа, только практика вам поможет.

Источник — «https://exelab.ru/faq/NAG»