Двойная проверка включительно или заявления - PullRequest
2 голосов
/ 18 июля 2011

Ну, я только что сделал вопрос, спрашивая, как просто ~(i + -1) < -1 что оказалось i > 1

Создание деобфускатора JAVA и вот что у меня есть до сих пор ... Я просто хочу, чтобы люди сказали мне, какие из них я сделал неправильно? если есть, то просто двойная проверка.

~i > -1 - это i < 0

~i < -1 является i > 0

~i > ~classA.var является i < classA.var

~i >= ~j - это i <= j

~i <= ~b - это i >= b

~i == -1 - это i == 0

~classA.var < -1 is classA.var > 0

~classA.var > -1 is classA.var < 0

~classA.var == ~classB.var is classA.var == classB.var

~(-1 + i) < -1 is i > 1

~(i + -1) < -1 is i > 1

~(i & 0x22) != -1 - это (i & 0x22) == 0 <- кажется <code>wrong ..

Кажется, правильный ответ Eng.Fouad is

~(i & 0x22) != -1 равно (i & 0x22) != 0 <- пока правильно. </p>

Это все паттерны, которые пока поддерживает мой деобфускатор .. вероятно, найдет еще кучу.

(Есть какие-то неправильные?) Боюсь, что те, у кого == знаки, могут ошибаться ... Я проверил их, и они, кажется, работают ..

Спасибо, я ценю поддержку, я новичок в программировании, программируемом только полгода, и математика не моя сильная сторона.

1 Ответ

1 голос
/ 18 июля 2011

Просто замените каждый ~x на -x - 1:

  • ~i > -1 ==> -i - 1 > -1 ==> -i > 0 ==> i < 0
  • ~i < -1 ==> -i - 1 < -1 ==> -i < 0 ==> i > 0

и т. Д.

...