LINUX.ORG.RU

Поиск исполняемого кода нативного метода в библиотеке *.so

 , , , ,


0

2

Доброго вечера! При реверсе одного занятного приложения под андроид наткнулся на такую проблему. Из жавы происходит вызов нативного метода func(int i) из библиотеки xxx.so. Но данный метод отсутствует в списке экспортируемых этой библиотеки. Как так? Ведь когда мы объявляем нативный метод в жаве используя JNI, то пишем так:

extern "C"
JNIEXPORT jstring
JNICALL
Java_com_test_MainActivity_stringFromJNI(
        JNIEnv *env,
        jobject /* this */) {
    std::string hello = "Hello from C++";
    return env->NewStringUTF(hello.c_str());
}

И этот метод оказывается в списке экспортируемых. Значит можно как то по-другому объявить и спрятать метод? Не используя JNI? И если спрятали, то как искать непосредственно код метода среди всего этого ARM-ассемблерного шлака? Спасибо!

Но данный метод отсутствует в списке экспортируемых этой библиотеки.

А откуда тогда известно, что он должен быть в этой библиотеке?

У неё кстати зависимостей нету? Может эта функция определена в какой-то из них (так, вроде, тоже работать должно).

xaizek ★★★★★
()
Ответ на: комментарий от xaizek

А откуда тогда известно, что он должен быть в этой библиотеке?

Потому что других библиотек приложение просто не имеет.

Nebesny
() автор топика

Из жавы происходит вызов нативного метода func(int i) из библиотеки xxx.so. Но данный метод отсутствует в списке экспортируемых этой библиотеки.

А он реально вызывается и исполняется во время работы или такой вызов только в коде есть?

Еще вариант, что в системе есть несколько либ с таким названием и надо смотреть откуда какая берется.

praseodim ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.