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

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

взять можно тут: ftp://i-card.etel.dn.ua/pub/win/win9x/internet/clients/irc/mirc561t.exe (или где-то рядом :-)

Инструменты:

1)SoftIce
2)hex-editor

Мне, как и многим (не)нормальным людям очень нравится сидеть в ИРКе.
Поскольку и людей там больше чем в чатах, можно качать файлы, музыку - да всё , что хотите. И конечно же самый любимый многими ИРК-клиент - мИРК! Вот я и достал версию 5.61 этого чуда и она мне понравилась, если бы не 30 дневный триал и напоминания о необходимости регистрации. Но так как лишних баксов у меня нет (даже ради такой класной проги), то мне пришлось ломать, тьфу...простите - исследовать.
Начнем.
!!!Хочу сказать, что эта статья предназначена для тех, кто уже умеет пользоваться айсом, хекс-редактором, дизассемблером и т.д. Если вы этого не умеете - у меня есть куча других туториалов, в которых это мало-мальски освещено!!!
Приступим...
Я открыл мирк и зашел в help->registration там ввел в поле имя "vallkor", а в поле Сер.Номер "123321", и нажал ОК, чтобы увидеть результат. Выскочило окно, до боли похожее на messageboxA. Но поставив в айсе бряк на bpx messageboxA я увидел, что выше вызова какой-то бред и что он нам мало поможет. Я зашел в айс в поставил следующие бряки:

bpx GetWindowTextA
bpx GetDlgItemTextA
"но ни одна из подруг от него не ушла"... фиг вам! не пашет! Ладно, не беда, поставим бряк:
bpx hmemcpy
этот бряк всегда работает :) и тут сработал. я вывалился где-то в сис. библиотеке, и попытался выйти из неё (F11,F12) и ни хрена у меня не получилось :(
пришлось трассировать всю прогу (довольно долго) при помощи F10, пока я не очутился в модуле mirc32, а очутился я тут:
call user32!SendDlgItemMessageA ;это считали имя ("vallkor")
push 004EE103
push 000003E7
push 0D
push 00000082
mov edx, [ebp+08]
push edx
call user32!SendDlgItemMessageA ;это считали наш номер ("123321")
push 004EE103 ;здесь записали наш РН
push 004EDD1C ;здесь записали наше имя
:0043B61A call 004A4BB8 ;(*)вызов процедуры проверки
test eax, eax ;и если результаты негативные
jz 0043B2C2 ;то прыгаем
Здесь явно, что процедура 004A4BB8 - проверка на неоходимость вывода сообщения о неправильном РН (т.к. перед ней сохранили наш РН и имя)
Тут можно поменять jz на jnz - чтобы все, кто хотел зарегестрироваться видели сообщение, о корректном РН!! Но проблему триала это не решит - поэтому смотри дальше!!!)
Итак, зайдем в эту процедуру (F8) и окажемся тут:
:004A4BB8 push ebp
mov ebp, esp
push ebx
push esi
push edi
mov esi, [ebp+0C]
mov ebx, [ebp+08]
push ebx
call 004D0E44 ; проверка количества символов в введенном нами имени
pop ecx
cmp eax, 05 ; если >=5 то ...
jae 004A4CB1 ;...прыгаем
xor eax,eax
jmp 000A42B1 ;иначе сюда
Если хотите, чтобы при регистрации можно было вводить имена длинной больше 5 символов, то нужно поменять cmp eax, 05 на cmp eax, 20 (тогда можно будет писать имена до 20 символов)!
Здесь была замечена особенность, что когда проверяется при старте РН из реестра, то корректность серийного номера проверяется ещё раз!
если протрассировать при старте, то можно найти такое место:
:004A4DDD jz 004A4E1C
ТАК ВОТ здесь и надо убрать проверку, т.е. заменить jz на jnz! Обязательно!

Дальше идет малоинтересный (в данном случае) код, дальше трассируйте программу (F10) пока не окажетесь здесь:
:004A4C22 pop esi
push 00502064 ;сюда сохранили наш РН (123321)
push 00501F64 ;а сюда - наше имя (vallkor)
call 004A4AD8 ;(*)вызов процедуры генерации и проверки РН
test eax,eax ;если не прошли - прыгаем!
jz 004A4C3D ;(+)
Итак, в процедуре обозначеной (*) выполняется генерация правильного РН и проверка его с нашим. Вот тут то она ему и сказала...
Для того, чтобы результаты проверки были положительными нужно заменить jz на jnz. Надеюсь вы умеете пользоваться хекс-редактором?
А если нет, вот вам готовый кряк:
------------------вырезать тут-----------
mIRC v5.61 crack by vallkor //PTDS

all comments vallkor@chat.ru
mirc32.exe
000A4234: 74 75
0003AC22: 84 85
000A42A6: 74 75
000A43DD: 74 75
000A41CD: 05 09
------------------вырезать тут-----------
ВсЁ! Можете кракать программу, запускать её, заходить в "Помощь" -> "Регистрация" , Вводить своё имя до 20 символов, любой РН и программа ваша!!!
Спасибо доброму дяде, тобиш мне :)

Исследовал и наваял туториал:
vallkor //PTDS (vallkor@chat.ru)
{Комманда PTDS нуждается в новых членах! Если вы считаете, что способны на многое и хотите поделиться своими знаниями и взамен получить новые пишите мне}

Проект Delphi World © Выпуск 2002 - 2004
Автор проекта: ___Nikolay