网站首页 > 技术教程 正文
本文阅读对象为与软件相关工作的朋友,一家之言仅供参考。
我们在开发一款软件的起始阶段,技术负责人要做的第一件事大概就是做技术选型。
技术选型件事是一个综合性的考量,需要考虑的因素很多。
一个合适的技术选型对软件的后期发展有着很大的影响。
本文就站在一个软件保护的角度,来对比一下当下流行的编程语言。
“保护”这个词,我们暂时先将范围设定为防止破解或者反编译。
编程语言方面,我们就暂时限定为以下常见的几种:
- Python
- Java
- JavaScript/TypeScript
- C/C++
- C#
- Go
- PHP
- Rust
- Objective-C
- Swift
- Kotlin
当然还有其他的编程语言,我们后面有机会再来整理。
每种编程语言都有自己的优缺点,也都有自己的应用场景,这里不讨论语言的优劣。
语言 | 反编译难度 | 反编译工具 |
Python | ★ | uncompyle6 |
Java | ★ | JD-GUI |
JavaScript | ★ | - |
C/C++ | ★★★★ | IDA pro |
C# | ★ | .Net Reflector |
Golang | ★★★★★ | - |
PHP | ★ | Dezender |
Rust | ★★★★★ | - |
Objective-C | ★★★ | class-dump |
Swift | ★★★★★ | - |
Kotlin | ★★★ | 同Java |
在上述列表中,反编译难度,主要指的是工具的丰富程度以及反编译之后的代码可阅读性。
JavaScript/TypeScript属于脚本语言,严格来说,不存在编译,也就不存在反编译。
对JavaScript/TypeScript代码的保护一般是压缩和混淆,无法做到很好保护。
其实对于JS,Python和PHP这类脚本语言基本都差不多,无法很好地保护开发的应用软件。
最好的保护就是将应用运行在自己的服务器上,
通过对服务器的保护来保护自己的应用软件。
Java应用范围非常广,使用的人也多,当然反编译的工具也很多,反编译出来的代码可阅读性也很不错。
C#,怎么评价你呢?
微软的作品、静态语言、执行效率好、可以进行编译,但是反编译软件实在是太强了。虽然也可以做到软件的保护,但是成本也不低。
ILSpy/dnSpy几乎可以完美地让你得到软件源码。
对于iOS端的编程语言Objective-C和Swift,首先有iOS的机制保护,本身获取到应用就有一定的障碍。
Objective-C的反编译工具class-dump,有兴趣可以试试,反编译得到的源码和原文件可以做到一一对应,可读性也很不错。
Swift现在还没有发现有反编译工具,想要对应用做点事情,貌似只能进行逆向了。
C/C++,老牌的编程语言,对开发出来的应用的保护能力非常强,
严格来说,现在还不存在对C/C++应用的反编译,可以反汇编,而且难度也挺高。
Golang和Rust,这俩很强,编译器直接将代码编译成机器码,和C\C++类似。
想反编译?
能做点逆向和反汇编倒是可以试试,但是你如果想做这个尝试,大概率会让人崩溃。
这个时候,你可能会说,那只能使用C\C++、Golang和Rust?
那当然不是。
在文章开头,我们说过,每种语言都有自己的优缺点,都有自己的应用场景。
大家可以根据自己的实际情况慎重地做出技术选型。
更多精彩内容发布于公众号:代码乾坤 (CoderLand)
- 上一篇: 「好物推荐」-C#程序逆向工程“反编译”
- 下一篇: 初试安卓软件反编译破解软件的方法
猜你喜欢
- 2024-12-31 推荐一款产品-防止JAVA代码反编译
- 2024-12-31 为你的PS替换Adobe软件启动界面
- 2024-12-31 代码混淆加密保护我们的C#程序
- 2024-12-31 4款免费且实用的.NET反编译工具
- 2024-12-31 威纶通触摸屏基础知识分享:编译与反编译,压缩与解压缩
- 2024-12-31 aardio + .NET 快速开发独立 EXE 程序,可防 ILSpy 反编译
- 2024-12-31 9.2K Star!OpenArk:Windows 神级反 Rootkit 工具,安全人员必备!
- 2024-12-31 达内java培训专家:7款开源Java反编译工具
- 2024-12-31 奇!AI(人工智能)能不能反编译二进制代码为高级语言Java或者C?
- 2024-12-31 安卓逆向之APK的反编译与回编译及常见的问题应该如何解决
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- sd分区 (65)
- raid5数据恢复 (81)
- 地址转换 (73)
- 手机存储卡根目录 (55)
- tcp端口 (74)
- project server (59)
- 双击ctrl (55)
- 鼠标 单击变双击 (67)
- debugview (59)
- 字符动画 (65)
- flushdns (57)
- ps复制快捷键 (57)
- 清除系统垃圾代码 (58)
- web服务器的架设 (67)
- 16进制转换 (69)
- xclient (55)
- ps源文件 (67)
- filezilla server (59)
- 句柄无效 (56)
- word页眉页脚设置 (59)
- ansys实例 (56)
- 6 1 3固件 (59)
- sqlserver2000挂起 (59)
- vm虚拟主机 (55)
- config (61)
本文暂时没有评论,来添加一个吧(●'◡'●)