Сейчас на форуме: UniSoft, laslo, bartolomeo (+5 невидимых)

 eXeL@B —› Программирование —› узнать, что изменился регистр флагов
Посл.ответ Сообщение

Ранг: 7.4 (гость)
Активность: 0=0
Статус: Участник

Создано: 10 февраля 2006 14:31
· Личное сообщение · #1

Привет всем, ситуация такая:
есть рандомный кусок кода, например мусор какой нибудь
проге скармливается точка входа на этот мусор, также известен размер мусорного кода
Нужно программно определить, входили ли в этот мусор команды, изменяющие состояние регистра флагов с целью восстановления его в исходное состояние.
Все было бы зашибись, но состояние регистра флагов на момент точки входа в мусор неизвестно
Пока что на ум приходит только распознавание команд как либо влияющих на флаги и вести базу типа
команда - такие то флаги, и на ее основе восстанавливать регистр, но интересно, может кому то в голову придут другие идеи?
с Уважением




Ранг: 199.6 (ветеран), 12thx
Активность: 0.10
Статус: Участник
www.uinc.ru

Создано: 10 февраля 2006 14:41
· Личное сообщение · #2

> входили ли в этот мусор команды, изменяющие состояние регистра флагов

Обычный дизассемблер + список команд, меняющих флаги (их не так уж и много)



Ранг: 64.6 (постоянный)
Активность: 0.020
Статус: Участник

Создано: 10 февраля 2006 14:59
· Личное сообщение · #3

BLiND RAGE пишет:
есть рандомный кусок кода, например мусор какой нибудь
проге скармливается точка входа на этот мусор

Так где же проблема? Сделай первой командой это мусорного кода PUSHF а в конце этого мусорного кода (ты ведь знаешь его размер) сделай POPF.



Ранг: 28.6 (посетитель)
Активность: 0.010
Статус: Участник

Создано: 10 февраля 2006 15:17
· Личное сообщение · #4

DrGolova
А еще не забыть про то, что флаги можно изменить и обычным mov, через структуру CONTEXT .
А если она меняется еще не через SetThreadContext, а через SEH фрейм, то как-то уже все не безоблачно выглядит в плане легкости отслеживания



Ранг: 352.4 (мудрец), 4thx
Активность: 0.150
Статус: Участник
retired

Создано: 10 февраля 2006 15:29
· Личное сообщение · #5

а еще pushf/изменение сохраненных флагов в стеке/popf



Ранг: 7.4 (гость)
Активность: 0=0
Статус: Участник

Создано: 10 февраля 2006 15:47
· Личное сообщение · #6

DrGolova пишет:
Обычный дизассемблер + список команд, меняющих флаги (их не так уж и много)

я в принципе это и имел ввиду под распознаванием
inferno_mteam пишет:
А еще не забыть про то, что флаги можно изменить и обычным mov, через структуру CONTEXT

нет, таких вариантов точно непридется обрабатывать
Step пишет:
Сделай первой командой это мусорного кода PUSHF а в конце этого мусорного кода (ты ведь знаешь его размер) сделай POPF

восстановление должно происходить только в случае если флаги могли поменяться, причем надо учитывать случаи когда при одних значениях регистров флаг измениться а при других - нет, так как заранее я незнаю их значения

значит буду делать первый вариант, по нему тоже вопрос в догонку, в опкоде нет такого бита который указывает процу будет меняться флаговый регистр или нет? Или придется составлять таблицу команд которые влияют на флаг?



Ранг: 28.6 (посетитель)
Активность: 0.010
Статус: Участник

Создано: 10 февраля 2006 16:21
· Личное сообщение · #7

>значит буду делать первый вариант, по нему тоже вопрос в догонку, в опкоде нет такого бита который указывает процу будет меняться флаговый регистр или нет?
Нет
>Или придется составлять таблицу команд которые влияют на флаг?
Да



Ранг: 352.4 (мудрец), 4thx
Активность: 0.150
Статус: Участник
retired

Создано: 10 февраля 2006 16:29
· Личное сообщение · #8

BLiND RAGE
а что ты такое ковыряешь?



Ранг: 7.4 (гость)
Активность: 0=0
Статус: Участник

Создано: 10 февраля 2006 17:37
· Личное сообщение · #9

ssx
Да я вообще то не ковыряю а пишу нечто, сам еще незнаю что : )
думаю накидать какойнить более-менее универсальный движ на создание - разгребание мусора, а что получится - там посмотрим



Ранг: 60.4 (постоянный)
Активность: 0.030
Статус: Участник

Создано: 10 марта 2006 17:56
· Личное сообщение · #10

А как насчёт lahf/sahf?



Ранг: 1.0 (гость)
Активность: 0=0
Статус: Участник

Создано: 10 марта 2006 23:53
· Личное сообщение · #11

BLiND RAGE пишет:
причем надо учитывать случаи когда при одних значениях регистров флаг измениться а при других - нет, так как заранее я незнаю их значения

А может все таки постараться узнать значение регистра флагов? Например, выполнением кода с EP. Да и помоему тут дизассемблером не обойтись. Например, inc eax - ты не знаешь значение eax, а может оно равно -1 и при выполнении данной инструкции будет установлен бит Z в регистре флагов.



Ранг: 0.0 (гость), 1thx
Активность: 0=0
Статус: Участник

Создано: 21 октября 2011 01:08
· Личное сообщение · #12

Без таблиц никак видимо. Тоже такая проблема давно в очереди.




Ранг: 793.4 (! !), 568thx
Активность: 0.740
Статус: Участник
Шаман

Создано: 21 октября 2011 03:11
· Личное сообщение · #13

Наркоман чтоле? Медиану возьми.

-----
Yann Tiersen best and do not fuck




Ранг: 0.0 (гость), 1thx
Активность: 0=0
Статус: Участник

Создано: 21 октября 2011 08:46
· Личное сообщение · #14

PE_Kill
Медиана никуда не годный дизасм. Там данные запилены в коде, он не пермутирующий.




Ранг: 2014.5 (!!!!), 1278thx
Активность: 1.340.25
Статус: Модератор
retired

Создано: 21 октября 2011 10:39
· Личное сообщение · #15

По-твоему, может, и винда никуда никуда не годится, потому что она не пермутирующая?
З.Ы. Неплохо на дату поглядывать, а потом уже апать топик.




Ранг: 793.4 (! !), 568thx
Активность: 0.740
Статус: Участник
Шаман

Создано: 21 октября 2011 10:39
· Личное сообщение · #16

Ты ответил на сообщение от 2006 года, причем именно ответил, некрофилия это.

А насчет пермутации, это не вирусный дизасм, а реверсерский, собственно и форум это реверсеров и вопросы реверсерские и ответы так же.

-----
Yann Tiersen best and do not fuck



 eXeL@B —› Программирование —› узнать, что изменился регистр флагов
Эта тема закрыта. Ответы больше не принимаются.
   Для печати Для печати