Сейчас на форуме: UniSoft, laslo, bartolomeo (+5 невидимых) |
eXeL@B —› Программирование —› узнать, что изменился регистр флагов |
Посл.ответ | Сообщение |
|
Создано: 10 февраля 2006 14:31 · Личное сообщение · #1 Привет всем, ситуация такая: есть рандомный кусок кода, например мусор какой нибудь проге скармливается точка входа на этот мусор, также известен размер мусорного кода Нужно программно определить, входили ли в этот мусор команды, изменяющие состояние регистра флагов с целью восстановления его в исходное состояние. Все было бы зашибись, но состояние регистра флагов на момент точки входа в мусор неизвестно Пока что на ум приходит только распознавание команд как либо влияющих на флаги и вести базу типа команда - такие то флаги, и на ее основе восстанавливать регистр, но интересно, может кому то в голову придут другие идеи? с Уважением |
|
Создано: 10 февраля 2006 14:41 · Личное сообщение · #2 |
|
Создано: 10 февраля 2006 14:59 · Личное сообщение · #3 |
|
Создано: 10 февраля 2006 15:17 · Личное сообщение · #4 |
|
Создано: 10 февраля 2006 15:29 · Личное сообщение · #5 |
|
Создано: 10 февраля 2006 15:47 · Личное сообщение · #6 DrGolova пишет: Обычный дизассемблер + список команд, меняющих флаги (их не так уж и много) я в принципе это и имел ввиду под распознаванием inferno_mteam пишет: А еще не забыть про то, что флаги можно изменить и обычным mov, через структуру CONTEXT нет, таких вариантов точно непридется обрабатывать Step пишет: Сделай первой командой это мусорного кода PUSHF а в конце этого мусорного кода (ты ведь знаешь его размер) сделай POPF восстановление должно происходить только в случае если флаги могли поменяться, причем надо учитывать случаи когда при одних значениях регистров флаг измениться а при других - нет, так как заранее я незнаю их значения значит буду делать первый вариант, по нему тоже вопрос в догонку, в опкоде нет такого бита который указывает процу будет меняться флаговый регистр или нет? Или придется составлять таблицу команд которые влияют на флаг? |
|
Создано: 10 февраля 2006 16:21 · Личное сообщение · #7 |
|
Создано: 10 февраля 2006 16:29 · Личное сообщение · #8 |
|
Создано: 10 февраля 2006 17:37 · Личное сообщение · #9 |
|
Создано: 10 марта 2006 17:56 · Личное сообщение · #10 |
|
Создано: 10 марта 2006 23:53 · Личное сообщение · #11 BLiND RAGE пишет: причем надо учитывать случаи когда при одних значениях регистров флаг измениться а при других - нет, так как заранее я незнаю их значения А может все таки постараться узнать значение регистра флагов? Например, выполнением кода с EP. Да и помоему тут дизассемблером не обойтись. Например, inc eax - ты не знаешь значение eax, а может оно равно -1 и при выполнении данной инструкции будет установлен бит Z в регистре флагов. |
|
Создано: 21 октября 2011 01:08 · Личное сообщение · #12 |
|
Создано: 21 октября 2011 03:11 · Личное сообщение · #13 |
|
Создано: 21 октября 2011 08:46 · Личное сообщение · #14 |
|
Создано: 21 октября 2011 10:39 · Личное сообщение · #15 |
|
Создано: 21 октября 2011 10:39 · Личное сообщение · #16 |
eXeL@B —› Программирование —› узнать, что изменился регистр флагов |
Эта тема закрыта. Ответы больше не принимаются. |