Как отследить метод JNI от Java до C? - PullRequest
1 голос
/ 24 апреля 2019

Итак, я пытаюсь провести обратный инжиниринг приложения.

Я отслеживаю метод JNI с именем Test_Method, который вызывает метод C из общего объекта,

В общем объекте,Я вижу, что имя метода Test_Method существует, но у него нет перекрестных ссылок.

Как найти метод из общего объекта, к которому обращается метод JNI из Java?

Ответы [ 2 ]

1 голос
/ 24 апреля 2019

Ищите список экспортируемых функций вашего файла DLL или около того. Если у него нет ряда функций с префиксом Java_com…, но вместо этого есть JNI_OnLoad, ваша нативная библиотека затем использует RegisterNatives () , и вы должны найти соответствующую таблицу со структурами JNINativeMethod который отображает нативные методы на функции C.

1 голос
/ 24 апреля 2019

Имя нативной функции, которая соответствует определенному нативному методу Java, детерминировано связано с именем метода Java, полным именем класса, в котором он находится, и типами его аргументов, если он перегружен. Подробности описаны в главе 2 спецификации JNI , но вместо того, чтобы разбираться с этим, может быть проще просто использовать javac -h (JDK 8 или новее) или javah* Инструмент 1006 * (устарел начиная с JDK 8, но все еще присутствует по крайней мере в JDK 9) для его генерации в форме файла заголовка C или C ++.

...