Оригинальный DVD-ROM: eXeL@B DVD !
eXeL@B ВИДЕОКУРС !

ВИДЕОКУРС ВЗЛОМ
выпущен 2 июня!


УЗНАТЬ БОЛЬШЕ >>
Домой | Статьи | RAR-cтатьи | FAQ | Форум | Скачать | Видеокурс
Новичку | Ссылки | Программирование | Интервью | Архив | Связь

АРХИВ ФОРУМА eXeL@B
https://exelab.ru/f/

   

X0E-2003 Народ поможите с инструкцией в asm’е Допустим в программе такой код:


X0E-2003 Народ поможите с инструкцией в asm’е Допустим в программе такой код:

and eax, dword ptr [ebx]

;eax = 401281
;ebx = 4408001

Если мы проэндим EAX с EBX у нас получится 400001
Вопрос, можно ли зная значение 400001, 4408001 как нибудь найти [401281]
или команда не обратима. Если необратима, то почему программеры не используют AND вместо XOR ???

Aster!x :: Во-первых, не eax с ebx, а eax с тем DWORD’ом что лежит в памяти по адресу == ebx.
Во-вторых, команда and не обратима, почему так можешь поразмышлять сам, только
учти что and - команда побитовая.
Собственно вот тебе табличка:
0 and 0 = 0
0 and 1 = 0
1 and 0 = 0
1 and 1 = 1

› Если необратима, то почему программеры не используют AND вместо XOR

Вот по этому и не используют

MoonShiner :: Ну а почему ты не вместо mov-a не юзаешь cmp? :) xor и and - разные команды... And - побитовое умножение операндов и заменить xor чем-то mov-ным можно, но нафига? А команда необратима... В редких случаях можно восстановить eax. Обьясняю почему:
Пусть есть eax и ebx. Ты делаешь and eax, ebx. Далее, ты раскладываешь по битам получившийся eax и ebx и хочешь получить изначальное значение eax. Смысл в том, что если ты посмотришь на какой нибудь 0 в разложении получившегося eax, и в разложении ebx на этом месте тоже стоит 0, то ты не можешь сказать, какая цифра была в этом месте в изначальном eax. Может быть как 0, так и 1 (»...побитовое умножение...»).






   
Оригинальный DVD-ROM: eXeL@B DVD !


Вы находитесь на EXELAB.rU
Проект ReactOS