Русский / Russian English / Английский

Сейчас на форуме: (+4 невидимых)
 · Начало · Статистика · Регистрация · Поиск · ПРАВИЛА ФОРУМА · Язык · RSS ·

 eXeL@B —› Основной форум —› Можете посоветовать? Hardlock + под dos/win95 = как убрать? :)
<< . 1 . 2 . 3 . 4 . 5 . 6 . >>
Посл.ответ Сообщение

Ранг: 41.1 (посетитель)
Статус: Участник

Создано: 23 января 2007 09:27 New!
Цитата · Личное сообщение · #1

Есть программа, старезная, 97 года выпуска. Защищена Hardlock. В главном екзешнике по обьяснения ИДЫ есть 2 хедера - NE и для ДОСа. Кажется есть встроеная защита, в сам ехе. Для ДОСа наверное. Только наверно, сам код не нашел. И обращения к драйверу HARDLOCK.VXD для Видны. На этом мои познание в этой проге заканчиваются С чего начать ее взлом? Сори за тупую постановку вопроса. Просто поиском интересных мест по коду, и копанию там не получилось ничего...


Ранг: 113.0 (ветеран)
Статус: Участник

Создано: 2 февраля 2007 11:26 New!
Цитата · Личное сообщение · #2

God damn mothefuckers, у меня на этой машине (пока) softice не работает вместе с brs... Зато я вот что нашел:

BRS_R.MSG (файлик сообщений):
...
1156
Ограниченная демо-версия
1157
Версия
1158
Учебная версия
...

Вот где можно понять почему вызываецца именно такой мессаджэбокс...

Ранг: 41.1 (посетитель)
Статус: Участник

Создано: 2 февраля 2007 12:50 New!
Цитата · Личное сообщение · #3

Chingachguk
Блииин, я забыл тебе рассказать
я с этого и начинал 3 месяца назад.. с этого файла..


Ранг: 113.0 (ветеран)
Статус: Участник

Создано: 2 февраля 2007 13:54 New!
Цитата · Личное сообщение · #4

Да ничего страшного - я быстро этот текст нашел. Вот процедура вывода сообщения:

; Вроде бы из main вызывается с CallFlag=2
cseg90:0153 ; int __cdecl far subAE0B3_StartUpMessageBox(int CallFlag)
cseg90:0153 subAE0B3_StartUpMessageBox proc far ; CODE XREF: _main+1F8P
...
; Начинаем читать сообщения:
cseg90:017A push 0 ; int
cseg90:017C push 47Dh ; MsgNum
cseg90:017F push ss
cseg90:0180 lea ax, [bp+result]
cseg90:0183 push ax ; result
cseg90:0184 call subD7390_ReadMsg
...
; В конце-концов выводим вот это:
cseg90:0377 push 0 ; int
cseg90:0379 push 484h ; "Ограниченная демо-версия"
cseg90:037C push ss
cseg90:037D lea ax, [bp+var_186]
cseg90:0381 push ax ; result
cseg90:0382 call subD7390_ReadMsg

Хочу заметить что имеют значение:

1. переданный параметр;
2. некий вордовый флаг (который крутиться 1->2->..->5->1..):

cseg90:020E cmp word_13BD0C, 5
cseg90:0213 jge short loc_AE178

3. А также некий флажок:

cseg90:0229 test byte ptr word13F86A_SomeStrangeFlag2+1, 4
cseg90:022E jnz short loc_AE199
cseg90:0230 mov word_13BD0C, 5
cseg90:0236 jmp locAE60C_Exit

Еще заметил что модуль int.exe выдает сообщение "Система в демо-режиме (не доступен ключ)." при выборе "что не так?".

Ранг: 41.1 (посетитель)
Статус: Участник

Создано: 3 февраля 2007 01:50 New!
Цитата · Личное сообщение · #5

