![]() |
eXeL@B —› Основной форум —› Можете посоветовать? Hardlock + под dos/win95 = как убрать? :) |
<< . 1 . 2 . 3 . 4 . 5 . 6 . >> |
Посл.ответ | Сообщение |
|
Создано: 23 января 2007 09:27 · Личное сообщение · #1 Есть программа, старезная, 97 года выпуска. Защищена Hardlock. В главном екзешнике по обьяснения ИДЫ есть 2 хедера - NE и для ДОСа. Кажется есть встроеная защита, в сам ехе. Для ДОСа наверное. Только наверно, сам код не нашел. И обращения к драйверу HARDLOCK.VXD для Видны. На этом мои познание в этой проге заканчиваются ![]() ![]() ![]() |
|
Создано: 02 февраля 2007 11:26 · Личное сообщение · #2 God damn mothefuckers, у меня на этой машине (пока) softice не работает вместе с brs... Зато я вот что нашел: BRS_R.MSG (файлик сообщений): ... 1156 Ограниченная демо-версия 1157 Версия 1158 Учебная версия ... Вот где можно понять почему вызываецца именно такой мессаджэбокс... ----- The one derivative you manage is the one I abhore (c) Slipknot ![]() |
|
Создано: 02 февраля 2007 12:50 · Личное сообщение · #3 |
|
Создано: 02 февраля 2007 13:54 · Личное сообщение · #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 выдает сообщение "Система в демо-режиме (не доступен ключ)." при выборе "что не так?". ----- The one derivative you manage is the one I abhore (c) Slipknot ![]() |
|
Создано: 03 февраля 2007 01:50 · Личное сообщение · #5 |
|
Создано: 03 февраля 2007 08:15 · Поправил: tundra37 · Личное сообщение · #6 Chingachguk пишет: Вообще непонятно зачем в "brs" куски кода для работы с непонятным( хардлокк) ключом, который реально не вызываецца Что значит не вызывается. В проге, которую я ломал, после вызова hl_login и ответа "ключ не найден", никаких мессаджей не выдавалось, а шла проверка по сети. С таким же успехом и здесь может быть. Сама hl_login вызывает функции нижнего уровня. Я их никогда не копал, но почему им не быть одинаковым для хаспа и хардлока. Я же говорю : "вы копаете около цели" и похоже все дальше и дальше от нее. http://www.exelab.ru/f/action=vthread&forum=1&topic=3266&p age=0#2 Вот в этой ссылке описание структуры. Сразу за **CPG идет куча push (Сохранение регистров) и работа [BX+..] Похоже, что hl_login используется в более новых версиях. ![]() |
|
Создано: 04 февраля 2007 00:42 · Личное сообщение · #7 Сегодня запустил BRS.exe под ДОС. Но это ничего не значит. Фактически роль Виндов выполняет RTM и DPMI. В свое время я видел среду разработки от Борланда, которая работала в ДОС, но с графическим интерфейсом. Причем интерфейс был покруче чем в BRS - подобие ранних Вижуал Студий, только тормозной очень. Правда и проц был 386-й. ![]() |
|
Создано: 04 февраля 2007 03:47 · Личное сообщение · #8 |
|
Создано: 04 февраля 2007 03:49 · Личное сообщение · #9 |
|
Создано: 04 февраля 2007 03:58 · Личное сообщение · #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 Вот такие пироги... с котятами... ----- The one derivative you manage is the one I abhore (c) Slipknot ![]() |
|
Создано: 04 февраля 2007 23:13 · Личное сообщение · #11 |
|
Создано: 04 февраля 2007 23:39 · Личное сообщение · #12 |
|
Создано: 04 февраля 2007 23:50 · Поправил: Chingachguk · Личное сообщение · #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... был неаккуратен!! ----- The one derivative you manage is the one I abhore (c) Slipknot ![]() |
|
Создано: 04 февраля 2007 23:58 · Поправил: Chingachguk · Личное сообщение · #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 ----- The one derivative you manage is the one I abhore (c) Slipknot ![]() |
|
Создано: 05 февраля 2007 00:21 · Личное сообщение · #15 Chingachguk По поводу cseg44. Да не знаю, пеомойму ты таки прав, процедура в принципе похожа на обработку функций меню, там точно есть обработчики для "Удалить TMP" и "Выход". А почему у меня небыло рефов - у меня не до конца ида пропарсила даблицу оффсетов для свича или цилка, но там я не нашел блока со значениями для свича ![]() ; Это вроде бы вызываецца при выборе "Читать" (загрузить файл?) cseg23:056C call near ptr sub3087A_UseDxf2stg cseg23:056F add sp, 10h Скорее всего вызывается когда ты открываеш файл Dxf или stg (так же если и сохраняеш, насколько я понял, это двусторонний конвертор). По идее когда ты кликаеш на читать/добавить, вылезает окошко с выбором файла и типа, думаю с сохранить так же само ![]() |
|
Создано: 05 февраля 2007 00:24 · Личное сообщение · #16 Сейчас поищу использование таких строк 2019 Это демо-версия ! Обращайтесь к разработчикам: +380 44 254-4572 2050 Демо-версия: Количество граней и точек ограничено! 2051 Это демо-версия. Возможности ограничены... 3027 Система в демо-режиме (не доступен ключ). 3119 Это демонстрационная версия программы. 3138 Демо-версия INTEAR. Обращайтесь к разработчикам: +380 44 254-4572 3168 Демо-версия INTEAR. Обращайтесь к разработчикам:+380 44 254-4572 ![]() |
|
Создано: 05 февраля 2007 00:30 · Личное сообщение · #17 |
|
Создано: 05 февраля 2007 00:31 · Личное сообщение · #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 ![]() |
|
Создано: 05 февраля 2007 00:33 · Личное сообщение · #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 .. ![]() |
|
Создано: 05 февраля 2007 00:47 · Личное сообщение · #20 ![]() Впроочем я с тобой согласен, Chingachguk пишет: pps Также есть идея. Как известно, флаг wStrange1_if_noPROCTECT управляет раздизейбливанием "Сохранить obj"/"Сохранить все". Однако интересна было бы найти код который делает это и попытацца понять - может ли он раздизейблить кнопки по другому условию (когда флаг по-прежнему == 1). 1) либо юзается ринг ноль, и мы изменение этиого флага не увидим 2) либо юзается другой флаг 3) либо какойто из этих флагов модифится не в BRS.exe. Сам посуди, я не думаю что разраюотчик при наличии ключа будет вопить строку noPROCTECT Я попробую рыть от того же about-box при том условии что должно показатся не noPROCTECT а правильное "S/N" и бла0бла-бла ![]() |
|
Создано: 05 февраля 2007 01:23 · Поправил: Spry · Личное сообщение · #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] Аттач - два разных окна ![]() |
|
Создано: 05 февраля 2007 01:24 · Личное сообщение · #22 |
|
Создано: 05 февраля 2007 01:43 · Поправил: Chingachguk · Личное сообщение · #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 Там еще может выводицца "Учебная версия"... Интересна, как это так бы сделать... ----- The one derivative you manage is the one I abhore (c) Slipknot ![]() |
|
Создано: 05 февраля 2007 03:59 · Личное сообщение · #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 // все. ----- The one derivative you manage is the one I abhore (c) Slipknot ![]() |
|
Создано: 05 февраля 2007 05:01 · Личное сообщение · #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. Вырубило все пункты меню ![]() ![]() Эта память также чекается и далее. 2. Если поменять локальный флаг [bp+var_10] на 0E, то пункты меню доступны. Пока не проверил рабочие ли они... ----- The one derivative you manage is the one I abhore (c) Slipknot ![]() |
|
Создано: 05 февраля 2007 05:49 · Личное сообщение · #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 Если поправить соответствующим образом файлик, то все раздизейбливаецца... и вроде даже выполняецца... Ошибка должна уже быть именно из-за отсутствия глюча. Хардлокка я так и не увидел ![]() ----- The one derivative you manage is the one I abhore (c) Slipknot ![]() |
|
Создано: 05 февраля 2007 07:09 · Личное сообщение · #27 Chingachguk Так, погодь, сек, не спеши, а то тебя унесло, я за тобой мысленно не успеваю ![]() Тоесть ты хоч сказать что если отредактировать BRS_R.MNB по поводу дизейбла меню, то все будет ок? Типа даже чтото будет показыватся при нажатии на "Записать все"/"Записать объект"? Или возникли всетаки какието ошибки? Сори что сам туплю ![]() |
|
Создано: 05 февраля 2007 08:13 · Личное сообщение · #28 Chingachguk Ноффасть! ![]() ![]() ![]() ![]() |
|
Создано: 05 февраля 2007 08:18 · Личное сообщение · #29 Spry Ну я думаю что после того, как поставить в файлик "магические" чиселки - все должно работать кроме тех функций что защищены хазпом... о котором я уже столько говорил ![]() Есть также версия (просто в уме) что эти magic numbers ставит один из подчиненных модульков - как только обнаружит хазп. Или снимает, если его нет. ----- The one derivative you manage is the one I abhore (c) Slipknot ![]() |
|
Создано: 05 февраля 2007 08:29 · Личное сообщение · #30 |
|
Создано: 06 февраля 2007 00:21 · Личное сообщение · #31 |
<< . 1 . 2 . 3 . 4 . 5 . 6 . >> |
![]() |
eXeL@B —› Основной форум —› Можете посоветовать? Hardlock + под dos/win95 = как убрать? :) |