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

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


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

Исследование CreateInstall 2003.3.5

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

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

Автор: Usupov Vlad <vlad@shellov.net>

Вступление

Это моя первая статья. Вобщем надоел мне InnoSetup 3, а для 4 не нашёл русификации оболочки и Help-а, и остановился на CreateInstall мало весит всего - короче понравилась он мне. Скачал её запускаю и смотрю CreateInstall - trial ага будем ломать.

Инструменты

1. Win32dasm
2. Qview или Hview - кому как.

Приступим

В Help --> About нет нигде регистрации хмм... Ладно. Натравим на неё win32dasm (на createinstall.exe) захожу в String Data References и нахожу там CreateInstall trial и ниже CreateInstall Pro (щелкаемся на CreateInstall Pro два раза л.кнопкой мыши) и оказываемся тут:
* Possible StringData Ref from Data Obj ->"CreateInstall Pro"
                                   |
 :0040C40B BAC8964300              mov edx, 004396C8
 :0040C410 8D4C2410                lea ecx, dword ptr [esp+10]
 :0040C414 E8039D0100              call 0042611C
 Поднимемся на верх немного и увидим там вот это:
 
 * Referenced by a (U)nconditional or (C)onditional Jump at Address:
 |:0040C3EF(C)
 |
 :0040C3FF 813D5CD84300C9000000  cmp dword ptr [0043D85C],000000C9
 : сравниваем [0043D85C] c 000000C9 (это hex,а decimal-201)
 :0040C409 750E                  jne 0040C419
 
 * Possible StringData Ref from Data Obj ->"CreateInstall Pro"
                                   |
 :0040C40B BAC8964300              mov edx, 004396C8
 :0040C410 8D4C2410                lea ecx, dword ptr [esp+10]
 :0040C414 E8039D0100              call 0042611C
 Запомним этот адрес - 0040C3FF.
 Посмотрим откуда берется значения для 0043D85C поднимемся на самое
 начало и нажмем в win32dasm searcha FindText введем туда - 0043D85C
 и будем нажимать FindNext пока не окажемся тут:
 
 :0040C143 68A0714300              push 004371A0
 :0040C148 BA02020000              mov edx, 00000202
 :0040C14D 8B0D2CDD4300            mov ecx, dword ptr [0043DD2C]
 :0040C153 E800A50100              call 00426658
 
 * Possible StringData Ref from Data Obj ->"Type"
                                   |
 :0040C158 6870964300              push 00439670
 :0040C15D BA00020000              mov edx, 00000200
 :0040C162 8B0D2CDD4300            mov ecx, dword ptr [0043DD2C]
 :0040C168 E8EBA40100              call 00426658
 :0040C16D A35CD84300              mov dword ptr [0043D85C], eax
 :0040C172 C3                      ret
 Посмотрим выше, что же там? А там вот, что:
 
 * Referenced by a CALL at Addresses:
 |:0040C468   , :00423FED
 |
 :0040C100 6A01                    push 00000001
 :0040C102 A188EF4300              mov eax, dword ptr [0043EF88]
 :0040C107 BA4F010000              mov edx, 0000014F
 :0040C10C 8B4836                  mov ecx, dword ptr [eax+36]
 :0040C10F E844A50100              call 00426658
 
 * Possible StringData Ref from Data Obj ->"ci.ini": Файл из директории
 программы
                                   |
 :0040C114 6878964300              push 00439678
 :0040C119 BA47010000              mov edx, 00000147
 :0040C11E 8BC8                    mov ecx, eax
 :0040C120 A36C964300              mov dword ptr [0043966C], eax
 :0040C125 E82EA50100              call 00426658
 :0040C12A A16C964300              mov eax, dword ptr [0043966C]
 :0040C12F BA27020000              mov edx, 00000227
 :0040C134 8B4852                  mov ecx, dword ptr [eax+52]
 :0040C137 51                      push ecx
 :0040C138 8B0D2CDD4300            mov ecx, dword ptr [0043DD2C]
 :0040C13E E815A50100              call 00426658
 
 * Possible StringData Ref from Data Obj ->"CreateInstall":
 секция [CreateInstall]
                                   |
 :0040C143 68A0714300              push 004371A0
 :0040C148 BA02020000              mov edx, 00000202
 :0040C14D 8B0D2CDD4300            mov ecx, dword ptr [0043DD2C]
 :0040C153 E800A50100              call 00426658
 
 * Possible StringData Ref from Data Obj ->"Type": строка Type=0
                                   |
 :0040C158 6870964300              push 00439670
 :0040C15D BA00020000              mov edx, 00000200
 :0040C162 8B0D2CDD4300            mov ecx, dword ptr [0043DD2C]
 :0040C168 E8EBA40100              call 00426658
 :0040C16D A35CD84300              mov dword ptr [0043D85C], eax
 : заносим в eax то чему равно Type , а оно равно 0.Интересно
 :0040C172 C3                      ret
 Ухты так это же наш ini файл из директории с программой (ci.ini),а
 нука зайдем туда и смотрим, что Type = 0. Ага  вернемся по адресу -
 0040C3FF (помните его?) для этого нажмем Shift+F12 и в Code Offset(HEX)
 введем - 0040C3FF и нажмем OK.
 
 Теперь мы опять тут:
 
 * Referenced by a (U)nconditional or (C)onditional Jump at Address:
 |:0040C3EF(C)
 |
 :0040C3FF 813D5CD84300C9000000    cmp dword ptr [0043D85C], 000000C9:
 :0040C409 750E                    jne 0040C419
 
 * Possible StringData Ref from Data Obj ->"CreateInstall Pro"
                                   |
 :0040C40B BAC8964300              mov edx, 004396C8
 :0040C410 8D4C2410                lea ecx, dword ptr [esp+10]
 :0040C414 E8039D0100              call 0042611C
 Теперь откроем ini файл (ci.ini) и изменим Type=0 на Type=201 все
 закрываем файл и сохраняем изменения.
 Теперь при запуске появляется окно о вводе регистрационных данных.
 Заполняем их нажимаем OK ничего, никакого MessageBox. Ладно. Теперь
 в win32dasm заходим в DebugaLoadProcess и нажимаем Enter (Ничего
 вводить не надо) Нажимаем F8 (по тихоньку не торопитесь). При вывод
 окна нажимаем Close. Нажимаем F8 пока не окажемся тут:
 
 * Possible StringData Ref from Data Obj ->"љ"
                                   |
 :004242BE B9E8AB4300              mov ecx, 0043ABE8
 :004242C3 8B1538DD4300            mov edx, dword ptr [0043DD38]
 :004242C9 A310DD4300              mov dword ptr [0043DD10], eax
 :004242CE E85B1C0000              call 00425F2E
 :004242D3 A3B0DE4300              mov dword ptr [0043DEB0], eax
 :004242D8 891D40DD4300            mov dword ptr [0043DD40], ebx
 :004242DE E84D70FEFF              call 0040B330
 :004242E3 391D5CD84300            cmp dword ptr [0043D85C], ebx
 : сравниваем [0043D85C] с ebx;
 :004242E9 751C                    jne 00424307: если все OK то прыгаем;
 :004242EB E82080FEFF              call 0040C310
 :004242F0 85C0                    test eax, eax
 :004242F2 7513                    jne 00424307
 :004242F4 53                      push ebx
 :004242F5 6820C74000              push 0040C720
 :004242FA 53                      push ebx
 
 * Possible Reference to Dialog: DialogID_006A: Окно которое выводится
 и просить ввести регистрационные данные;
                                   |
 :004242FB 6A6A                    push 0000006A
 :004242FD 53                      push ebx
 :004242FE FFD6                    call esi
 :00424300 50                      push eax
 :00424301 FFD7                    call edi
 :00424303 85C0                    test eax, eax
 :00424305 7545                    je 0042434C
 Остановимся на адресе - 004242E9 снизу в win32dasm в строке состояния
 введем Offset (в данной версии он @Offset 000236E9)
 Теперь запускаем Qview нажимаем Alt+F6 находим наш файл и нажимаем
 Enter, нажимаем Alt+F3, нажимаем F5  и вводим - 000236E9.
 Заменим 751C на 741C.
 Теперь осталось только убрать идиотское окно,  которое появляется при
 запуске созданного инсталляционного приложения. Посмотрев файл
 (createinstall.exe) я не нашел там ничего больше интересного, значит
 надо искать где-то ещё OK.
 Заинтересовала меня директория (resource) зашел я туда и увидел
 (Inststd.dll). Решил натравить на неё Win32Dasm и увидел там интересный
 диалог:
