Сейчас на форуме: kris_sexy, ==DJ==[ZLO] (+6 невидимых)

 eXeL@B —› Крэки, обсуждения —› Помогите вылечить dll-ку:)
. 1 . 2 . >>
Посл.ответ Сообщение

Ранг: 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.040
Статус: Участник

Создано: 04 августа 2006 14:21
· Личное сообщение · #2

Ссылку на dll-ку в студию.



Ранг: 516.1 (!), 39thx
Активность: 0.280
Статус: Участник

Создано: 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.30
Статус: Участник
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.260
Статус: Участник

Создано: 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.050
Статус: Участник

Создано: 04 августа 2006 15:42 · Поправил: intty
· Личное сообщение · #10

судя по коду, который ты привел выше, _Deactivate30MinTimer@4 это просто пустышка с очень характерным громким именем.
не думаю, что разработчики либы такие идиоты, тем более, что она так востребована.

90%, что нужно копать в другом месте.

[added:]
и вообще похоже, что чел просто проверяет защиту своей библы, почитайте внимательно первый пост.
или у меня мания преследования.




Ранг: 66.1 (постоянный)
Активность: 0.040
Статус: Участник

Создано: 04 августа 2006 15:45
· Личное сообщение · #11

Я думаю, что нужно искать вызов SetTimer.



Ранг: 0.3 (гость)
Активность: 0=0
Статус: Участник

Создано: 04 августа 2006 15:46
· Личное сообщение · #12

вот dll-ка.

62fd_04.08.2006_CRACKLAB.rU.tgz - WtOPCSvr.rar



Ранг: 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.040
Статус: Участник

Создано: 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.070
Статус: Участник

Создано: 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.070
Статус: Участник

Создано: 04 августа 2006 17:06 · Поправил: rep0A
· Личное сообщение · #22

InsolentS
Перед вызовом SetTimer должны стоять четыре push-a. Первый и есть адрес на функцию обработки.

InsolentS пишет:
используя только W32Dasm и Hiew

А что мешает тебе скачать ольку(OllyDbg)?



Ранг: 260.2 (наставник)
Активность: 0.190
Статус: Участник

Создано: 04 августа 2006 20:31
· Личное сообщение · #23

InsolentS, тестируй три DLL'ки.
Первая!

2e55_04.08.2006_CRACKLAB.rU.tgz - WtOPCSvr_1.rar



Ранг: 260.2 (наставник)
Активность: 0.190
Статус: Участник

Создано: 04 августа 2006 20:32
· Личное сообщение · #24

вторая...

d3b3_04.08.2006_CRACKLAB.rU.tgz - WtOPCSvr_2.rar



Ранг: 260.2 (наставник)
Активность: 0.190
Статус: Участник

Создано: 04 августа 2006 20:34
· Личное сообщение · #25

...и третья...

31e8_04.08.2006_CRACKLAB.rU.tgz - WtOPCSvr_3.rar



Ранг: 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.130
Статус: Участник

Создано: 05 августа 2006 10:23 · Поправил: Tim
· Личное сообщение · #28

InsolentS
поэкспериментируй вот с этим условным переходом:

(удалено - не то)

да, проект твой не запускается... требует какой-то ActiveX.

P.S. Таймеры отрубать нельзя - в них может быть какая-то полезная синхронизация. Правильнее менять условие.

-----
MicroSoft? Is it some kind of a toilet paper?




Ранг: 260.2 (наставник)
Активность: 0.190
Статус: Участник

Создано: 05 августа 2006 12:34
· Личное сообщение · #29

InsolentS пишет:
Я попробовал, вот результаты:
1) не помогла
2) не помогла + перестали работать некоторые функции
3) тоже не помогла


В этих DLL'ках я я делал, чтобы таймер ставился на 1000000 сек.
Если не помогло,значит дело не в таймере.



Ранг: 253.9 (наставник)
Активность: 0.130
Статус: Участник

Создано: 05 августа 2006 13:29
· Личное сообщение · #30

InsolentS
Что вообще происходит после 30 минут работы? Вылетает сообщение? Или DLL'ка перестает работать? И как это отследить?
Сделай рабочий пример клиента, а то первый не работает.

-----
MicroSoft? Is it some kind of a toilet paper?



. 1 . 2 . >>
 eXeL@B —› Крэки, обсуждения —› Помогите вылечить dll-ку:)
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати