Оригинальный DVD-ROM: eXeL@B DVD !
eXeL@B ВИДЕОКУРС !

ВИДЕОКУРС ВЗЛОМ
выпущен 12 ноября!


УЗНАТЬ БОЛЬШЕ >>
Домой | Статьи | RAR-cтатьи | FAQ | Форум | Скачать | Видеокурс
Новичку | Ссылки | Программирование | Интервью | Архив | Связь

Исследование программы Talker при помощи DeDe

Обсудить статью на форуме

Массу крэкерских инструментов, видеоуроков и статей вы сможете найти на видеокурсе от нашего сайта. Подробнее здесь.

Автор: -= ALEX =- <alex-xakep@mail.ru>

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

  • DeDe 3.10 (или другая версия)
  • Hiew
  • Restorator 2.51
  • Немного мозгов :-)

    Вступление. Программа "Talker" представляет собой что-то типа "компьютерного собеседника". Вы можете "поговорить с компьютером". Как утверждает автор, это самая интересная и скачиваемая программа, поэтому она вызвала у меня интерес. Скачать свежую версию можно здесь http://sharos.com.ru. В статье рассматривалась версия 1.75.

    Итак приступим. Для начала обследуем программу. При запуске программа требует ввести имя и ключ (хотя считается FREEWARE), предварительно получив его с сайта разработчика. Тем самым автор решил подзаработать в инете :-(. Кому захочется где-то лазить тратя время и деньги. Сначала обследуем программу на предмет запакованности. Откроем ее с помощью Restorator’а. Видим все секции ресурсов целы (т.е. их можно поглядеть), это говорить о том, что автор очень ленивый и не захотел запаковать (это и к лучшему!). При дальнейшем осмотре ресурсов видим секцию RCDATA. Это говорить о том, что эта программа написана на Delphi (или на CBuilder’e), именно поэтому я использовал утилиту DeDe 3.10 (в народе «декомпилятор Delphi»). Забыл сказать, для начала посмотрим в директорию программы и находим там такой файл Talk.ini, заходим туда и видим такие строчки «0» и «unregistered». Могу сразу предположить, что здесь хранятся как раз ключ и имя, на которого зарегистрирована программа. Исходя из этого запускаем DeDe, указываем нужный файл и нажимаем Process. Далее нажимаем на вкладку Forms (здесь показаны все формы, которые используются), и видим такое интересное название TMainForm, что говорит нам о том, что это и есть главное окно. Далее заходим на вкладку Procedures и выбираем там TMainForm. Справа видим события этой формы. Выберем FormCreate, щелкнем два разка, открывается окно, с кодом программы. Ищем там упоминание о файле talk.ini. Нашли ? Нет, здесь нет упоминания об этом файле. Закрываем окно и выбираем в списке событий FormShow. Видим такой кусок кода:

* Reference to field TListBox.OFFS_0218
|
00479679 8B8018020000 mov eax, [eax+$0218]

* Possible String Reference to: 'talk.ini'  <- Идет упоминание о файле
|
0047967F BAD4974700 mov edx, $004797D4
00479684 8B08 mov ecx, [eax]
00479686 FF5168 call dword ptr [ecx+$68]
00479689 33C0 xor eax, eax
0047968B 5A pop edx
0047968C 59 pop ecx
0047968D 59 pop ecx
0047968E 648910 mov fs:[eax], edx
00479691 EB29 jmp 004796BC

****** EXCEPT
|
00479693 E9A4A3F8FF jmp 00403A3C
00479698 6A30 push $30

* Possible String Reference to: 'Внимание!' <- Далее проверка на наличие этого файла
|
0047969A 68E0974700 push $004797E0

* Possible String Reference to: 'Невозможно загрузить файл talk.ini!
| Убедитесь в его наличии!'
|
0047969F 68EC974700 push $004797EC
004796A4 6A00 push $00

* Reference to: user32.MessageBoxA()
|
004796A6 E819D9F8FF call 00406FC4

* Reference to TApplication instance
|
004796AB A108BA4700 mov eax, dword ptr [$0047BA08]
004796B0 8B00 mov eax, [eax]

* Reference to : TApplication._PROC_004584B8()
|
004796B2 E801EEFDFF call 004584B8

* Reference to: System.Proc_00403DA4
|
004796B7 E8E8A6F8FF call 00403DA4

****** END
|
004796BC 33C0 xor eax, eax
004796BE 55 push ebp

* Possible String Reference to: 'й°ўшяЎш№G'
|
004796BF 6887974700 push $00479787

***** TRY
|
004796C4 64FF30 push dword ptr fs:[eax]
004796C7 648920 mov fs:[eax], esp
004796CA 8D4DF8 lea ecx, [ebp-$08]

* Reference to MainForm
|
004796CD 8B45FC mov eax, [ebp-$04]

* Reference to control TMainForm.IniBox : TListBox
|
004796D0 8B8024030000 mov eax, [eax+$0324]

* Reference to field TListBox.OFFS_0218
|
004796D6 8B8018020000 mov eax, [eax+$0218]
004796DC 33D2 xor edx, edx
004796DE 8B18 mov ebx, [eax]
004796E0 FF530C call dword ptr [ebx+$0C]
004796E3 8B45F8 mov eax, [ebp-$08]

* Possible String Reference to: '761930' <- далее идет процесс проверки
|
004796E6 BA34984700 mov edx, $00479834

* Reference to: System.Proc_00404748
|
004796EB E858B0F8FF call 00404748
004796F0 0F8487000000 jz 0047977D <- то самое место, куда мы попадем, если все OK !!! 
004796F6 8D4DF4 lea ecx, [ebp-$0C]

* Reference to MainForm
|
004796F9 8B45FC mov eax, [ebp-$04]

* Reference to control TMainForm.IniBox : TListBox
|
004796FC 8B8024030000 mov eax, [eax+$0324]

* Reference to field TListBox.OFFS_0218
|
00479702 8B8018020000 mov eax, [eax+$0218]
00479708 33D2 xor edx, edx
0047970A 8B18 mov ebx, [eax]
0047970C FF530C call dword ptr [ebx+$0C]
0047970F 8B45F4 mov eax, [ebp-$0C]

* Possible String Reference to: '301796'
|
00479712 BA44984700 mov edx, $00479844

* Reference to: System.Proc_00404748
|
00479717 E82CB0F8FF call 00404748
0047971C 745F jz 0047977D <- то самое место, куда мы попадем, если все OK !!!
0047971E 8D4DF0 lea ecx, [ebp-$10]

* Reference to MainForm
|
00479721 8B45FC mov eax, [ebp-$04]

* Reference to control TMainForm.IniBox : TListBox
|
00479724 8B8024030000 mov eax, [eax+$0324]

* Reference to field TListBox.OFFS_0218
|
0047972A 8B8018020000 mov eax, [eax+$0218]
00479730 33D2 xor edx, edx
00479732 8B18 mov ebx, [eax]
00479734 FF530C call dword ptr [ebx+$0C]
00479737 8B45F0 mov eax, [ebp-$10]

* Possible String Reference to: '190376'
|
0047973A BA54984700 mov edx, $00479854

* Reference to: System.Proc_00404748
|
0047973F E804B0F8FF call 00404748
00479744 7437 jz 0047977D <- то самое место, куда мы попадем, если все OK !!!
00479746 8D4DEC lea ecx, [ebp-$14]

* Reference to MainForm
|
00479749 8B45FC mov eax, [ebp-$04]

* Reference to control TMainForm.IniBox : TListBox
|
0047974C 8B8024030000 mov eax, [eax+$0324]

* Reference to field TListBox.OFFS_0218
|
00479752 8B8018020000 mov eax, [eax+$0218]
00479758 33D2 xor edx, edx
0047975A 8B18 mov ebx, [eax]
0047975C FF530C call dword ptr [ebx+$0C]
0047975F 8B45EC mov eax, [ebp-$14]

* Possible String Reference to: '306791'
|
00479762 BA64984700 mov edx, $00479864

* Reference to: System.Proc_00404748
|
00479767 E8DCAFF8FF call 00404748
0047976C 740F jz 0047977D <- то самое место, куда мы попадем, если все OK !!!

    Итак имеем: 4 условных перехода на адрес 0047977D. Это говорит нам о том, что  идет последовательный процесс проверки кода и если все OK попадаем по адресу 0047977D. Нам необходимо только поменять первый условный переход по адресу 004796F0 на jne 0047977D. Для этого открываем HIEW -> F4 -> F3 -> F5 : .004796F0 -> F3 -> F2 и меняем je 0047977D на jne 0047977D. Выходим, запускаем программу. Ура!!! Работает. Теперь можно пользоваться этой бестолковой программой :-). Если хотите, чтобы программа была зарегистрирована на вас, откройте файл talk.ini и замените строчку unregistered на ваше имя.

Разрешается копировать материал только с указанием источника и автора.

Copyright (c) -= ALEX =- . All rights reserved.



Обсуждение статьи: Исследование программы Talker при помощи DeDe >>>


Комментарии к статье: Исследование программы Talker при помощи DeDe

hitman2 17.09.2005 01:18:09
Немного мозгов :-)
* Possible String Reference to: \’190376\’
* Possible String Reference to: \’761930\’
это и есть коды,а имя любое.
Проверил на последней версии коды теже.
---

Материалы находятся на сайте https://exelab.ru



Оригинальный DVD-ROM: eXeL@B DVD !


Вы находитесь на EXELAB.rU
Проект ReactOS