Тема: assembler
Показать сообщение отдельно
Непрочитано 30.10.2008, 00:46   #7
getting_up Мужской

 
Буду тут жить
Регистрация: 20.08.2007
Адрес: Медведево
Сообщений: 89
pm
По умолчанию Re: assembler

кароч процедура проверки пароля:
Код:
seg000:0121                 mov     si, 0
seg000:0124                 mov     cx, 9

seg000:0127 loc_127:                                
seg000:0127                 mov     bl, [si+100h]
seg000:012B                 add     [si+117h], bl
seg000:012F                 mov     bh, [si+17Dh]
seg000:0133                 xor     [si+163h], bh
seg000:0137                 add     byte ptr [si+163h], 99h
seg000:013C                 inc     si
seg000:013D  loop    loc_127
...
seg000:0140                 lea     si, byte_117
seg000:0144                 lea     di, 163h 
...
seg000:014B                 repe cmpsb   ; сравнить строки, равны - ОК
...
Тык. Если представить память по этим адресам массивами [1..9] of byte - получится вроде

hash - серия байт по смещению 117h, (шифрованный пароль)
keyA - серия байт по смещению 100h (просто кусок кода)
keyB - слово "password:" по смещению 163h
buff - введёный пароль

Алгоритм:
hash[i] := hash[i] + keyA[i];
keyB[i] := keyB[i] xor buff[i];
keyB[i] := keyB[i] + 99;
if hash = keyB then OK

KeyB[i] = (hash[i]-99h) xor Buff[i]
готово

ЗЫ оказывается не так уж и сложно)
getting_up вне форума   Ответить с цитированием