_ __________ _ ______ __________ _ __________ __/ _______________ _ __/ ___ \/ ________ _ ---------. _ ___ _/__/ _____) __________ \ / \zACK | / ___/_________ __/ _______/_______\/ \ | / / / /_____ / \___ / .......... ........... /______ / __ _ /_________/ /___.::::::::::: ::::::::::::: /_________/ /_________/ __::::::_____ :::' | ::::::...... .:::' : · T · E · A · M · 5 · 3 · `:::::::::::: ..:::::::: | ::: ::: `--------------------------->> >> >> .:::::: ::: .:::::: ::: TUTORiALS.PACK.NUMBER.ELEVEN ::::::: ::: ::::::: ::: ::::::::::::: ::::::::::::: `::::::::::' `::::::::::' Visagesoft Visual Protect Автор..: anorganix of ARTeam, Май 2006 Перевод: nightcat of TEAM-53, Май 2006 1. Вступление Visual Protect - это софтверная защита + инструмент аля "менеджер лицензий". С помощью этого протектора вы можете защитить любое ваше Windows 95/98/NT 32-bit приложение. Официальные данные: *Visual Protect virtual packaging Visual Protect Wizard allows you to create a graphical, electronic version of your software packaging. You can easily add graphics, messaging, and Web site links providing the level of detail prospective customers require. *Applying Visual Protect is easy Once you have completed a software product, you can create a Protection in less than 30 seconds. The Visual Protect Wizard will lead you through a series of steps to include bitmaps, trial parameters, company information and Web site links to automatically create a Protection without changing your source code. Once created, your Protection does not require any modifications for on-line distribution. *Controlled distribution in any format, anywhere Visual Protect allows you to increase your Web sales and more. You can electronically distribute Protect-packaged software as trial programs, limited usage offerings and beta tests. Trial periods can be specified to expire on a specific date, after number of uses, or after the expiration of a time period. Create storefronts and catalogs through the Internet, DVD, CD-ROM or any other digital medium. - Больше информации вы найдёте на: http://www.visagesoft.com/products/vp/index.php 2. Что нам понадобится " OllyDbg " PEiD 0.94 " HexWorkshop (любой hex-редактор) ...ну и цель " Visual Protect http://www.visagesoft.com/products/vp/downloads.php 3. Получаем рабочую лицензию для VisualProtect Открываем .exe в PEiD, заметьте, что программа защищена сама собой, PEiD -> Visual Protect " Visage, а это значит, что сами разработчики в свой софт верят... не пойму только почему. =) Если вы запустите программу, то увидите, что срок работы ограничен 15-ю днями + некоторые опции отключены. Для тех, кто хочет покопаться в защите чуть поглубже я расскажу, как найти OEP, хотя нам это и не понадобиться. Запустите Olly и мы тут: 006BCF90 > 55 PUSH EBP <-- тут 006BCF91 8BEC MOV EBP,ESP 006BCF93 51 PUSH ECX 006BCF94 53 PUSH EBX 006BCF95 56 PUSH ESI 006BCF96 57 PUSH EDI 006BCF97 C705 B03E6C00 00000000 MOV DWORD PTR DS:[6C3EB0],0 006BCFA1 68 48206C00 PUSH VisualPr.006C2048 Нажмите Alt+E (Executable Modules) и сделайте двойной клик по "VP.dll". Теперь правый клик и выберите "Search" -> "All referenced text strings". Нажмите Ctrl+L и в окошке поиска введите "finalizing"(без кавычек), уберите галочку с опции "Case sensitive" и поставьте её в "Entire Scope". В результате Будет два места, где встречается эта строка. Два раза нажмём по первой. Попадём сюда: 00835FD1 8B8D 58FAFFFF MOV ECX,DWORD PTR SS:[EBP-5A8] 00835FD7 8D85 5CFAFFFF LEA EAX,DWORD PTR SS:[EBP-5A4] 00835FDD BA 946B8300 MOV EDX,VP.00836B94 ; ASCII "Finalizing 0x" <--вот сюда 00835FE2 E8 B5E8F5FF CALL VP.0079489C 00835FE7 8B85 5CFAFFFF MOV EAX,DWORD PTR SS:[EBP-5A4] 00835FED E8 46BCFFFF CALL VP.00831C38 00835FF2 - FF65 FC JMP DWORD PTR SS:[EBP-4] 00835FF5 6A 00 PUSH 0 Ну что же, поставим брейкпоинт на 835FDD и нажмём F9. Когда появляется NAG, нажмите кнопку "Try" и вы окажетесь в Olly. Как вы можете видеть, в ECX содержится наша OEP. Нажмите F8 несколько раз, чтобы пройти JMP на 835FF2 и приземлитесь на OEP (типичное Delphi-приложение): 0066B508 55 PUSH EBP <--вот тут 0066B509 8BEC MOV EBP,ESP 0066B50B 83C4 F0 ADD ESP,-10 0066B50E B8 D0AC6600 MOV EAX,VisualPr.0066ACD0 0066B513 E8 E8BCD9FF CALL VisualPr.00407200 0066B518 A1 34D86700 MOV EAX,DWORD PTR DS:[67D834] 0066B51D 8B00 MOV EAX,DWORD PTR DS:[EAX] 0066B51F E8 301EE2FF CALL VisualPr.0048D354 0066B524 A1 34D86700 MOV EAX,DWORD PTR DS:[67D834] 0066B529 8B00 MOV EAX,DWORD PTR DS:[EAX] 0066B52B BA B0B56600 MOV EDX,VisualPr.0066B5B0 Но, всё равно, "full dump" в LordPE - более, чем достаточно. Теперь нам нужно найти Ключ шифрования. После сдампливания откройте файл в HexWorkshop и поищите строку "visualprotect.vpl", это имя файла лицензии. 0090 CF2B 007B 3736 3539 3644 3243 2D46 ...+.{76596D2C-F 4445 372D 3434 3345 2D42 3531 442D 3137 DE7-443E-B51D-17 3034 3432 3839 4442 3538 7D00 0000 0000 044289DB58}..... 0000 0000 0000 0000 0000 0000 0000 0000 ................ 0000 0000 0000 7670 3130 3000 0000 0000 ......vp100..... 0000 0000 0000 0000 0000 0000 0000 0000 ................ 0000 0000 0000 0000 0000 0000 0000 0000 ................ 0000 0000 0000 0000 0000 0000 0000 0000 ................ 0000 0000 0000 0076 6973 7561 6C70 726F .......visualpro 7465 6374 2E76 706C 0000 0000 0000 0000 tect.vpl........ Наш ключ находится прямо над именем файла, это - "vp100". Теперь у нас есть всё, что нужно, чтобы сгенерировать лицензию. Запустите Visual Protect и сделайте так: выберите "Create a new project" -> Next -> Expiration date = "01.01.2050" -> Encryption Key = "vp100" -> Next -> Next. На закладке "Protection" выберите "32-Bit executable(s)" и добавьте любой файл в список (екзешник не должен быть упакован; так же переименуйте файл в "VisualProtect.exe"). Жмём "Apply" и сохраняем проект, как "VisualProtect.vpj". Теперь вы можете закрыть программу. Нам не нужен только что упакованный .exe, нам интересен "VisualProtect.vpl". Откройте файл справки VP и нажмите на "Licensing " Command Line". Вот какие параметры нас интересуют: Action a "G" / "Generate" Project p Project file name Register r Customer that your product is registered to Expires x Expiration date of registered license (MM.DD.YYYY) Итак, запустите блокнот и напечатайте это:: GLCmd.exe -a g -p visualprotect -r anorganix -x 01.01.2050 ^ ^ ^ ^ ^ ^ ^ ^ ^ | | | | | | | | | | | | | | | | | | | | | | | | | | +- дата окончания | | | | | | | | | | | | | | | +- срок окончания | | | | | | | | | | | | | +- имя пользователя | | | | | | | | | | | +- регистрация | | | | | | | | | +- имя проекта | | | | | | | +- проект | | | | | +- генерация | | | +- действие | +- Command Line Program Сохраните файл, как "Generate.bat" в папке Visual Protect и запустите. Новая лицензия будет создана там же, куда вы сохранили проект (называться будет VisualProtect.vpl). Теперь замените "VisualProtect.vpl" (из папки VP) на новый файл и запустите программу. УРА! NAG исчез, ограничений нет, программа зарегана. 4. Регистрация программ защищённых VP Всего на всего повторите все шаги меняя лишь имя проекта на необходимое вам. 5. Loader для VP и программ им защищённых После некоторых исследований VP я нашёл одно место в любой программе, защищённой этим протектором, где заменой всего лишь одной инструкции можно полностью зарегистрировать программу. Загрузите .exe в Olly, поставьте брейкпоинт на GetSystemDirectoryA API. Нажмите F9, когда Olly прервётся нажмите Ctrl+F9. Затем F8 и вы снова окажетесь в коде VP. Проскрольте вниз, пока не увидите что-то такое: 005553DC A1 FCBA5500 MOV EAX,DWORD PTR DS:[55BAFC] 005553E1 E8 3ED2FFFF CALL VP.00552624 005553E6 833D F8BA5500 FF CMP DWORD PTR DS:[55BAF8],-1 005553ED 0F84 BF000000 JE VP.005554B2 005553F3 33C9 XOR ECX,ECX 005553F5 8B15 FCBA5500 MOV EDX,DWORD PTR DS:[55BAFC] 005553FB A1 08BB5500 MOV EAX,DWORD PTR DS:[55BB08] 00555400 E8 7FB9FEFF CALL VP.00540D84 00555405 8BD8 MOV EBX,EAX 00555407 33C9 XOR ECX,ECX 00555409 8B15 00BB5500 MOV EDX,DWORD PTR DS:[55BB00] 0055540F A1 08BB5500 MOV EAX,DWORD PTR DS:[55BB08] Просто занопьте JE на 5553ED и всё. Я рекомендую использовать loader для этих целей, т.к. это самый "чистый" способ. 6. Greetings Thank you Pilli for your support! You are the best! [ ARTeam ] [ EXETools ] [ all the RO scene ] [ bLaCk-eye ] [ vybez_mR ] P.S. Замечание от TAOS В bat-файле для генерации лицензии (GLCmd.exe) используются два неверных параметра: вместо "-a q" должно быть "-a g" а дата окончания "01.01.2050" должна быть записана так "01/01/2050". Это написано в хелпе. taos