Chingachguk пишет:
Еще заметил что модуль int.exe выдает сообщение "Система в демо-режиме (не доступен ключ)." при выборе "что не так?".

Обьясни поподробней, а я ща код который ты привел, к себя посмотрю!

Ранг: 310.8 (мудрец)
Статус: Участник

Создано: 3 февраля 2007 08:15 · Поправил: tundra37 New!
Цитата · Личное сообщение · #6

Chingachguk пишет:
Вообще непонятно зачем в "brs" куски кода для работы с непонятным( хардлокк) ключом, который реально не вызываецца
Что значит не вызывается. В проге, которую я ломал, после вызова hl_login и ответа "ключ не найден", никаких мессаджей не выдавалось, а шла проверка по сети. С таким же успехом и здесь может быть. Сама hl_login вызывает функции нижнего уровня. Я их никогда не копал, но почему им не быть одинаковым для хаспа и хардлока. Я же говорю : "вы копаете около цели" и похоже все дальше и дальше от нее.
http://www.exelab.ru/f/index.php?action=vthread&forum=1&topic=3266&p age=0#2
Вот в этой ссылке описание структуры. Сразу за **CPG идет куча push (Сохранение регистров) и работа
[BX+..] Похоже, что hl_login используется в более новых версиях.

Ранг: 310.8 (мудрец)
Статус: Участник

Создано: 4 февраля 2007 00:42 New!
Цитата · Личное сообщение · #7

Сегодня запустил BRS.exe под ДОС. Но это ничего не значит. Фактически роль Виндов выполняет RTM и DPMI. В свое время я видел среду разработки от Борланда, которая работала в ДОС, но с графическим интерфейсом. Причем интерфейс был покруче чем в BRS - подобие ранних Вижуал Студий, только тормозной очень. Правда и проц был 386-й.

Ранг: 41.1 (посетитель)
Статус: Участник

Создано: 4 февраля 2007 03:47 New!
Цитата · Личное сообщение · #8

tundra37
Ну эта прога сама на борладне нарисована. Я просто никак не могу вкурить ГДЕ оно ключ проверяет, код не вызывается, размечто через внешние ехе, VxD тоже молчат ввиду их отсутствия у меня в системе. Хз.. думаю уже может их туда втулить и ловить их вызовы.. Лично я уже совсем запутался

Ранг: 41.1 (посетитель)
Статус: Участник

Создано: 4 февраля 2007 03:49 New!
Цитата · Личное сообщение · #9

Chingachguk
Есть какие-то новости?


Ранг: 113.0 (ветеран)
Статус: Участник

Создано: 4 февраля 2007 03:58 New!
Цитата · Личное сообщение · #10

tundra37

Ситуация немного хуже (по крайней мере по imho)

Смотри. Главный модуль BRS содержит - я практически уверен что ты прав, раз ты разбирался с этим ключом уже - функции для работы с hlock'ом. Подчиненные модули (INT, IMM, etc) ТОЧНО содержат функи ХАЗП, LPT. Причем не только содержат - но и реально вызываются. Проверял по bpio, да и так их видно. Пассы я привел выше.

Однако главный BRS сам как бы с ключом не работает, по крайней мере bpio 278 ничего не показывает. Также не вызывются найденные функции для работы с hlock'ом - Spry проверял это по отладке, я по xref. Возможно, это не так и надо смотреть дальше.

BRS ДИЗЕЙБЛИТ пункты меню "Записать все"/"Записать объект". Это управляется найденным Spry флажком "dseg196:28A0 wStrange1_if_noPROCTECT dw 1". Если он 0, то эти функции доступны. Явных попыток снять этот флаг или инициализировать его пока не найдено, только чтение.

Возможно, возможно BRS как-то обошел незаметно нас и посмотрел на "ключ". Это можно сделать к примеру если перевести выполнение в ring0, там сайс уже bpio ничего не поймает. Можно определять по сети - как ты говоришь, но само факто наличия работы с ДВУМЯ ключами ... интересно

