Сейчас на форуме: jinoweb (+6 невидимых) |
eXeL@B —› Программирование —› Оптимизация циклического сдвига (R&L), и циклического сдвига(R&L) через флаг переноса. |
Посл.ответ | Сообщение |
|
Создано: 30 августа 2018 23:55 · Личное сообщение · #1 На выходе из алго деобффускации остаётся такой код: Code:
по коду понятно что сейвят состояние каждого регистра флага. можно это завернуть в табличку по кейсам. но не хотелось бы, всё таки диапазон констант от 1 до 3f, + в обе стороны, а это чего то дофига.. циклический сдвиг есть также в связке с проверкой CF, а так же в место него бывает сдвиг двойной точности. Code:
не могу уловить зависимость константы для каждого регистра флага. ХЕЛП !!! ----- Чтобы юзер в нэте не делал,его всё равно жалко.. |
|
Создано: 31 августа 2018 02:04 · Поправил: f13nd · Личное сообщение · #2 Не понял даже что сделать надо. rcr/rcl сдвигает через CF, последний перенесенный бит в нем остается. ror/rol то же самое, но CF просто дублирует последний перенесенный бит. Соответственно ror rax,3/rcr rax,3/rol rax,62/rcl rax,62 помещает в CF второй бит, PF то есть. Бит 2 это сдвиг вправо на 2+1 или влево на 64-2, эту ты закономерность ищешь? Оптимизацией было бы тупо крутить на 1-2 бита вправо ror'ом и заполнять все поля подряд. ----- 2 оттенка серого | Сообщение посчитали полезным: Bronco |
|
Создано: 31 августа 2018 04:44 · Поправил: Bronco · Личное сообщение · #3 f13nd пишет: Не понял даже что сделать надо да тупо свернуть это гавнище к обычной проверке бита (bt). операнд известен, осталось только разобраться какой бит сдвигом проверяют. 1, 3, 5, 22 - 63 пока в резерве, после флага переполнения что доступно на уровне юм кода? итого 9 регистров, TF пока не проверяют. как комби на сдвиге построить хз, по ходу невозможно. всё что в остатке, и перекрывается либо записью в рфлагс, либо в регистры, можно смело удалять из листинга. f13nd пишет: Соответственно ror rax,3/rcr rax,3/rol rax,62/rcl rax,62 отличная мысль, круг подозреваемых сузился, но как то так точнее будет.: ror rax, 0xA или rol rax, 0x36 //3f - a +1, от большего к меньшему так же само. для rcr&rcl аналогично. для сдвигов 2й точности надо проверить. ----- Чтобы юзер в нэте не делал,его всё равно жалко.. |
|
Создано: 31 августа 2018 05:04 · Личное сообщение · #4 |
|
Создано: 31 августа 2018 05:17 · Личное сообщение · #5 f13nd пишет: А зачем? шлака много, часть доступна для свёртки, а что то и с "не известным". часть полезные а остальное гавнище. если нужные отфильтровать и преобразовать в другую группу инстр, до других "дотянуться" уже не сложно. так то проверка бита чем медленней? ----- Чтобы юзер в нэте не делал,его всё равно жалко.. |
|
Создано: 31 августа 2018 05:32 · Поправил: f13nd · Личное сообщение · #6 |
|
Создано: 31 августа 2018 05:51 · Поправил: Bronco · Личное сообщение · #7 f13nd пишет: это еще по-божески выглядит дык...так это после марафета, а так то пуш_поп редко в одну инструкцию. f13nd пишет: 2 байта вместо 3 в х32 да, в х64 поболе бу..)) f13nd пишет: Хотя красивше было бы крутить влево-вправо в зависимости от текущего состояния и обойтись без пушпопов. крутить не получиться, пушапопом сейвят_проверяют_бит_восстанавливают. а гавнище в остатке выглядит где так: Code:
ну это тоже после марафета.. ----- Чтобы юзер в нэте не делал,его всё равно жалко.. |
|
Создано: 31 августа 2018 15:49 · Поправил: f13nd · Личное сообщение · #8 Bronco пишет: сейвят_проверяют_бит_восстанавливают Сейвят чтоб с текущим состоянием не морочиться, а крутить можно и в любом порядке забирать: Code:
Bronco пишет: в х32 да, в х64 поболе бу.. Code:
2 против 3 в х64 ----- 2 оттенка серого |
eXeL@B —› Программирование —› Оптимизация циклического сдвига (R&L), и циклического сдвига(R&L) через флаг переноса. |