Так что я недавно изменил часть вредоносного ПО и понял, что могу использовать условную точку останова, которая прерывалась бы всякий раз, когда был установлен флаг нуля для конкретной команды jz. Я прочитал документацию в Интернете и в файле справки, который предоставляет olly, но не может найти примеров того, как я это сделаю. В онлайн-документации говорится, что регистры EFL или Flags могут использоваться в выражении watch/conditional breakpoint, но не упоминается, как обращаться к ним. Я пробовал простое выражение, такое как ZF == 1, а также ZF = 1 (на всякий случай, если я ошибался), и он не работал. Я искал google как сумасшедший и ничего, поэтому я надеюсь, что кто-то там нашел способ ссылаться на регистр флагов. Для тех из вас, кто задается вопросом, почему я не просто использую выражение без регистров флагов, мне более любопытно, как ссылаться на регистр флагов в том случае, когда я действительно нуждаюсь в нем.Ollydbg watch/условное выражение точки останова для регистров флагов?
Заранее благодарен!
Так выглядит версии 1.10 до версии 2.0 не позволяют реферирования на EFL, ни РЕГИСТР FLAGS р. Похоже, что он был добавлен только к версии 2.01. После некоторого тестирования я заметил, что мои часы, использующие регистр EFL и FLAGS, действительно показывали значения, которые я хотел. Как только я попытался создать условные точки останова, я столкнулся с проблемой, что их не ударили, несмотря на то, что регистр EFL был именно тем условием, которое я установил. – John
Я заметил, что для запуска этой условной точки останова мне пришлось добавить нормальную точку останова int3 до условного, чтобы заставить ее запускаться. Не могли бы вы узнать, почему я должен был бы добавить точку останова перед условным? Я нигде не упоминал об этом, и мне показалось странным, что нужно иметь условную точку останова. Большое вам спасибо за то, что он работает с 2.01, поскольку я использовал только v1.10 и v2.0. – John
@John Я проверил его еще раз (все еще на v2.01) и не смог воспроизвести вашу проблему: мой условный BP попал ** без ** любого «обычного» BP до него в моей тестовой программе (попробовал это на Windows 10 * calc.exe *; поместите несколько cond. BP на некоторые JZ и JNZ jcc и запустите программу прямо из точки входа). – Neitsa