Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何保护Android应用内的代码及文件?

如何保护Android应用内的代码及文件?

提问于 2018-09-20 21:51:58
回答 7关注 0查看 1.5K

我写了一个APP,里面有相关算法及逻辑,害怕被反编译,有没有办法保护下?

回答 7

人生的旅途

发布于 2018-09-21 02:55:38

我曾经使用过腾讯云的乐固,感觉不错,把教程放出来:

我我们知道对于有过反编译经验的同学分分钟把正常的安卓程序源代码搞出来。一直也在寻找此类服务,之后发现腾讯云上有一个叫乐固的服务,支持反破解,反调试,反窃取,防篡改,防二次打包, 兼容2.x至 7.x 任何安卓系统, 兼容yunOS系统,重要的是免费的,支撑的团队响应速度也很及时,拖入专项问题讨论组,乐固团队人员帮你处理,这个太佩服,效率绝对的高。

前序:准备好之前已经签名好的产品apk。

1.首先找到云产品里找到应用乐固的服务。

进入以后

选择好我们的apk文件。

等到上传完毕以后:

提交,系统就会自动进行加固。

下载加固包。

会提示:

此时,如果没有下载签名工具,就先下载签名工具,如果已经下载好了 就点击 “继续下载加固包”。

这是一个已经加固,但是没有签名的包。需要我们重新用我们自己的签名和密码重新打包签名一下。

2.包签名

首先下载好乐固提供的自助加固工具。

正常情况下打开根目录的LeguPC.exe。

(插曲:我的win8当时打不开,应该是权限问题,我直接找到\Bin\LeguPC.exe)

我们选择辅助工具:

APK原包:就是我们下载的加固包

输出路径:选择一个目录然后,程序会把签名好的apk生成在这里

下面keystore、密码别名等就把我们生成签名的数据填写上

点击立即签名 完成加固。

3.实践是检验真理的唯一标准

我不相信任何吹嘘,验证一下是否可行。

用工具尝试还原代码,已经失败了。

目录结构是混淆后的了

目前我们这边正式产品已经使用上,表现良好兼容性也很强。

刺猬

发布于 2018-09-21 04:08:57

我看有人讲乐固的教程,但是不够全,我这里列一下PC的使用教程。

一)Android项目准备

配置AndroidManifest.xml文件(如果不需要多渠道打包可跳过)

这里android:name=“channel”

生成正式签名的apk,默认文件名为app-release.apk

(二)下载PC工具运行

可以先提前在腾讯云官网上登陆,确认可以登陆后,再使用PC工具登陆。

开始配置签名等相关信息:

签名:

选择签名路径,输入密码,如果密码正确,Keystore别名会自动显示。

多渠道设置:

注意这里的Android Name 与 AndroidManifest.xml中要保持一致,这里为channel。

以上步骤正常完成后,辅助工具中的默认配置和设置中的多渠道和签名配置是保持一致的。

(三)开始加固

添加应用开始加固,添加完成后开始上传app,下载加固包完成打包和签名。

前面配置了输出目录,因此可直接在该目录中找到加固并重签名的安装包。

这是完成后的文件名,增加了“_legu_signed_zipalign”,此安装包可正常安装和运行。

如果不需要多渠道打包,此时加固工作已经完成。可在应用宝那里上传app-release_legu_signed_zipalign.apk。

(四)多渠道打包(可选)

先去腾讯云官网乐固处上传apk

下载该加固包,此时下载的文件名为:app-release_legu.apk。

选择pc工具中的多渠道打包

立即打包,完成后出现:

分别签名:

完成后的文件名:

多渠道打包和签名完成,以上两个apk可直接安装运行。

(五)其他

制作签名:

安装JDK,推荐64位版本,配置好环境变量

执行命令:keytool -genkey -alias key -keyalg RSA -keysize 2048 -keystore android.keystore -validity 10000

在cmd中执行此命令,输入密码和其他信息,确认完成后生成android.keystore签名文件,此时别名为“key”,有效期为10000天

或者直接使用Android studio生成签名文件,此时签名文件的扩展名为jks。

笔洁7e

发布于 2018-09-21 05:51:56

我看其他回答说没必要加固,还有人说兼容性和性能会有影响,绝对不可取!

为什么要应用加固?

  • Android 应用使用 Java 语言编程,易被反编译,破译核心业务逻辑和算法;
  • Android 应用易被二次打包,插入病毒、木马、流氓广告等恶意代码;
  • Android 系统本身开源特性,以及移动应用承载的越来越多的核心业务,使其已成为黑客的主要攻击对象。