Spry
Нашел процедуры обработки нажатий клавш (пока верхнего уровня):

; Вызывается при нажатии клавишь в меню ~DispatchEvent
cseg23:02F0 loc300B0_CalledOnAnyKeyAction: ; CODE XREF: sub_2FDC0+34j
cseg23:02F0 ; sub_2FDC0+2DFj ...
cseg23:02F0 les bx, dword_13F856

; Только для клавиши Enter
cseg23:03ED mov ax, es:[bx+4] ; This is called only if
cseg23:03ED ; "Enter" key is pressed (Main Menu)

cseg23:056A nop ; ; It's called if "Добавить"/etc has been choosed
cseg23:056B push cs
cseg23:056C call near ptr sub_3087A

cseg44:0627 loc_5DAE7: ; CODE XREF: sub_5D603+FDj
cseg44:0627 ; DATA XREF: cseg44:138Do
cseg44:0627 mov eax, dword_13F90A ; !! It's called ONLY for "Записать все"/"Записать объект"
cseg44:062B mov [bp+var_72], eax
cseg44:062F push word ptr [bp+var_72+2]
cseg44:0632 push word ptr [bp+var_72]
cseg44:0635 call sub7DF8_StrToNumber

Вот такие пироги... с котятами...

Ранг: 41.1 (посетитель)
Статус: Участник

Создано: 4 февраля 2007 23:13 New!
Цитата · Личное сообщение · #11

Chingachguk
Система в демо-режиме (не доступен ключ)
Где ты это сообщение видел?

Ранг: 41.1 (посетитель)
Статус: Участник

Создано: 4 февраля 2007 23:39 New!
Цитата · Личное сообщение · #12

Chingachguk
Интересно как то у тебя ида проаналайзила код, у меня на cseg44:0627 рефов нету


Ранг: 113.0 (ветеран)
Статус: Участник

Создано: 4 февраля 2007 23:50 · Поправил: Chingachguk New!
Цитата · Личное сообщение · #13

Файл INT_R.MSG:

"3027
Система в демо-режиме (не доступен ключ)."

Соответственна модуль, его использующий - INT.EXE, пункт меню "Что не так?".

PS По мере сил изучаю далее. При нажатии "Читать" (~"Загрузить файл"?) вызываецца интересная процедура, я назвал ее:

cseg23:0ABA sub3087A_UseDxf2stg proc far ; CODE XREF: _main+26BP


pps Также есть идея. Как известно, флаг wStrange1_if_noPROCTECT управляет раздизейбливанием "Сохранить obj"/"Сохранить все". Однако интересна было бы найти код который делает это и попытацца понять - может ли он раздизейблить кнопки по другому условию (когда флаг по-прежнему == 1).

PPS !!! По поводу seg44 я прогнал! Я смотрю в-основном в SoftIce, потом уже переношу в IDA... был неаккуратен!!


Ранг: 113.0 (ветеран)
Статус: Участник

Создано: 4 февраля 2007 23:58 · Поправил: Chingachguk New!
Цитата · Личное сообщение · #14

Важные куски:

cseg23:0ABA sub3087A_UseDxf2stg proc far ; CODE XREF: _main+26BP

; Это вроде бы вызываецца при выборе "Читать" (загрузить файл?)
cseg23:056C call near ptr sub3087A_UseDxf2stg
cseg23:056F add sp, 10h

; Это у меня так выглядит место которое у тебя не так видно:
cseg44:0627 mov eax, dword_13F90A ; ; CALL THEN "Записать" HAS BEEN PRESSED
cseg44:062B mov [bp+var_72], eax
cseg44:062F push word ptr [bp+var_72+2]
cseg44:0632 push word ptr [bp+var_72]
cseg44:0635 call sub7DF8_StrToNumber
cseg44:063A add sp, 4
cseg44:063D push ax
cseg44:063E mov eax, dword_13F906
cseg44:0642 mov [bp+var_76], eax
cseg44:0646 push word ptr [bp+var_76+2]
cseg44:0649 push word ptr [bp+var_76]
cseg44:064C call sub7DF8_StrToNumber

