首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java反编译和JNI

Java反编译和JNI
EN

Stack Overflow用户
提问于 2011-03-27 03:08:46
回答 4查看 3.3K关注 0票数 1

有点像这个问题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呢?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-03-27 03:15:58

反编译比字节码更早。几乎所有的东西都可以反编译。这肯定更难(无论是反编译还是理解/修改结果),使用损坏的、优化的机器代码,并且保留零元数据,但仍然是可能的。当然,您需要一个不同的反编译器,而且-正如前面所暗示的-会有点困难,但事实(顺便说一句,这使得所有DRM工具都不完美)“如果他们的CPU运行它,他们就可以修改它”,这对本机代码和任何字节码都适用。

票数 2
EN

Stack Overflow用户

发布于 2011-03-27 03:13:57

只需找出C函数签名并编译实现该签名的目标文件即可。

几年前,我在一家主机商店工作,我的老板制作了他自己版本的系统日期功能,并重新链接了我们正在使用的一个商业应用程序,这样他就不必续签有时间限制的许可证。这是非法的,但它是有效的。

票数 3
EN

Stack Overflow用户

发布于 2011-03-27 03:14:52

一种选择是使用反汇编程序。一个更简单的选择是用你自己的库替换这个库,我几乎每天都将它用于测试目的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5444621

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档