Сейчас на форуме: (+7 невидимых) |
eXeL@B —› Крэки, обсуждения —› FoxPro |
Посл.ответ | Сообщение |
|
Создано: 21 ноября 2004 14:02 · Личное сообщение · #1 Есть программа на FoxPro. Регистрация зависит от UIN, который генерируется от харддиска. Есть кусок где идет проверка: lregno = IIF(nregno = VAL(SYS(2007, *error*(this.snhard + SYS(1277, "This.SNHard"), (BITXOR(nregno, VAL(this.snhard)))), 1)), .T., .F.) !_err=0xBB_! 266 smaskstring = "0123456789ABCDEF" nmask = LEN(smaskstring) FOR i = 1 TO nmask this.snhard = CHRTRAN(this.snhard, SUBSTR(smaskstring, i, 1), SUBSTR(smaskstring, nmask - i, 1)) ENDFOR lregno = IIF(nregno = VAL(SYS(2007, this.snhard + "71", 1, 1)), .T., lregno) !_err=0xBE_! RETURN lregno snhard это ID хардиска nreno это введенный рег код. непонятно что означает this. при попытке компилирования этого кода, выпадает ошибка что строчка: lregno = IIF(nregno = VAL(SYS(2007, *error*(this.snhard + SYS(1277, "This.SNHard"), (BITXOR(nregno, VAL(this.snhard)))), 1)), .T., .F.) Missing Operand. кто сечет в фоксе, может объяснить мне че ему нуно ? |
|
Создано: 22 ноября 2004 00:39 · Поправил: RideX · Личное сообщение · #2 BiSHEP пишет: непонятно что означает this Ссылка на текущий объект для события, процедуры, свойства. Может попробовать убрать this, а переменную просто snhard определить в начале модуля как строковую, snhard = ""? Может snhard встречается ещё в каком-нибудь модуле, а здесь указывается имеено на эту? |
|
Создано: 22 ноября 2004 00:52 · Личное сообщение · #3 |
|
Создано: 22 ноября 2004 05:59 · Личное сообщение · #4 Прога с encr I+ декомпилировал с помощью ReFox MMII и тулзой Derefox c функцией Cheat Password. При дебаге строчке !_err=0xBB_! 266 запускается какой-то .pif и трэйсится дальше. В начале модуля стоит snhard = "" потом в него заносится ID харда = 694707048860 интересно узнать как действует строчка IIF(nregno = VAL(SYS(2007, *error*(this.snhard + SYS(1277, "This.SNHard"), (BITXOR(nregno, VAL(this.snhard)))), 1)), .T., .F.) непонятно...что с чем сравнивается и что возврощается |
|
Создано: 22 ноября 2004 07:59 · Личное сообщение · #5 BiSHEP Попробуй декомпилировать UnFoxAll 3 Professional, может он без ошибок декомпилирует, взять можно на васме в разделе декомпилеров с этой страницы wasm.ru/toollist.php?list=18 Я им пользовался, отзывы положительные IIF возвращает одно из двух значений, в зависимости от значения данного логического выражения. Функция SYS(2007)возвращает значение контрольной суммы символьного выражения, что-то вроде CRC строки. BITXOR(nregno, VAL(this.snhard)) возвращает результат побитовой операции исключающего ИЛИ (XOR), выполненной над двумя числовыми значениями. SYS(1277) не знаю что такое Может что-то из Fox'a последних версий, у меня только 6 версии где-то валяется, новее нет. BiSHEP пишет: что с чем сравнивается и что возврощается Наверное так: if nregno == VAL(...) lregno = TRUE; else lregno = FALSE; |
|
Создано: 22 ноября 2004 08:11 · Личное сообщение · #6 |
|
Создано: 22 ноября 2004 08:45 · Личное сообщение · #7 Так с помощью Corso 5.1 снял крипто, засэйвил файл, Refox его неберт, а UnFoxAll показал эти строчки вот так: PROCEDURE CheckReg * ??? UNKNOWN COMMAND WORD: [$BAH] LREGNO = ; IIF(NREGNO = ; VAL(SYS(2007 / ; ACCESS(THIS.SNHARD + SYS(1277,'This.SNHard'),(BITXOR(NREGNO,VAL(THIS.SNHARD)))),1)),.T.,.F. ) * ??? UNKNOWN COMMAND WORD: [$BBH] SMASKSTRING = '0123456789ABCDEF' NMASK = LEN(SMASKSTRING) FOR I = 1 TO NMASK THIS.SNHARD = ; CHRTRAN(THIS.SNHARD,SUBSTR(SMASKSTRING,I,1),SUBSTR(SMASKSTRING,NMASK - I,1)) ENDFOR LREGNO = IIF(NREGNO = VAL(SYS(2007,THIS.SNHARD + '71',1,1)),.T.,LREGNO) * ??? UNKNOWN COMMAND WORD: [$BEH] RETURN LREGNO ENDPROC Фокс терь, бля, пиздит на ту строчку что Too many arguments |
|
Создано: 22 ноября 2004 08:56 · Личное сообщение · #8 |
|
Создано: 22 ноября 2004 09:01 · Личное сообщение · #9 |
|
Создано: 11 декабря 2004 16:13 · Личное сообщение · #10 |
|
Создано: 10 февраля 2005 07:22 · Личное сообщение · #11 Обычно енто делается так: IF .NOT. ALLTRIM(SYS(2007, ; SYS(2007, ALLTRIM(<вводимый пароль>)))) == ; ALLTRIM(<Контрольная сумма контрольной суммы>) IF .NOT. MESSAGEBOX('Повторить попытку?',036,'Неверный пароль')=6 thisform.release ENDIF чтобы енту херь вскрыть делается так: for i=1 to 99999999 IF ALLTRIM(SYS(2007, ; SYS(2007, ALLTRIM(str(i))))) == ; ALLTRIM(<Контрольная сумма контрольной суммы>) ? 'Наш пароль: '+str(i) endif endfor вчем фишка конторольная сумма это число DWORD и одно значение равно разным комбинациям, взлом осуществляется в течении 45 секунд самых навороченных паролей (проверено не раз) а в твоем случаи надо просто воткнуть вместо ентого всего: lregno = .F. RETURN lregno |
eXeL@B —› Крэки, обсуждения —› FoxPro |