Искать его по байтикам: 66,A1,6A,5E,66,89,46,8E

PS А также:

cseg23:0439 push eax ; If "Enter" Action:
cseg23:0439 ; eax:
cseg23:0439 ; 0Ah - "Добавить"
cseg23:0439 ; 0Eh - "Записать все"
cseg23:0439 ; 11h - "Записать объект"
cseg23:043B call sub_27559

Ранг: 41.1 (посетитель)
Статус: Участник

Создано: 5 февраля 2007 00:21 New!
Цитата · Личное сообщение · #15

Chingachguk
По поводу cseg44. Да не знаю, пеомойму ты таки прав, процедура в принципе похожа на обработку функций меню, там точно есть обработчики для "Удалить TMP" и "Выход". А почему у меня небыло рефов - у меня не до конца ида пропарсила даблицу оффсетов для свича или цилка, но там я не нашел блока со значениями для свича

; Это вроде бы вызываецца при выборе "Читать" (загрузить файл?)
cseg23:056C call near ptr sub3087A_UseDxf2stg
cseg23:056F add sp, 10h
Скорее всего вызывается когда ты открываеш файл Dxf или stg (так же если и сохраняеш, насколько я понял, это двусторонний конвертор).
По идее когда ты кликаеш на читать/добавить, вылезает окошко с выбором файла и типа, думаю с сохранить так же само

Ранг: 41.1 (посетитель)
Статус: Участник

Создано: 5 февраля 2007 00:24 New!
Цитата · Личное сообщение · #16

Сейчас поищу использование таких строк
2019
Это демо-версия ! Обращайтесь к разработчикам: +380 44 254-4572
2050
Демо-версия: Количество граней и точек ограничено!
2051
Это демо-версия. Возможности ограничены...
3027
Система в демо-режиме (не доступен ключ).
3119
Это демонстрационная версия программы.
3138
Демо-версия INTEAR. Обращайтесь к разработчикам: +380 44 254-4572
3168
Демо-версия INTEAR. Обращайтесь к разработчикам:+380 44 254-4572

Ранг: 41.1 (посетитель)
Статус: Участник

Создано: 5 февраля 2007 00:30 New!
Цитата · Личное сообщение · #17

INT.EXE
cseg04:084B aHaspIsNotForTh db 'HASP is not for The InteAr 4.XX pro!',0

Ранг: 41.1 (посетитель)
Статус: Участник

Создано: 5 февраля 2007 00:31 New!
Цитата · Личное сообщение · #18