应用加固对兼容性有什么影响?

应用加固是基于加密、加壳技术对 App 进行保护。理论上对应用加固后的兼容性会产生一定影响。如果对性能有要求的同学,请谨慎。

和开发者交流更多问题细节吧,去 写回答
相关文章
如何有效保护源代码 —— .m脚本文件?
在实际情况中可能会遇到这样的事情,我们在分享自己编写的matlab程序时只是为了演示程序所实现的功能,并不希望对方看见源代码。要怎样才能实现既能加密源代码又能够在matlab中正常执行加密文件呢?今天就给大家介绍一个新的加密命令 —— pcode。
巴山学长
2019/07/15
1.4K0
如何快速生成Verilog代码文件列表?(内附开源C代码)
环境:Windows 7操作系统或其它常用Windows操作系统 编译器:DEV C++或其它 使用方法:随便找个C语言的编译器,静态编译生成exe文件后,可随意拷贝至某文件夹下,双击运行,等待输出rtl.f文件即可。
网络交换FPGA
2019/10/29
1.6K0
如何快速生成Verilog代码文件列表?(内附开源C代码)
有赞 Android 崩溃保护的探索及实践
Android 的 Crash 是件让人头疼的事,测试阶段好好的代码一上线就各种崩溃,即使是一个微不足道的 bug 也得发个 hotfix。很多时候我们更希望即使个别功能没法使用也不要崩溃,比如点击图片想看大图时,由于 onClick 回调中没做判空处理等导致 APP 崩溃了,这时我们更希望即使不能看大图也不要崩溃,这时你可以考虑使用 Bandage,当然 Bandage的强大之处远不止这些。
有赞coder
2020/08/25
1.3K0
有赞 Android 崩溃保护的探索及实践
ELF文件保护机制解读及绕过
可通过格式化字符串漏洞,泄漏栈上的内容,如__libc_start_main_ret地址,通过libc-database确定libc版本,查找libc中的Magic地址,修改某个后续会调用的函数的GOT表,getshell
tinyfisher
2019/11/20
1.3K0
如何保护你的代码 - Ollvm(一)
李老板:奋飞呀,最近的so都混淆的很厉害呀,也没有啥通用的反混淆方法。一点都不好玩,之前你说的 D810 也不是很好使。
奋飞安全
2021/11/04
2.1K0
如何拷贝Docker容器内的文件?
某个项目容器需要添加 wkhtmltopdf 软件包用于处理html与pdf文件转换,由于默认的apt源服务器在国外,使用apt 安装 wkhtmltopdf 时下载速度只有感人的几kb/s。
用户1560186
2019/11/20
4.9K0
【实测】gitlab/github 如何过滤项目内的文件
很多老程序员的常识性问题,往往是难倒新人的最后一根稻草。因为这类简单基础的问题,却往往连最起码的教程资料都查不到,因为老程序员懒得写也不敢写,怕被骂太水皮毛。
我去热饭
2023/09/10
7430
【实测】gitlab/github 如何过滤项目内的文件
Android应用中如何调用系统闹钟及日历
今天开发一个小应用需要添加一个响应事件实现跳转到闹钟和日历,在遍访网上各种回答后得出了最简单答案,现记下来供自己与网友共享。
张拭心 shixinzhang
2022/11/30
2K0
如何在10分钟内让Android应用大小减少 60%?
尽量不用太复杂的lib,轻量级lib是首选。如果你的应用没用到兼容库,可以考虑去掉support包。
Android技术干货分享
2019/07/10
9010
如何在10分钟内让Android应用大小减少 60%?
如何在10分钟内让Android应用大小减少 60%?
尽量不用太复杂的lib,轻量级lib是首选。如果你的应用没用到兼容库,可以考虑去掉support包。
Android架构
2019/07/22
1.7K0
如何使用Tarian保护Kubernetes云端应用的安全
Tarian是一款针对Kubernetes云端应用程序的安全保护工具,该工具可以通过预注册可信进程和可信文件签名,保护在Kubernetes上运行的应用程序免受恶意攻击。Tarian能够检测未知进程和注册文件的更改,然后发送警报并采取自动操作,从而保护我们的K8s环境免受恶意攻击或勒索软件的侵扰。
FB客服
2022/02/25
6450
如何使用Tarian保护Kubernetes云端应用的安全
如何保护Wp-Config.Php文件
WordPress CMS内容管理系统的wp-config.php 文件包含有关您的 WordPress 安装的非常敏感的信息,例如 WordPress 安全密钥和 WordPress 数据库连接详细信息,当然不希望此文件的内容落入坏人之手,因此 WordPress wp-config.php 安全绝对是您应该认真对待的事情。
晓得博客
2023/02/03
1.3K0
如何保护Wp-Config.Php文件
.NET代码的保护
2用vs2002/2003/开发的代码 删除.cs/.vb文件只留 .dll和.aspx可以达到加密 若要加密.aspx 可以把.aspx代码写入.cs vs2005 beta1可以连.aspx都打包
Java架构师必看
2021/03/22
5730
【Android 逆向】APK 文件格式 ( Android 应用安装 | Zip 文件格式 | 使用 Python 代码提取 APK 文件 )
APK 是 Android 应用的安装文件 , 现在也有 AAB 格式的 , AAB 安装包也可以导出 APK 安装文件 ;
韩曙亮
2023/03/29
1.3K0
【Android 逆向】APK 文件格式 ( Android 应用安装 | Zip 文件格式 | 使用 Python 代码提取 APK 文件 )
Android Okio应用及解析
自从Google官方将OkHttp作为底层的网络请求之后,作为OkHttp底层IO操作的Okio也是走进开发者的视野,这个甚至是取代了java的原生IO库的存在到底有什么特殊的本领呢? 这篇文章主要是对Okio的实现做一个详尽的解析,当然由于笔者分析中可能有纰漏的地方,也烦请指出,Okio的代码比较精巧,核心的代码大约5000行,对文章不尽兴的也可以直接通读源码,这样就能理解的更清晰。 全文较长,这里先放出整体的一个目录图
全栈程序员站长
2022/06/30
6750
谈谈java程序代码保护及license设计
理论上讲,不存在牢不可破的漏洞,只是时间和成本问题。通常我们认为的不可破解,说的是破解需要难以接受的时间和成本。 对于java程序来说,class文件很容易被反编译,所以理论上而言,对java程序做license限制,无法真正起到保护软件被盗窃的作用。 但是,如果增加被反编译的成本,或者增加被反编译后能读懂源码的成本,也能从一定程度上起到保护软件被盗用的目的。 针对不同的应用程序,可以使用不同的方法。 1. Android应用程序 由于Android应用程序时需要下载才能被安装的,所以用户很容易可以得到程序包,且可以进行反编译。 所以只能通过增加被反编译后读懂源码的成本来达到保护程序被盗用的目的,通常的做法是进行代码混淆。 2. Web应用程序 (1)自己部署 Web应用程序通常部署在服务器端,用户能直接获取到程序源码的风险相对较小,所以就可以避免被反编译。 (2)交付给用户部署 如果想限制软件系统的功能或者使用时间,可以通过license授权的方式实现。但是,license加密和解密验证都必须在服务器端。 ########### 理论上没有任何意义,只要web程序提供给用户,同样可以被反编译绕开license验证过程。########### ########### 如果一定要做license限制,一定要对license解密代码进行混淆处理。############ 3. 关于RSA加密 公钥加密数据长度最大只能为117位,私钥加密用于数字签名,公钥验证。 通常,不直接使用RSA加密,特别是加密内容很大的时候。 使用RSA公钥加密AES秘钥,再通过AES加密数据。 【参考】 https://www.guardsquare.com/en http://www.cnblogs.com/cr330326/p/5534915.html ProGuard代码混淆技术详解 http://blog.csdn.net/ljd2038/article/details/51308768 ProGuard详解 http://oma1989.iteye.com/blog/1539712 Java给软件添加License http://infinite.iteye.com/blog/238064 利用license机制来保护Java软件产品的安全 http://jasongreen.iteye.com/blog/60692 也论java加壳 http://jboss-javassist.github.io/javassist/ Javassist http://www.cnblogs.com/duanxz/archive/2012/12/28/2837197.html java中使用公钥加密私钥解密原理实现license控制 http://ju.outofmemory.cn/entry/98116 使用License3j实现简单的License验证
编程随笔
2019/09/11
4.9K0
点击加载更多

相似问题

如何从反向工程保护.NET代码?

2284

NAS与CFS的优势区别及应用?

1818

微信无法接收图片及文件?

0861

LogAnalyzer获取LogAnalyzer安装脚本及相关文件?

082

自然场景文字识别技术及在地图中的应用

112.2K
相关问答用户
萃橙科技 | 合伙人擅长4个领域
擅长3个领域
腾讯 | 技术专家擅长2个领域
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档