What's new
Runion

This is a sample guest message. Register a free account today to become a member! Once signed in, you'll be able to participate on this site by adding your own topics and posts, as well as connect with other members through your own private inbox!

Как обмануть декомпиллер иды?

D3buG

Light Weight
Депозит
$0
Всем привет, пишу морфер, сейчас на этапе сокрытия констант.
Есть такой код:
C: Скопировать в буфер обмена
Code:
int fun(unsigned int a, int b, int c) {
    return a + b + c;
}

int main() {
    unsigned int a = 5;
    int b = 88;
    int c = 13;

    if (c == 13)
        fun(a, b, c);
    return 0;
}

После компила он превращается в такое:
1.PNG


Четко видны константы и составить псевдокод даже для человека не составляет труда. После обфускации это выглядит так:
2.PNG


Нужные константы исчезают и появляется куча случайных арифметических операций, после которых константы снова вернуться.
Однако в псевдокоде ида сразу их расчитывает:
3.PNG



Главный вопрос: как запудрить декомпилятор иды? Количество арифметических действий, взаимодействие со стэком/регистрами не помогает.
Наверняка есть какой-то финт ушами. Теоретически можно добавить вызов какой-то функции с известным результатом и его использовать, только поможет ли это?
Если есть какие-то идеи, то буду рад прочитать
 
Top