Chingachguk
Это уже совсем интересно
aHaspChecksumSt+14h
cseg04:0DAC ; ---------------------------------------------------------------------- -----
cseg04:0DAE aHaspChecksumSt db '$HASP$CHECKSUM$STR$1¬'
cseg04:0DC3 db 7 ; SEG16 SEGDEF [dseg108,27F8]
cseg04:0DC4 db 0D0h ; ¦
cseg04:0DC5 ; ---------------------------------------------------------------------- -----
cseg04:0DC5 mov es, ax
cseg04:0DC7 cmp es:word_D2868, 0
cseg04:0DCD jnz short loc_112AA
cseg04:0DCF call sub_88FC9
cseg04:0DD4 or ax, ax
cseg04:0DD6 jnz short loc_112AA
cseg04:0DD8 push cs
cseg04:0DD9 push offset aHaspIsNotForTh ; "HASP is not for The InteAr 4.XX pro!"
cseg04:0DDC call sub_A1C5F
cseg04:0DE1 add sp, 4
cseg04:0DE4 mov ax, 6
cseg04:0DE7 jmp loc_113AC
cseg04:0DEA ; ---------------------------------------------------------------------- -----
cseg04:0DEA
cseg04:0DEA loc_112AA: ; CODE XREF: sub_10D7C+511j
cseg04:0DEA ; sub_10D7C+51Aj
cseg04:0DEA jmp short loc_112C0
cseg04:0DEA ; ---------------------------------------------------------------------- -----
cseg04:0DEC db 24h ; $
cseg04:0DED db 48h ; H
cseg04:0DEE db 41h ; A
cseg04:0DEF db 53h ; S
cseg04:0DF0 db 50h ; P
cseg04:0DF1 db 24h ; $
cseg04:0DF2 db 43h ; C
cseg04:0DF3 db 48h ; H
cseg04:0DF4 db 45h ; E
cseg04:0DF5 db 43h ; C
cseg04:0DF6 db 4Bh ; K
cseg04:0DF7 db 53h ; S
cseg04:0DF8 db 55h ; U
cseg04:0DF9 db 4Dh ; M
cseg04:0DFA db 24h ; $
cseg04:0DFB db 53h ; S
cseg04:0DFC db 54h ; T
cseg04:0DFD db 52h ; R
cseg04:0DFE db 24h ; $
cseg04:0DFF db 31h ; 1

Ранг: 41.1 (посетитель)
Статус: Участник

Создано: 5 февраля 2007 00:33 New!
Цитата · Личное сообщение · #19

cseg01:2227 aHaspChecksumKe db '$HASP$CHECKSUM$KEY$STAMP$',0
cseg01:242B aHaspChecksumOf db '$HASP$CHECKSUM$OFS$STAMP$',0
cseg01:2465 aKeyStamp db '$KEY$STAMP$',0
cseg01:2471 aHaspChecksum db '$HASP$CHECKSUM',0
cseg02:01CF aHaspChecksum_0 db '$HASP$CHECKSUM$STR$7¬'
cseg02:01E4 db 7 ; SEG16 SEGDEF [dseg108,27F8]
cseg02:01E5 db 0D0h ; ¦

и таких еще куча в INT.EXE ..

Ранг: 41.1 (посетитель)
Статус: Участник

Создано: 5 февраля 2007 00:47 New!
Цитата · Личное сообщение · #20

блин, везде этот хазп, кроме как в BRS.exe..
Впроочем я с тобой согласен,
Chingachguk пишет:
pps Также есть идея. Как известно, флаг wStrange1_if_noPROCTECT управляет раздизейбливанием "Сохранить obj"/"Сохранить все". Однако интересна было бы найти код который делает это и попытацца понять - может ли он раздизейблить кнопки по другому условию (когда флаг по-прежнему == 1).

1) либо юзается ринг ноль, и мы изменение этиого флага не увидим
2) либо юзается другой флаг
3) либо какойто из этих флагов модифится не в BRS.exe.
Сам посуди, я не думаю что разраюотчик при наличии ключа будет вопить строку noPROCTECT
Я попробую рыть от того же about-box при том условии что должно показатся не noPROCTECT а правильное "S/N" и бла0бла-бла

Ранг: 41.1 (посетитель)
Статус: Участник

Создано: 5 февраля 2007 01:23 · Поправил: Spry New!
Цитата · Личное сообщение · #21

