Посл.ответ |
Сообщение |
Ранг: 0.3 (гость) Активность: 0=0 Статус: Участник
|
Создано: 04 августа 2006 14:07 · Личное сообщение · #1
Здравствуйте крутые крэкеры!  Поневоле присоеденяюсь к вашим рядам, так как проект с меня уже трясут, а платить разработчикам ещё неохота
в общем есть такая VC++ DLL, чтобы она правильно работала (а не только первые 30 минут) в ней задекларена функция
long Deactivate30mintimer(char*)
куда надо передать серийник. Вот её тело в dasme:
Exported fn(): _Deactivate30MinTimer@4 - Crd:0024h
:10020E2C push ebp
:10020E2D mov ebp, esp
:10020E2F sub esp, 00000008
:10020E32 lea ecx, dword ptr [ebp-04]
:10020E35 call 100017B0
:10020E3A mov eax, dword ptr [ebp+08]
:10020E3D push eax
:10020E3E lea ecx, dword ptr [ebp-04]
:10020E41 call 1002E810
:10020E46 mov [ebp-08], 00000000
:10020E4D lea ecx, dword ptr [ebp-04]
:10020E50 call 1002E687
:10020E55 mov eax, dword ptr [ebp-08]
:10020E58 mov esp, ebp
:10020E5A pop ebp
:10020E5B ret 0004
вот функция по адрессу 100017B0
:100017B0 push ebp
:100017B1 mov ebp, esp
:100017B3 push ecx
:100017B4 mov dword ptr [ebp-04], ecx
:100017B7 mov eax, dword ptr [ebp-04]
:100017BA mov ecx, dword ptr [100519B8]
:100017C0 mov dword ptr [ebp-04]
:100017C2 mov eax, dword ptr [ebp-04]
:100017C5 mov esp, ebp
:100017C7 pop ebp
:100017C8 ret
а вот 1002E810
:1002E810 push esi
:1002E811 push edi
:1002E812 mov edi, dword ptr [esp+0C]
:1002E816 mov esi, ecx
:1002E818 test edi, edi
:1002E81A jne 1002E820
:1002E81C xor eax, eax
:1002E81E jmp 1002E827
и, 1002E687
:1002E687 push esi
:1002E688 mov esi, ecx
:1002E68A mov eax, dword ptr [esi]
:1002E68C lea ecx, dword ptr [eax-0C]
:1002E68F cmp ecx, dword ptr [100519BC]
:1002E695 je 1002E6AF
:1002E697 add eax, FFFFFFF4
:1002E69A push eax
помогите мне разобраться: какая здесь используется защита и как её отключить? пробовал
заменить
:1002E81A jne 1002E820 на
:1002E81A jmp 1002E820 - не помогает
| Сообщение посчитали полезным: |
|
 Ранг: 66.1 (постоянный) Активность: 0.04↘0 Статус: Участник
|
Создано: 04 августа 2006 14:21 · Личное сообщение · #2
Ссылку на dll-ку в студию.
| Сообщение посчитали полезным: |
Ранг: 516.1 (!), 39thx Активность: 0.28↘0 Статус: Участник
|
Создано: 04 августа 2006 14:21 · Личное сообщение · #3
выложи программу или dll хотя бы
| Сообщение посчитали полезным: |
Ранг: 0.3 (гость) Активность: 0=0 Статус: Участник
|
Создано: 04 августа 2006 14:41 · Личное сообщение · #4
Упс...простите, вот она:
www.win-tech.com/demos/wtopcsvr.zip (~500KB)
| Сообщение посчитали полезным: |
 Ранг: 299.6 (наставник) Активность: 0.3↘0 Статус: Участник Armadillo Killer
|
Создано: 04 августа 2006 15:09 · Личное сообщение · #5
Как эту DLL юзать то? хоть посмотреть а то куча каких то проэктов в нутри
| Сообщение посчитали полезным: |
Ранг: 0.3 (гость) Активность: 0=0 Статус: Участник
|
Создано: 04 августа 2006 15:23 · Личное сообщение · #6
Это примеры под разные языки программирования..вообще OPC - это типа OLE for Process Control, т.е. OLE для управления процессами, незаменимая вещь при построении систем промышленной автоматизации, чем я собственно и занимаюсь. Попробуйте открыть какой-нибудь пример и поюзать функцию Deactivate30MinTimer(dll само собою надо положить в system32 или в папку проекта). Если в качестве параметра введен правильный серийник, то она (функция) вернёт число больше 0, иначе 0. Если не ввести серийник, то библиотека перестаёт отвечать на запросы, причём какие именно функции блокируются я не знаю, скорее всего что-то в механизме OLE. Представляется мне, что при вызове функции Deactivate30MinTimer входной параметр сравнивается с серийником, если равно - то отключает внутренний таймер. Кстати, у меня тут мысль: если без серийника либа работает ровно 30 секунд, то значит она эти самые 30 сек. как-то считает, может через API? Но тут мне уже катострафически не хватает знаний и опыта, так что молю о помощи..
| Сообщение посчитали полезным: |
Ранг: 0.3 (гость) Активность: 0=0 Статус: Участник
|
Создано: 04 августа 2006 15:28 · Личное сообщение · #7
Блин..боюсь что человеку, не связанному с пром. автоматизацией будет сложно понять, о чём вобще эта библиотека, и для чего она нужна, тем не менее прошу о помощи, так как в наших (пром. автоматизаторских) кругах она весьма востребованна...для того, чтобы изучить защиту достаточно ведь только поюзать функцию проверки серийника......или нет?
| Сообщение посчитали полезным: |
 Ранг: 500.6 (!), 7thx Активность: 0.26↘0 Статус: Участник
