浅谈App被破解的深层次原因

发布者:Xiaofeixiang
发布于:2023-04-11 14:08

App被破解的风险

App破解的各种“姿势”在网上已经泛滥成灾了,从App破解的入门知识到逆向工具下载,从破解技术视频到全图文教程,真的只有你想不到,没有他们做不到。

 

一旦App被破解,不仅使用者的照片、身份证、手机号、联系住址、邮箱和支付密码等敏感信息会泄露,还可能感染手机的操作系统,进而导致手机被入侵篡改,乃至成为攻击者操控的“僵尸网络”中的一部分。

 

对于没有成熟风控体系的开发者或者初创团队来说,App的安全至关重要,不然可能最后变成“为他人做嫁衣”。

被入侵原因

App为什么会被破解入侵?我们不从伦理或者市场层面来说,而是从技术层面来理解一下。

 

大体上,常见的原因包括:

 

1.逆向工程:黑客可以使用逆向工程技术,通过分析应用程序的代码和二进制文件,了解应用程序的内部机制,以便发现漏洞并进行攻击。

 

2.动态调试:黑客可以使用动态调试工具,例如调试器和反汇编器,来跟踪应用程序的执行过程和内部变量的值,以便发现漏洞并进行攻击。

 

3.漏洞利用:应用程序中的漏洞可能会被黑客利用,例如缓冲区溢出、代码注入、SQL注入等等,以获得对应用程序的控制权。

 

4.破解工具:黑客可以使用破解工具来绕过应用程序的许可证验证和其他安全措施,以便在未经授权的情况下使用应用程序。

 

5.网络攻击:应用程序可能会受到网络攻击,例如拒绝服务攻击、中间人攻击、网络嗅探等等,以获得对应用程序的控制权或窃取用户数据。

 

但是我们这次从更细节的层面来说:

 

安卓App的开发除了部分功能采用C/C++编码外,其余主要都是采用Java进行编码开发功能。Java源码最终编译成smali字符码,以classes.dex保存在App的APK中。

 

Java是一种解释性语言,功能强大,易用性强。初学者能轻松地学习Java,并编写简单的应用程序。而且Java的基本类库(JDK)是开源的,这就使很多Java开发的应用被逆向破解的门槛很低。目前市面上有大量的逆向破解工具,例如:Dex2Jar、JEB、JD-GUI等等。只要懂代码编程,利用这些工具就可以破解市面上那些防御薄弱、存在大量安全漏洞的App。这就很好理解为什么会有如此多人去搜索“App破解”了。

 

之前曾有媒体报道,有网络黑产专门从各种渠道找到App的apk,然后将apk文件逆向破解,再植入广告、病毒代码,最后重新打包投入公开市场,当不明真相的网友将带病毒广告的App下载后,带来的损失可能难以估量。

如何保护App?

这个问题,不管在哪里搜索,答案都会是“加固”。通过加固可以对App进行安全性强化,一定程度上达到防破解和防止被二次打包的效果。

 

App加固主要对源码的保护,混淆、常量字符串加密、指令虚机转换;对汇编插花(防IDA F5)、控制流扁平化等;抹除二进制ELF信息、ELF壳、自定义Linker等;对安卓的可执行文件加壳,抽取可执行文件指定等。此外,还可以对js、html、图片、自定义资源进行保护,对anti-debug等环境进行检查等。

 

App安全防护技术已经历了动态加载、不落地加载、指令抽离、指令转换/VMP、虚机源码保护等五个阶段。每一阶段的安全技术都是一次升级。这五代技术有什么特点呢?(手都敲痛了!)

 

image.png

 

其实这些内容,之前也讲过,这次用表格直接整理出来了,没有带上代码。感兴趣的朋友可以去翻翻我之前的记录。

 

以上。


声明:该文观点仅代表作者本人,转载请注明来自看雪