+++++++++++++++++ DIALOG INFORMATION ++++++++++++++++++

Number of Dialogs = 1 (decimal)

Name: DialogID_0073, # of Controls=006, Caption:"Installation", ClassName:""
001 - ControlID:0001, Control Class:"BUTTON" Control Text:"Continue"
002 - ControlID:FFFF, Control Class:"STATIC" Control Text:""
003 - ControlID:FFFF, Control Class:"STATIC" Control Text:"When you purchase a fully registered version, you will no longer see this mess"
004 - ControlID:FFFF, Control Class:"STATIC" Control Text:"This setup was made with CreateInstall (unregistered Trial version)."
005 - ControlID:03EA, Control Class:"STATIC" Control Text:""
006 - ControlID:FFFF, Control Class:"STATIC" Control Text:"Internet: http://www.createinstall.com"


Так это ведь и есть то самое окно, которое при запуске нашего созданного приложения выскакивает. В Win32Dasm зайдем в Dialog References и видим наш диалог (DialogID_0073) щелкнем на него два раза (л.кнопкой мыши) и окажемся тут:
* Referenced by a CALL at Address:
 |:1000D0D1
 |
 :1000C240 A1A03C0110              mov eax, dword ptr [10013CA0]
 :1000C245 6A00                    push 00000000
 :1000C247 68F0C10010              push 1000C1F0
 :1000C24C 6A00                    push 00000000
 
 * Possible Reference to Dialog: DialogID_0073
                                   |
 :1000C24E 6A73                    push 00000073
 :1000C250 50                      push eax
 
 * Reference To: USER32.DialogBoxParamA, Ord:0093h
                                   |
 :1000C251 FF15DC010110            Call dword ptr [100101DC]
 :1000C257 C3                      ret
 
 Посмотрим окуда оно вызывается. Зайдём в 1000D0D1 и там видим такое:
 
 :1000D0A9 8B7B04                  mov edi, dword ptr [ebx+04]
 :1000D0AC 8B13                    mov edx, dword ptr [ebx]
 :1000D0AE 03FA                    add edi, edx
 :1000D0B0 8A4F14                  mov cl, byte ptr [edi+14]
 :1000D0B3 891D453D0110            mov dword ptr [10013D45], ebx
 :1000D0B9 880D443D0110            mov byte ptr [10013D44], cl
 :1000D0BF 8B17                    mov edx, dword ptr [edi]
 :1000D0C1 8915403D0110            mov dword ptr [10013D40], edx
 :1000D0C7 E834FDFFFF              call 1000CE00
 :1000D0CC 83F802                  cmp eax, 00000002
 :1000D0CF 7405                    je 1000D0D6: Если его изменить на 75,
 то никакого окна больше не появится.
 :1000D0D1 E86AF1FFFF              call 1000C240
 
 * Referenced by a (U)nconditional or (C)onditional Jump at Address:
 |:1000D0CF(C)
 |
 :1000D0D6 E835BAFFFF              call 10008B10
 
 * Possible StringData Ref from Data Obj ->"CloseSplash"
 Меняем по адресу (1000D0CF) 7405 на 7505 вот и всё.
Автор: Usupov Vlad

Обсуждение статьи: Исследование CreateInstall 2003.3.5 >>>


Комментарии к статье: Исследование CreateInstall 2003.3.5

Аноним 07.08.2004 02:33:54
Хорошая статья, но вот в чём проблема, табличкав трильной версии ещё выскакивает при деинсталяции, мне не удалось найти место где проходит её инициализация, может поможите?
---
Cергей 08.01.2005 03:02:20
Все сделал как надо все работает ,вот только проблемма:
Создаю проект и упаковываю файлы в инсталятор ,затем проверяю инсталятор и после запуска пишет ошибку WIN 32 что то мешает запустится инсталятору может какойто жучок от автора встраивается в инсталятор ?
---

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



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


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