本文阅读对象为与软件相关工作的朋友,一家之言仅供参考。

我们在开发一款软件的起始阶段,技术负责人要做的第一件事大概就是做技术选型。

技术选型件事是一个综合性的考量,需要考虑的因素很多。

一个合适的技术选型对软件的后期发展有着很大的影响。

本文就站在一个软件保护的角度,来对比一下当下流行的编程语言。

“保护”这个词,我们暂时先将范围设定为防止破解或者反编译。

编程语言方面,我们就暂时限定为以下常见的几种:

  1. Python
  2. Java
  3. JavaScript/TypeScript
  4. C/C
  5. C#
  6. Go
  7. PHP
  8. Rust
  9. Objective-C
  10. Swift
  11. Kotlin

当然还有其他的编程语言,我们后面有机会再来整理。

每种编程语言都有自己的优缺点,也都有自己的应用场景,这里不讨论语言的优劣。

语言

反编译难度

反编译工具

Python

uncompyle6Decompyle Easy Python Decompiler

Java

JD-GUIprocyon-decompilerJadx(Android)

JavaScriptTypeScript

-

C/C

★★★★

IDA proDLL to C

C#

.Net ReflectorILSpy/dnSpyJetBrains dotPeekTelerik JustDecompile

Golang

★★★★★

-

PHP

DezenderVirboxProtector

Rust

★★★★★

-

Objective-C

★★★

class-dumpotxIDA

Swift

★★★★★

-

Kotlin

★★★

同Java

在上述列表中,反编译难度,主要指的是工具的丰富程度以及反编译之后的代码可阅读性。

JavaScript/TypeScript属于脚本语言,严格来说,不存在编译,也就不存在反编译。

对JavaScript/TypeScript代码的保护一般是压缩和混淆,无法做到很好保护。

编程语言的最新发展及趋势分析(从软件保护的角度看流行的编程语言)(1)

其实对于JS,Python和PHP这类脚本语言基本都差不多,无法很好地保护开发的应用软件。

最好的保护就是将应用运行在自己的服务器上,

通过对服务器的保护来保护自己的应用软件。

Java应用范围非常广,使用的人也多,当然反编译的工具也很多,反编译出来的代码可阅读性也很不错。

编程语言的最新发展及趋势分析(从软件保护的角度看流行的编程语言)(2)

C#,怎么评价你呢?

微软的作品、静态语言、执行效率好、可以进行编译,但是反编译软件实在是太强了。虽然也可以做到软件的保护,但是成本也不低。

编程语言的最新发展及趋势分析(从软件保护的角度看流行的编程语言)(3)

ILSpy/dnSpy几乎可以完美地让你得到软件源码。

对于iOS端的编程语言Objective-C和Swift,首先有iOS的机制保护,本身获取到应用就有一定的障碍。

Objective-C的反编译工具class-dump,有兴趣可以试试,反编译得到的源码和原文件可以做到一一对应,可读性也很不错。

Swift现在还没有发现有反编译工具,想要对应用做点事情,貌似只能进行逆向了。

编程语言的最新发展及趋势分析(从软件保护的角度看流行的编程语言)(4)

C/C ,老牌的编程语言,对开发出来的应用的保护能力非常强,

严格来说,现在还不存在对C/C 应用的反编译,可以反汇编,而且难度也挺高。

Golang和Rust,这俩很强,编译器直接将代码编译成机器码,和C\C 类似。

编程语言的最新发展及趋势分析(从软件保护的角度看流行的编程语言)(5)

想反编译?

编程语言的最新发展及趋势分析(从软件保护的角度看流行的编程语言)(6)

能做点逆向和反汇编倒是可以试试,但是你如果想做这个尝试,大概率会让人崩溃。

这个时候,你可能会说,那只能使用C\C 、Golang和Rust?

那当然不是。

在文章开头,我们说过,每种语言都有自己的优缺点,都有自己的应用场景。

大家可以根据自己的实际情况慎重地做出技术选型。


更多精彩内容发布于公众号:代码乾坤 (CoderLand)

,