Посл.ответ |
Сообщение |
Ранг: 419.0 (мудрец), 647thx Активность: 0.46↗0.51 Статус: Участник "Тибериумный реверсинг"
|
Создано: 10 декабря 2011 14:26 · Личное сообщение · #1
Обьясню просто: Допустим есть EAX = 00ABCDEF и ECX = 0000YYZZ. Какими логическими операциями можно срезать байты в EAX, чтобы вышло равным по количеству ненулевых байт в регистре ECX, т.е. результат EAX = 0000CDEF.
| Сообщение посчитали полезным: |
|
Ранг: 456.3 (мудрец), 340thx Активность: 0.28↘0.02 Статус: Участник Android Reverser
|
Создано: 10 декабря 2011 14:34 · Поправил: SaNX · Личное сообщение · #2
and eax, 0000FFFFh или вопрос о другом?
----- SaNX | Сообщение посчитали полезным: |
Ранг: 419.0 (мудрец), 647thx Активность: 0.46↗0.51 Статус: Участник "Тибериумный реверсинг"
|
Создано: 10 декабря 2011 14:38 · Личное сообщение · #3
Проблема в том, что конфигурация может быть любая. Т.е. имея только количество нулевых байт(или их отсутсвие) в ECX, требуется срезать эти байты в EAX. Если не ошибаюсь (где-то видел, но давно) что-то было типа: XOR EAX, 11111111h ... XOR ECX, 11111111h
| Сообщение посчитали полезным: |
Ранг: 456.3 (мудрец), 340thx Активность: 0.28↘0.02 Статус: Участник Android Reverser
|
Создано: 10 декабря 2011 14:49 · Личное сообщение · #4
Ну тогда юзай BSR
----- SaNX | Сообщение посчитали полезным: |
Ранг: 568.2 (!), 465thx Активность: 0.55↗0.57 Статус: Участник оптимист
|
Создано: 10 декабря 2011 14:59 · Личное сообщение · #5
/*407D54*/ MOV EAX,12345678 /*407D59*/ BSWAP EAX /*407D5B*/ XOR AX,AX /*407D5E*/ BSWAP EAX=======>00005678
----- Чтобы правильно задать вопрос, нужно знать большую часть ответа. Р.Шекли. | Сообщение посчитали полезным: |
Ранг: 590.6 (!), 408thx Активность: 0.36↘0.18 Статус: Модератор
|
Создано: 10 декабря 2011 15:02 · Личное сообщение · #6
ClockManЕсли я правильно понял, нужно привести EAX к виду маски в зависимости от ненулевых байт. А так можно и цикл организовать и ror+and
----- старый пень | Сообщение посчитали полезным: |
Ранг: 456.3 (мудрец), 340thx Активность: 0.28↘0.02 Статус: Участник Android Reverser
|
Создано: 10 декабря 2011 15:14 · Личное сообщение · #7
ClockMan, r_eога, надо чтоб если ECX = 000YYYZZ, то EAX = 000BCDEF ECX = 00000YZZ, то EAX = 00000DEF ну и т.д. Я бы через БСР сделал и свитчом выбирал бы маску для AND. Ну типа BSR edx, ecx и в зависимости от байта в edx делать маску.
----- SaNX | Сообщение посчитали полезным: |
Ранг: 568.2 (!), 465thx Активность: 0.55↗0.57 Статус: Участник оптимист
|
Создано: 10 декабря 2011 15:34 · Личное сообщение · #8
SaNX пишет: ога, надо чтоб если ECX = 000YYYZZ, то EAX = 000BCDEFECX = 00000YZZ, то EAX = 00000DEF А ему надо было по условию, а нетупо обрезать тогда сории недопонял вопрос.
----- Чтобы правильно задать вопрос, нужно знать большую часть ответа. Р.Шекли. | Сообщение посчитали полезным: |
Ранг: 533.6 (!), 232thx Активность: 0.45↘0 Статус: Uploader retired
|
Создано: 10 декабря 2011 15:50 · Личное сообщение · #9
Насколько я понял, то нужно что-то такое
----- Лучше быть одиноким, но свободным © $me | Сообщение посчитали полезным: |
Ранг: 251.3 (наставник), 81thx Активность: 0.14↘0.11 Статус: Участник
|
Создано: 10 декабря 2011 16:42 · Личное сообщение · #10
В BSR операнды идут в другом порядке: BSR DEST_REG, WHAT_TO_SCAN_R_M Если в маске (ECX) будет 0 - поведение не определено. И даже если закрыть на всё это глаза, всё равно не прокатит: EAX = 00ABCDEF ECX = 00000020
И того получили EAX=2F, а должны были получить EAX=E0 Вот как вариант:
| Сообщение посчитали полезным: |
Ранг: 419.0 (мудрец), 647thx Активность: 0.46↗0.51 Статус: Участник "Тибериумный реверсинг"
|
Создано: 10 декабря 2011 16:57 · Личное сообщение · #11
Выходит без цикла никак ?! Кул-хакерское решение not present ?
| Сообщение посчитали полезным: |
Ранг: 251.3 (наставник), 81thx Активность: 0.14↘0.11 Статус: Участник
|
Создано: 10 декабря 2011 17:01 · Личное сообщение · #12
Ну цикл развернуть можно. Чисто логическими операциями вроди никак.
| Сообщение посчитали полезным: |
Ранг: 462.8 (мудрец), 468thx Активность: 0.28↘0 Статус: Участник Only One!
|
Создано: 10 декабря 2011 17:05 · Личное сообщение · #13
ELF_7719116 пишет: Выходит без цикла никак ?! Кул-хакерское решение not present ? Выложи наконец прогу.. Если тебе это надо... На конкретном примере (вопросе) будет дан конкретный ответ.. Что ты стебаешся? ELF_7719116 пишет: Кул-хакерское решение not present ? Я б тебе его озвучил, да боюсь за мат забанят...
----- aLL rIGHTS rEVERSED! | Сообщение посчитали полезным: |
Ранг: 793.4 (! !), 568thx Активность: 0.74↘0 Статус: Участник Шаман
|
Создано: 10 декабря 2011 19:47 · Поправил: PE_Kill · Личное сообщение · #14
Для байтов:
Для полубайтов добавить сдвиги.
----- Yann Tiersen best and do not fuck | Сообщение посчитали полезным: |
Ранг: 105.6 (ветеран), 36thx Активность: 0.1↘0 Статус: Участник
|
Создано: 10 декабря 2011 19:59 · Поправил: Dart Sergius · Личное сообщение · #15
удалено сори PE_kill поздно заметил ошибку(тестил не на тех числах)
| Сообщение посчитали полезным: |
Ранг: 793.4 (! !), 568thx Активность: 0.74↘0 Статус: Участник Шаман
|
Создано: 10 декабря 2011 20:13 · Личное сообщение · #16
Dart Sergiuseax = 00ABCDEF ecx = 00001234
----- Yann Tiersen best and do not fuck | Сообщение посчитали полезным: |
Ранг: 50.0 (постоянный), 31thx Активность: 0.09↗0.1 Статус: Участник
|
Создано: 13 декабря 2011 02:27 · Личное сообщение · #17
кодес для полубайтов
| Сообщение посчитали полезным: |