|
Создано: 04 августа 2006 15:29 · Личное сообщение · #8
InsolentS
Выложи пример с длл-кой, без лишних файлов.
| Сообщение посчитали полезным: |
Ранг: 0.3 (гость) Активность: 0=0 Статус: Участник
|
Создано: 04 августа 2006 15:42 · Личное сообщение · #9
Вот, попробовал сделать рабочий макет сервера и клиента на VB. сначала запустите vbsvrtest.exe из папки vbserver, должно появится окно с четыремя инкрементирующимеся каждую секунду полями. Потом запускайте OPCBrowser.exe из папки OPC browser, там в открывающемся списке выберите "VBServer" - должно появится дерево с тегами, типа regedit'a. Значения тегов будут синхронно изменятся в соответствии со значениями на первом окне(сервере) пока не пройдёт 30мин.
Для того чтобы это всё работало в system32 должны быть файлы vbopcsvr.dll и msvbvm60.dll 7588_04.08.2006_CRACKLAB.rU.tgz - пример.rar
| Сообщение посчитали полезным: |
 Ранг: 122.3 (ветеран) Активность: 0.05↘0 Статус: Участник
|
Создано: 04 августа 2006 15:42 · Поправил: intty · Личное сообщение · #10
судя по коду, который ты привел выше, _Deactivate30MinTimer@4 это просто пустышка с очень характерным громким именем.
не думаю, что разработчики либы такие идиоты, тем более, что она так востребована.
90%, что нужно копать в другом месте.
[added:]
и вообще похоже, что чел просто проверяет защиту своей библы, почитайте внимательно первый пост.
или у меня мания преследования.
| Сообщение посчитали полезным: |
 Ранг: 66.1 (постоянный) Активность: 0.04↘0 Статус: Участник
|
Создано: 04 августа 2006 15:45 · Личное сообщение · #11
Я думаю, что нужно искать вызов SetTimer.
| Сообщение посчитали полезным: |
Ранг: 0.3 (гость) Активность: 0=0 Статус: Участник
|
Создано: 04 августа 2006 15:46 · Личное сообщение · #12 |
Ранг: 0.3 (гость) Активность: 0=0 Статус: Участник
|
Создано: 04 августа 2006 16:13 · Личное сообщение · #13
да, действительно, нашёл SetTimer, вот что говорит windasm:
* Reference To: USER32.SetTimer, Crd:0252h
:1001B8AD Call dword ptr [10039364]
:1001B8B3 mov dword ptr [100554F4], eax
что теперь с этим делать? Как узнать место вызова этой функции?
| Сообщение посчитали полезным: |
Ранг: 0.3 (гость) Активность: 0=0 Статус: Участник
|
Создано: 04 августа 2006 16:28 · Личное сообщение · #14
попробовал все вызовы(их 3) SetTimer заменить на 11 nop'ов , но теперь при попытке запуска возникает ошибка windows типа отправить отчёт в микрософт и т.п.
| Сообщение посчитали полезным: |
Ранг: 0.3 (гость) Активность: 0=0 Статус: Участник
|
Создано: 04 августа 2006 16:29 · Личное сообщение · #15
как профессиональные крэкеры убирают вызовы ненужных API?
| Сообщение посчитали полезным: |
 Ранг: 66.1 (постоянный) Активность: 0.04↘0 Статус: Участник
