Вы знаете, как рассчитать это? Я не уверен, как преобразовать 0x4014 в значение 5. Может быть, где-нибудь есть документация по этой теме?

тоящее время я изучаю smali / "кодовый обфускатор" и сейчас пытаюсь ознакомиться с декомпилированными исходными кодами. Для этого я создал простое приложение и распаковал его с помощью smali.

Сейчас я пытаюсь понять декомпилированный исходный код, чтобы улучшить и сравнить безопасность (против декомпиляции) после использования обфускатора кода позже. Хотя большая часть исходного кода smali не так сложна, у меня все еще иногда возникают проблемы с преобразованием формата рисунков.

Можете ли вы объяснить мне, например, следующая строка. Я предполагаю, что оно должно иметь значение пять, но я не уверен, какой это двоичный формат. Как рассчитать это 0x4014 = 5 ???

const-wide/high16 v0, 0x4014       // 100000000010100        (5 = 101)

Прилагаются полные исходные коды java и smali для этой тестовой функции:

Источник Java:

 boolean test(int a, double d) {
        if (a < 5 && d < 5)
            return true;
        else 
            return false;
    }

Смали источник:

.method test(ID)Z
    .locals 2
    .parameter "a"
    .parameter "d"

    .prologue
    .line 28
    const/4 v0, 0x5

    if-ge p1, v0, :cond_0

    const-wide/high16 v0, 0x4014

    cmpg-double v0, p2, v0

    if-gez v0, :cond_0

    .line 29
    const/4 v0, 0x1

    .line 31
    :goto_0
    return v0

    :cond_0
    const/4 v0, 0x0

    goto :goto_0
.end method

Ответы на вопрос(3)

Ваш ответ на вопрос