有点像这个问题How to lock compiled Java classes to prevent decompilation?,但是我很清楚如何反编译一个应用程序,并试图理解它,即使它是模糊的,但有一件事我不太确定的是,如果应用程序使用jni加载C库(.so文件),同一个进程将如何工作。
例如,假设有一个计算器,如果这个计算器是用纯java构建的,那么它可能会进入并弄乱平方根按钮,这样当你输入2时,它会返回2^3,而不是2^2。
现在,如果这个应用程序使用JNI来执行所有这些数学命令(因此它将2传递给了一个本机方法),那么您将如何进入C,更改它使其返回2^3而不是2^2?

最佳答案

反编译比字节码旧。几乎所有的东西都可以反编译尽管没有保留元数据,但使用损坏的、优化的机器代码确实很难(既要进行反编译,也要理解/修改结果)当然,你需要一个不同的反编译程序,而且——正如之前暗示的那样——它会有点困难,但是事实上(顺便说一下,这使得所有的DRM工具都不完美)“如果他们的CPU运行它,他们可以修改它”,对于本机代码和任何字节码来说都一样。

关于java - Java反编译和JNI,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5444621/

10-11 19:42