android - 拖放应用程序构建器许可。如何确保源代码不会被反编译和重复使用?

标签 android ios node.js react-native encryption

我正在开发一个拖放应用程序构建器。这个概念很简单:用户可以直观地构建他们的应用程序,然后应用程序的设置将转换为配置文件,应用程序将使用该文件来决定如何构建自身(应显示哪些 View 、导航应如何显示等)

我主要担心的是,一旦用户下载了 apk(或 ipa)文件,他们就可以对其进行反编译,更改配置文件中的内容并重新编译/重新签名以将其发布为全新的应用程序。

我正在考虑将部分逻辑放在服务器端,但这会给我带来以下问题:

  • 如果 1000 人使用我的软件构建并发布了一个应用,并且每个应用每天仅向我的服务器发送 10,000 个请求,那么每天就已经有 10,000,000 个请求,这将是相当昂贵的。

  • 如果我的服务器因任何原因关闭,将会有很多愤怒的用户来攻击我。

有什么想法吗?

最佳答案

没有确切的方法来停止 Android 应用或 apk 的反编译/逆向工程过程!

但是在反编译/逆向工程过程之后,有一些机会减少代码可见性的范围!

这是我分享的一些习惯

1) 将重要代码放在服务器上:您可以依赖对受良好保护的服务器的远程过程调用。这减少了您的代码被盗的可能性,因为代码将始终保留在服务器上,除了结果之外什么都看不到。

2) 调试器检测技术:不要使用硬涂层值或字符串,而是使用一些公式或加密方法,这有助于隐藏实际值

3) 用 C/C++ 编写代码的重要部分:您还可以用 C/C++ 编写代码的重要部分,并将它们添加为编译库。虽然它可以被反汇编成汇编代码,但从汇编对大型库进行逆向工程非常耗时。 与 C/C++ 相比,Java 更容易反编译。

这些是优秀开发人员应该注意的一些关键习惯,您还应该查看此answer还有!

关于android - 拖放应用程序构建器许可。如何确保源代码不会被反编译和重复使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60126575/

相关文章:

java - 文档返回 null (Android)

ios - Firebase 中的观察者未在 swift 应用程序中被调用

java - 如何单击歌曲列表(正在播放 Activity )在没有(音乐预览)startActivity 的情况下播放

带有 json 的 android ListView - 如何使用 AsyncTask?

ios - Html5 视频播放器未自动恢复

iphone - UIImageView 仅间歇性显示

javascript - 使用nodejs和jquery无法自动点击按钮

node.js - 如何从 Node 获取中获取所有 set-cookie header ?

javascript - 在 Jest 中模拟过程方法

android - Android 系统是在一个进程中向多个接收者多次发送 BOOT_COMPLETED Intent 还是只发送一次?