|
|
| Посл.отвђт | Сообщенiе |
|
|
Дата: Сен 22, 2004 13:49:35 Немалоизвестная компания Acronis выпускает свои продукты пакуя их в собственные инсталляторы, написанные, насколько удалось разобрать, на VC++ 7.0. Элементы управления нестандартны, ввиде рисунков, т.о. на привычные WM_ENABLE они клали... Напоминаю, что кнопочка Далее разблокируется при правильном вводе серийника, вместе с этим блокируются поля ввода частей серийника. Процедура разблокировки приблизительно такая: MOV EAX,DWORD PTR DS:[ECX+5C] TEST AL,2 JNZ SHORT partitio.00415DED OR EAX,2 MOV DWORD PTR DS:[ECX+5C],EAX MOV ECX,DWORD PTR DS:[ECX+C] TEST ECX,ECX JE SHORT partitio.00415DED PUSH 1 ; Параметр 1 - вкл, 0 - откл. PUSH ECX ; Хэндл окна CALL DWORD PTR DS:[<&USER32.EnableWindow> RETN Найти процедуру сравнения (если таковая вобще есть) правильного серийника с введённым мне не удалось. ROR писали кейгены к таким инсталляторам, но лаг в том что мне в руки попался скачанный с сайта акрониса 50меговый дистрибутив - там видать дофига всякой всячины, серийника нет, эти самые кейгены не берут. Мож кто знает, может ли здесь быть в принципе процедура сравнения, если да то где её искать, а если нет, то хотя бы как кнопку далее в чувства привести (видимо там не только WM_ENABLE, но и плюс смена картинки и включение обрабочиков событий этой кнопки). Заранее спсб |
|
|
Дата: Сен 22, 2004 14:09:11 Процедура сравнения наверное запускаеться после того как будет введена последняя часть серийника . Т.е. при обработке сообщений (типа WM_KEY*,WM_CHAR может ?) смотрит если пришло от последнего поля и все уже заполнены , то можно начинать сравнение . Если количество символов в полях ввода серийника не очень маленькое , то попробуй в памяти поискать введённый тобой номер , а потом от того места уже плясать . А в ресурсах нет этих диалогов ? |
|
|
Дата: Сен 22, 2004 14:13:47 Ресурсы тоже смотрел - там только версия, иконка и манифест (24)... Даже если я водил последний сегмент серийника (всего сегментов - 5, по 5 символов в каждом), сообщений типа WM_GETTEXT не пролетало вовсе (Смотрел через Spy++) |
|
|
Дата: Сен 22, 2004 14:40:21 Можна попробывать в отладчике запустить трассировку (с логом) перед тем моментом , как введёшь последний символ в последнем поле . |
|
|
Дата: Сен 22, 2004 14:48:50 Как это можно сделать (например в ольке) |
|
|
Дата: Сен 22, 2004 15:04:53 · Поправил: bogrus Запускаешь прогу , набираешь номера серийника (но номера лучше выбери такие , чтобы их hex-представление встречалось в памяти очень редко) , но последний символ не ставь . Потом в ольке attach к проге , меню View\Run Trace\ , можно ещё правым кликом сделать Log to file , а потом в Debug\Trace Over для начала (можно ещё Trace Into) . Вводишь последний символ в проге и смотришь лог . Можешь без аттача , сразу загрузить прогу , сделать Run (F9) , а Trace Over потом , когда будешь готов . А и дополнительно , почаще пробуй нажать Alt+M , потом Ctrl+B и введи символа (или части) своего серийника , олька всю память перероет , но найдёт если есть . |
|
|
Дата: Сен 22, 2004 15:35:06 · Поправил: nDSm Чего-то я туплю по-страшному... Либо Into, либо Over, в зависимости от цели... Потом, я заметил, что он проверяет после каждого нажатия , не является ли введённый символ последним в последнем поле и плюс ещё вроде-бы в EAX появляются введённые мной символы в ASCII, после этого начинается какая-то процедура, отдалённо напоминающая сравнение, только в регистрах ничего не появляется... (( Может я чего-то не допонял... И ещё я не понял, чем отличается Trace Into/Over от Step Into/Over ? Вот блин, чего-то я вобще не втыкаю как эта трассировка работает... в статусе написано Tracing, и ничего при этом не меняется, инсталлятор тоже не реагирует... хм |
|
|
Дата: Сен 22, 2004 16:02:37 · Поправил: bogrus Либо Into, либо Over, в зависимости от цели... Into - проход по каждой команде любого модуля (т.е. мы видим все подробности) . Over это проход по всем командам кроме "call" , т.е. в процедуры и другие модули мы так сказать не заходим (есс-но они выполняються , но без нашего участия) . Trace Into выполняеться долго и лог большой , но там будет абсолютно всё (ну кроме кода ядра) . Trace Over побыстрее , лог поменьше и нужно начинать с него , чтобы пока понять общий принцип и структуру работы проги . чем отличается Trace Into/Over от Step Into/Over ? Первое выполняеться само и ведёт лог в окно\файл , второе лог не ведёт а выполнением мы упраляем сами (F7 - пошагово особенно в интересных местах , F8 обычно жму на call-ах , чтобы их пропустить когда и так понятно) Есть ещё Animate Into(Over) , это тоже если нажать F7(F8) и держать . С ним обычно нужна пауза (F12) . Ещё чаще жми правой кнопкой , там меню везде разное бывает . Короче фич хватает , сам ещё не все опробывал . в статусе написано Tracing, и ничего при этом не меняется, инсталлятор тоже не реагирует... хм Там окно трассировки (Run Trace) не обновляеться (будет очень медленно) , нужно самому его обновлять . Может быть ещё прога ждёт твоей реакции . |
|
|
Дата: Сен 22, 2004 16:23:38 · Поправил: bogrus Может ещё пригодиться View\Windows (или кнопка "W" на тулбаре) , там можно бряк на сообщения к нужному окну поставить или вообще на процедуру окна |
|
|
Дата: Сен 22, 2004 19:32:13 bogrus У меня не получалось приаттачиться к InstallSheld'овским прогаммам. может есть опыт как это сделать? |
|
|
Дата: Сен 22, 2004 20:19:37 nice Ты имеешь ввиду к инсталлеру во время инсталляции ? Х.з. эти шилды разные вроде , есть вообще не PE , а NE файлы , которые крутятся под NTVDM . Только что попробывал на одном PE , действительно какая-то ерунда , при инсталяции создаёться 3-4 процесса , в каждом по столько же потоков :( |
|
|
Дата: Сен 22, 2004 20:46:04 Хотя нет , всё нормально получилось . Аттачиться надо к MSIEXEC (там и два) , к тому которое имеет окно . Потом на активном потоке (main и Active в олли) правый клик - Open in CPU , и попадаем в цикл обрабоки сообщений окна инсталлера . |
|
|
Дата: Сен 23, 2004 13:56:27 Может быть ещё прога ждёт твоей реакции . В предыдущем сообщении я говорил: инсталлятор тоже не реагирует можно бряк на сообщения к нужному окну поставить или вообще на процедуру окна - вот это я попробую, только иногда, если ты говоришь про команду "Message breakpoint on ClassProc", иногда сбой вылетает... Можно, наверняк, попробовать дизассемблировать ROR'овский кейген для другого подобного инсталлятора, и поискать в нужном мне инсталляторе подобный код, как ты считаешь? |
|
|
Дата: Сен 23, 2004 14:59:16 Можно конечно (правда не этично) , так ты без проблем увидишь алгоритм генерации серийника , но ты же сам говоришь что не подходит , значит акронис уже сменили алгоритм , причём может кардинально и искать совпадения можно долго , а всё-равно прийдёться вникать в новый алгоритм если ты хочешь закейгенить , но попробывать стоит . Акрониса у неня нет , нашёл какой-то кейген Paradox-а , распаковал , смотрю в алгоритме есть много циклов , есть ксоры с константами (типа XOR EAX, 9908B0DF) , может и найдёшь если константы не изменялись . Можно искать и заветный jcc , но он может оказаться там не один , что проще х.з. |
|
|
Дата: Сен 23, 2004 19:10:28 |
|
Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.104 |