| Посл.ответ | 
Сообщение | 
 Ранг: 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?  | Сообщение посчитали полезным:   |