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

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

Как-то раз я листал рассылку новых шароварных прог и наткнулся на это
творение, которое обещало произносить любые тексты на русском и английском.
В самом продукте я очень быстро разочаровался, так как оказалось, что нужно
ещё тянуть из инета (с www.microsoft.com) кучу всяких файлов (сама прога в
архиве 700 Кб, а докачать ещё потребовалось 7 Мб). Но поисследовать эту
гадость я не отказался, итак...
... я попытался дизассемблировать WDasm'om, но тот матюгнулся, тогда я
посмотрел на секции программы и обнаружил там секцию .aspack, что значит,
что прога запакована. Версия ASPack'a, как оказалось, 2.11
Мои действия:
1) Распаковал файл VoiceMan.exe с помощью Deasp'a.
2) Исправил с помощью ProcDump'a у всех секций распакованного exe'шника
"Section Characteristic" c C0000040 на E0000020
(т.е. пометил их как "executable" - "исполняемые", мне было просто лень
смотреть какие секции с кодом, формат PE такую наглость допускает).
3) Теперь дизассемблирую прогу WDAsm'om и вижу, что программа распаковалась
отлично. Можно приступать к исследованию.
4) Вся незарегистрированность программы состоит в том, что она перед каждым
своим действием говорит "Пожалуйста, зарегестрируйте программу, это
бесплатно, нужно просто прислать 300 баксов дяде Васе" и т.д. и т.п.
Чтобы стать зарегистрированной, нужно послать автору файл "voiceman.inf"
длинной 235 байт, в котором в числовом виде записана какая-то инфа(???)
Т.Е. грамотный человек мог закинуть туда пароли от инета или ещё чего-нить,
В ответ присылают файл "reg.key", который мне так и не удалось подделать
(там была целая куча xor'ов с 123456 и 987654, в которых я запутался по самые
уши :( Может не хватило ума, а может пива :)
Я подумал... а что если убрать все записи в exe'шнике, типа "Пожалуйста
зарегистрируйте прогу...". Тогда ведь нечего будет читать (вместо "Пожалуйста,
зарегистрируйте прогу" будет "") и программка просто будет вести себя как
зарегистрированная, правда с некоторым запозданием, ведь MicrosoftAgent'у
нужно сообразить, что прога передала пустую строку для прочтения :)...

"Я увидел это всё и стал подругам звонить"

Тогда я взял QView и стал искать строку "Пожалуйста зарегистрируйте..."
Нашёл её в 8(!т.е. автор даже не потрудился создать единую функцию для
напоминания или хотя бы сохранить строку только в одном месте) местах и
затёр, т.е. вместо всей надписи поставил пробелы. Теперь закрыл QView и
запустил прогу и... О чудо, программа больше не просит себя зарегистрировать,
правда перед каждой операцией наблюдается небольшая пауза (пока джин не
поймёт, что читать нечего). Но это особо не мешает.

6) Запаковал обратно exe'шник тем же АСпаком (в запакованом виде прога
занимает 450 кб, а распакованная больше метра).
Да, кстати, когда я запаковывал назад кракнутую прогу, то увидел, что иконки
после упаковки не видно. Я попытался убрать в АСПаке св-во "Паковать ресурсы"
и иконка стала видна, но тогда прога стала занимать на 350 кб больше, да плюс
ко всему старая секция .aspack осталась, т.е. их теперь было уже две, как я
ни пппытался убрать одну из них - нифига не вышло, может кто пояснит, как
это сделать, чтобы без фатал еррора???

ЗЫ: до того, как я нашел на протулзах DEASP, я распаковал прогу вручную
таким образом: запустил её symbolloader'om, зашёл в первый же call, нашёл
прыжок на реальную точку входа после распаковки (OEP=BE57C). Затем зациклил
прогу на последней комнде перед прыжком на OEP:
a eip
jmp eip
вышел из айса, ProcDump'om сдампил процес на диск и убил его тем же
прокдампом. Открыл в ProcDump'e PEeditor и в сдампленой проге поменял OEP на
найденный (ImageBase+BE57C=004BE57C). ВСЁ!
Но согласитесь, что деасп удобнее - 5 секунд и прога распакована.

Крака тут быть не может, потому как старые секции .aspack и .data остались,
а значит размер вновь упакованной проги больше, чем оригинала :( Да, даже
если бы я и убрал эти секции, то крак мог бы занимать больше места чем сама
программа :)

vallkor //PTDS
e-mail: vallkor@chat.ru
page: http://vallkor.chat.ru

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