cseg90:036C push offset aSN ; "S/N: "
cseg90:036F mov cx, 6
cseg90:0372 call SCOPY@
cseg90:0377 push 0 ; int
cseg90:0379 push 484h ; Str_ID
cseg90:037C push ss ; Îãðàíè÷åííàÿ äåìî-âåðñèÿ
cseg90:037D lea ax, [bp+str_LimitedDemoVersion]
cseg90:0381 push ax ; pcsStrOut
cseg90:0382 call GetStrFromFile
cseg90:0387 add sp, 8
cseg90:038A push 0 ; int
cseg90:038C push 485h ; Str_ID
cseg90:038F push ss ; Âåðñèÿ
cseg90:0390 lea ax, [bp+str_Version]
cseg90:0394 push ax ; pcsStrOut
cseg90:0395 call GetStrFromFile
cseg90:039A add sp, 8
cseg90:039D wait
cseg90:039E fld seems_dw_Version ; load dword to FPU
cseg90:03A2 sub sp, 8
cseg90:03A5 wait
cseg90:03A6 fstp [bp+qw_Version] ; move from FPU to var
cseg90:03AA push ss
cseg90:03AB nop
cseg90:03AC wait
cseg90:03AD lea ax, [bp+str_Version]
cseg90:03B1 push ax ; str_Version ['Âåðñèÿ']
cseg90:03B2 push ds
cseg90:03B3 push offset aS1_2f ; "%s %1.2f, "
cseg90:03B6 push ss
cseg90:03B7 lea ax, [bp+buffer]
cseg90:03BB push ax ; buffer
cseg90:03BC call _sprintf ; _sprintf(buffer, "%s %1.2f", str_Version, qw_Version???)
cseg90:03C1 add sp, 14h
cseg90:03C4 cmp wStrange1_if_noPROCTECT, 0
cseg90:03C9 jz short loc_AE35C ; if (wStrange1 == 0) then jump [noPROTECT]
cseg90:03CB push ss ; else -->
cseg90:03CC lea ax, [bp+str_LimitedDemoVersion]
cseg90:03D0 push ax
cseg90:03D1 call TEXTWIDTH
cseg90:03D6 cwd
cseg90:03D7 sub ax, dx
cseg90:03D9 sar ax, 1
cseg90:03DB mov dx, di
cseg90:03DD sub dx, ax
cseg90:03DF add dx, si
cseg90:03E1 push dx
cseg90:03E2 les bx, dword ptr [bp+var_10]
cseg90:03E5 mov ax, es:[bx+14h]
cseg90:03E9 add ax, si
cseg90:03EB add ax, 2Eh ; '.'
cseg90:03EE push ax
cseg90:03EF push ss
cseg90:03F0 lea ax, [bp+str_LimitedDemoVersion]
cseg90:03F4 push ax
cseg90:03F5 call DrawString
cseg90:03FA jmp short loc_AE3B1
cseg90:03FC ; ---------------------------------------------------------------------- -----
cseg90:03FC
cseg90:03FC loc_AE35C: ; CODE XREF: DrawAbout+276j
cseg90:03FC push ds
cseg90:03FD push offset aNoprotect ; "!!! noPROTECT !!!"
cseg90:0400 push ss
cseg90:0401 lea ax, [bp+src]
cseg90:0405 push ax ; dest
cseg90:0406 call _strcpy
cseg90:040B add sp, 8
cseg90:040E push ss
cseg90:040F lea ax, [bp+src]
cseg90:0413 push ax ; src
cseg90:0414 push ss
cseg90:0415 lea ax, [bp+buffer]
cseg90:0419 push ax ; dest
cseg90:041A call _strcat
cseg90:041F add sp, 8
cseg90:0422 push ss
cseg90:0423 lea ax, [bp+buffer]

Аттач - два разных окна

Ранг: 41.1 (посетитель)
Статус: Участник

Создано: 5 февраля 2007 01:24 New!
Цитата · Личное сообщение · #22

опять забыл..

{ Атач доступен только для участников форума } - photo.JPG


Ранг: 113.0 (ветеран)
Статус: Участник

Создано: 5 февраля 2007 01:43 · Поправил: Chingachguk New!
Цитата · Личное сообщение · #23

Spry

Это ты привел процедуру МессаджеБокса. В котором и пишут "NoProtect". Я еще раз скажу что согласен с твоим последним замечанием насчет сомнительности сброса флага NoProtect в реальной работе.

Еще немного исполняемых кускофф:

cseg23:0DE6 push word ptr [bp+var_28+2]
cseg23:0DE9 push word ptr [bp+var_28]
cseg23:0DEC call sub7DF8_StrToNumber
cseg23:0DF1 add sp, 4
cseg23:0DF4 push ax
cseg23:0DF5 call sub5D603_AskFileName
cseg23:0DFA pop cx
cseg23:0DFB mov si, ax

Если вызывать "Читать" или "Новый", то последний вызов спрашивает имя файла. Если CANCEL, то в ax всегда 0, если выбор сделан - не ноль. Однака для вызова "Записать obj"/"Записать все" всегда 0... не знаю что это означает пока...

PS Там еще может выводицца "Учебная версия"... Интересна, как это так бы сделать...


Ранг: 113.0 (ветеран)
Статус: Участник

Создано: 5 февраля 2007 03:59 New!
Цитата · Личное сообщение · #24

Потрассировал использование флага "wStrange1_if_noPROCTECT" при загрузке (после этого он не используется вплоть до нажатия "Записать"). Всего три точки:

1. cseg18:0017 cmp wStrange1_if_noPROCTECT, 0 ; ! FIRST flag's usage
// тут какая-то интересная работа с каким-то dword'ом:
cseg18:0028 mov eax, [bp+var_4]
cseg18:002C add eax, 0Fh
cseg18:0030 sar eax, 4
cseg18:0034 shl eax, 4
cseg18:0038 mov dword_13F0B8, eax

2. cseg90:0203 cmp wStrange1_if_noPROCTECT, 0 ; ! SECOND Flag's usage
3. cseg18:0017
4. cseg90:0203
5. cseg18:0017
6. cseg90:0203
7. cseg18:0017
8. cseg90:0203
9. cseg22:0182 cmp wStrange1_if_noPROCTECT, 0 ; if we set Flag=0 ONLY HERE,
cseg22:0182 ; we'll GET UNdisable Items ("Записать все"/"Записать объект")
cseg22:0187 jz loc_2A64C

; Самое интересное. Если ТОЛЬКО тут поставить флаг в 0 (или сделать переход на 2A64C), то упомянутые выше пункты ДОСТУПНЫ.

10. cseg90:03C4 cmp wStrange1_if_noPROCTECT, 0
cseg90:03C9 jz short loc_AE35C

11. cseg90:03C4 cmp wStrange1_if_noPROCTECT, 0
cseg90:03C9 jz short loc_AE35C

// все.


Ранг: 113.0 (ветеран)
Статус: Участник

Создано: 5 февраля 2007 05:01 New!
Цитата · Личное сообщение · #25

Поисследовал точку 9 - управление дизейблом айтемофф в закладках. Итак, сначала мы вот тут проверили флаг:

cseg22:0182 cmp wStrange1_if_noPROCTECT, 0 ; if we set Flag=0 ONLY HERE,
cseg22:0182 ; we'll GET UNdisable Items ("Записать все"/"Записать объект")
cseg22:0187 jz loc_2A64C

Если он 0, то мы идем на "default" (switch case...). Однако если мы пойдем далее, то мы можем раздизейблить два вышеупомянутых пункта:

cseg22:01FE loc_2A63E: ; CODE XREF: sub2A577_DisableItems+79j
cseg22:01FE les bx, [bp+var_A]
cseg22:0201 mov al, es:[bx+2]
cseg22:0205 mov ah, 0
cseg22:0207 cmp ax, [bp+var_10]
cseg22:020A jg short loc_2A5F2
cseg22:020C
cseg22:020C loc_2A64C: ; CODE XREF: sub2A577_DisableItems+50j
cseg22:020C jmp loc_2A70B ; default

Если условие "jg short loc_2A5F2" НЕ выполнено, то упраление попадет на "default" (где все пункты меню будут доступны). В отладке было видно что:

cseg22:0201 mov al, es:[bx+2] ; -> 0Eh
cseg22:0205 mov ah, 0
cseg22:0207 cmp ax, [bp+var_10] ; В этот момент там был 0.

Т.е. в данном случае сработало 0E > 0 -> на дефаулт не перешли. Т.е. можно попробовать поменять es:[bx+2] на 0 или поменять [bp+var_10] на 0E. Я попробовал оба ;)

1. В первом варианте я нашел место инициализации этой памяти:

030F:4AB3:
mov es:[bx+2],al ; 26,88,47,02
mov ax,[bp+0Ch] ; 8B,46,0C

Туда пишется 0E. Я поменял на 0. Вырубило все пункты меню Самое смешное, что он все это записал в файлик BRS_R.MNB, и потом уже безо всяких изменений у меня больше не было пунктофф меню. Пришлось доставать его опять из архива

Эта память также чекается и далее.

2. Если поменять локальный флаг [bp+var_10] на 0E, то пункты меню доступны. Пока не проверил рабочие ли они...


Ранг: 113.0 (ветеран)
Статус: Участник

Создано: 5 февраля 2007 05:49 New!
Цитата · Личное сообщение · #26

УФФФФФФФФФ....

Нашел. Как всегда "тупой, еще silly"... Мда. Вот ключ к разгадке:

cseg22:01D1 call sub7DF8_StrToNumber
cseg22:01D6 add sp, 4
cseg22:01D9 mov [bp+var_12], ax
cseg22:01DC cmp [bp+var_12], 6Eh ; 'n'
cseg22:01E0 jnz short loc_2A63B

Если поправить соответствующим образом файлик, то все раздизейбливаецца... и вроде даже выполняецца... Ошибка должна уже быть именно из-за отсутствия глюча.

Хардлокка я так и не увидел

Ранг: 41.1 (посетитель)
Статус: Участник

Создано: 5 февраля 2007 07:09 New!
Цитата · Личное сообщение · #27

Chingachguk
Так, погодь, сек, не спеши, а то тебя унесло, я за тобой мысленно не успеваю Итак, по поводу "тупой, еще silly"
Тоесть ты хоч сказать что если отредактировать BRS_R.MNB по поводу дизейбла меню, то все будет ок? Типа даже чтото будет показыватся при нажатии на "Записать все"/"Записать объект"? Или возникли всетаки какието ошибки? Сори что сам туплю

Ранг: 41.1 (посетитель)
Статус: Участник

Создано: 5 февраля 2007 08:13 New!
Цитата · Личное сообщение · #28

Chingachguk
Ноффасть! Есть файлы от него - в аттаче, незнаю, чем поможет, но только получил сам

{ Атач доступен только для участников форума } - int.rar


Ранг: 113.0 (ветеран)
Статус: Участник

Создано: 5 февраля 2007 08:18 New!
Цитата · Личное сообщение · #29

Spry

Ну я думаю что после того, как поставить в файлик "магические" чиселки - все должно работать кроме тех функций что защищены хазпом... о котором я уже столько говорил Возможно, я не прафф... а лев. Надо будет проверить.

Есть также версия (просто в уме) что эти magic numbers ставит один из подчиненных модульков - как только обнаружит хазп. Или снимает, если его нет.

Ранг: 41.1 (посетитель)
Статус: Участник

Создано: 5 февраля 2007 08:29 New!
Цитата · Личное сообщение · #30

Chingachguk
Блин, вот это через все сделано Ламать неудобно ))


Ранг: 113.0 (ветеран)
Статус: Участник

Создано: 6 февраля 2007 00:21 New!
Цитата · Личное сообщение · #31

А чего там неудобного? ;_)
<< . 1 . 2 . 3 . 4 . 5 . 6 . >>
 eXeL@B —› Основной форум —› Можете посоветовать? Hardlock + под dos/win95 = как убрать? :)

Видеокурс ВЗЛОМ