|
Создано: 04 августа 2006 16:30 · Личное сообщение · #16
Все 3 вызова убирать нельзя. Нужно найти тот, в котором устанавливается 30 мин.
| Сообщение посчитали полезным: |
Ранг: 0.3 (гость) Активность: 0=0 Статус: Участник
|
Создано: 04 августа 2006 16:32 · Личное сообщение · #17
intty
ничего я не проверяю, эта забугорная либа, потому и разработчики либы такие идиоты
| Сообщение посчитали полезным: |
Ранг: 0.3 (гость) Активность: 0=0 Статус: Участник
|
Создано: 04 августа 2006 16:36 · Поправил: InsolentS · Личное сообщение · #18
AdOLF_04
нашёл. Что с ним делать? Заменять на nop'ы?
заменять только превую комманду (call) или вторую тоже?
| Сообщение посчитали полезным: |
Ранг: 0.3 (гость) Активность: 0=0 Статус: Участник
|
Создано: 04 августа 2006 16:42 · Поправил: InsolentS · Личное сообщение · #19
заменил на nop'ы только один вызов SetTimer(он вызывается при инициализации, вот я и думаю, что он ключевой). Всё равно ошибка
| Сообщение посчитали полезным: |
Ранг: 88.0 (постоянный) Активность: 0.07↘0 Статус: Участник
|
Создано: 04 августа 2006 16:52 · Поправил: rep0A · Личное сообщение · #20
InsolentS
Ну когда вызывается функция SetTimer заодно и посмотри функцию обработки таймера и в самое начало впиши ret.
intty пишет:
и вообще похоже, что чел просто проверяет защиту своей библы, почитайте внимательно первый пост.
Да даже если, поймёт что защита лажа и всё.
| Сообщение посчитали полезным: |
Ранг: 0.3 (гость) Активность: 0=0 Статус: Участник
|
Создано: 04 августа 2006 16:54 · Личное сообщение · #21
а как найти callback, который вызывается SetTimer, используя только W32Dasm и Hiew?
| Сообщение посчитали полезным: |
Ранг: 88.0 (постоянный) Активность: 0.07↘0 Статус: Участник
|
Создано: 04 августа 2006 17:06 · Поправил: rep0A · Личное сообщение · #22
InsolentS
Перед вызовом SetTimer должны стоять четыре push-a. Первый и есть адрес на функцию обработки.
InsolentS пишет:
используя только W32Dasm и Hiew
А что мешает тебе скачать ольку(OllyDbg)?
| Сообщение посчитали полезным: |
Ранг: 260.2 (наставник) Активность: 0.19↘0 Статус: Участник
|
Создано: 04 августа 2006 20:31 · Личное сообщение · #23 |
Ранг: 260.2 (наставник) Активность: 0.19↘0 Статус: Участник
|
Создано: 04 августа 2006 20:32 · Личное сообщение · #24 |
Ранг: 260.2 (наставник) Активность: 0.19↘0 Статус: Участник
|
Создано: 04 августа 2006 20:34 · Личное сообщение · #25 |
Ранг: 0.3 (гость) Активность: 0=0 Статус: Участник
|
Создано: 05 августа 2006 01:16 · Поправил: InsolentS · Личное сообщение · #26
sniperZ
Я попробовал, вот результаты:
1) не помогла
2) не помогла + перестали работать некоторые функции
3) тоже не помогла
я тоже пытался отключить callback'и от SetTimer'ов и с теми же результатами, незнаю, почему не получается...кстати первые два вызова ведут к одному и тому же callback'у, к чему бы это....
Тем не менее спасибо за участие!
to all
какие ещё могут быть варианты, кроме SetTimer? Я подумал: если он регится, проверяя на верность серийник, то должно быть он сверяет введённое значение с эталоном, и делает какие-то выводы, т.е. нужно только найти эталон, но где? в ресурсах его нету.....где их обычно прячут, как сверяют?
P.S. за эту dll-ку они просят 1895$, представляете...........
| Сообщение посчитали полезным: |
Ранг: 0.3 (гость) Активность: 0=0 Статус: Участник
|
Создано: 05 августа 2006 03:00 · Личное сообщение · #27
Попробовал отрубить все 3 таймера - не помогло  И как она только их считает? Может запоминает системное время, а потом сравнивает? Какие API за это отвечают?
| Сообщение посчитали полезным: |
Ранг: 253.9 (наставник) Активность: 0.13↘0 Статус: Участник
|
Создано: 05 августа 2006 10:23 · Поправил: Tim · Личное сообщение · #28
InsolentS
поэкспериментируй вот с этим условным переходом:
(удалено - не то)
да, проект твой не запускается... требует какой-то ActiveX.
P.S. Таймеры отрубать нельзя - в них может быть какая-то полезная синхронизация. Правильнее менять условие.
----- MicroSoft? Is it some kind of a toilet paper? | Сообщение посчитали полезным: |
Ранг: 260.2 (наставник) Активность: 0.19↘0 Статус: Участник
|
Создано: 05 августа 2006 12:34 · Личное сообщение · #29
InsolentS пишет:
Я попробовал, вот результаты:
1) не помогла
2) не помогла + перестали работать некоторые функции
3) тоже не помогла
В этих DLL'ках я я делал, чтобы таймер ставился на 1000000 сек.
Если не помогло,значит дело не в таймере.
| Сообщение посчитали полезным: |
Ранг: 253.9 (наставник) Активность: 0.13↘0 Статус: Участник
|
Создано: 05 августа 2006 13:29 · Личное сообщение · #30
InsolentS
Что вообще происходит после 30 минут работы? Вылетает сообщение? Или DLL'ка перестает работать? И как это отследить?
Сделай рабочий пример клиента, а то первый не работает.
----- MicroSoft? Is it some kind of a toilet paper? | Сообщение посчитали полезным: |