Loading [MathJax]/jax/input/TeX/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >​ 【教程】APP代码混淆的方法和利弊与破解APP过程

​ 【教程】APP代码混淆的方法和利弊与破解APP过程

原创
作者头像
iOS程序应用
发布于 2024-04-18 10:07:37
发布于 2024-04-18 10:07:37
4201
举报

长久以来,为避免手机APP被反编译和破解,大多数移动开发者选择代码混淆技术来抵抗破解者的攻击。但随着不断有应用被破解和盗版的事件发生,让越来越多的开发者开始质疑这种抵御方式的有效性。用代码混淆技术来保护手机APP安全到底是良策还是误区,本文将以代码混淆工具-ipaguard 详细结束。

什么是代码混淆?代码混淆是将程序的代码转换成一种功能上等价,但是难于阅读和理解的形式的行为。比如将代码中的各种元素,如变量、函数、类的名字改写成无意义的名字,使破解者在阅读时无法根据名字猜测其用途,增加反编译的阅读难度。

代码混淆的方式为避免出现盗版,提高应用安全性,技术人员对一款APP进行了代码混淆。图1是进行代码混淆前后的代码结构对比。右侧截图是对源代码文件中的一些类名做了变换,改成了以英文字母命名的名称,这样破解者在阅读时就不容易理解其特指的含义。

代码混淆的利与弊这种代码混淆方法简单、便于操作。但也因此会给开发者的调试工作带来困难,开发人员通常需要保留原始的未混淆的代码用于调试。由于混淆是不可逆的,在混淆的过程中一些不影响正常运行的信息将永久丢失,这些信息的丢失会使程序变得更加难以理解。

对进行过代码混淆的APP进行破解和插入恶意广告全过程虽然做了代码混淆,但混淆只是对源代码的类名和一些变量名做了变换,增加了破解者阅读的难度,并不能真正阻止反编译。下面是对进行过混淆的《九天传说》APP进行破解并插入恶意广告的过程演示。首先,使用ipaguard工具进行反编译,可以得到smali代码文件,再定位找到主Activtiy的代码,主Activity可以从AndroidManifest文件中查到。九天传说的主Activity查到为com.tp.ttgame.jiutian.JiuTian。图2是处理com\tp\ttgame\jiutian\JiuTian.smali中的onCreate函数,向其中添加有米广告的初始化代码截图。

再将添加banner的函数插入其中,并在onResume函数中调用,见图3、图4。

这样代码部分就修改完成了。最后再修改AndroidManifest文件,需要将有米广告必要的配置写进去。见图5、图6。

最后,将有米广告SDK的内容转成smali,并将其跟九天程序的smali合并。用apktool重新打包之后生成的程序就是一款含有有米广告的盗版应用了。图7是启动该盗版应用后的界面,能看到右下角增加的有米广告内容。

同理,破解者还可以将正版APP中的广告替换掉,这样,当用户下载该盗版应用并点击广告后,所带来的广告收入就直接进入了破解者的腰包。重要的是盗版应用中的广告大多是恶意广告,会在用户不知情的情况下下载程序,造成流量的消耗和资费的损失,影响用户体验更损害正版APP的品牌形象。所以,单纯的通过代码混淆并不能完全保证应用安全。

如何避免手机APP被破解和盗版?目前越来越多的开发者选择使用360加固保来保护应用安全,这种方式到底是否可靠,下面再为大家做下演示。图8是对《九天传说》APP进行加固保护前后的代码结构对比,能看到右侧截图中加固后的代码文件都已经被隐藏起来,只保留了加固后的保护程序,破解者在反编译时无法找到源程序真正的代码,即可有效的避免手机APP被破解和盗版。

除了可以对手机APP的代码进行保护外,加固后还具备反调试、反篡改、反窃取和反逆向等功能,能有效防止代码注入,避免游戏外挂或木马程序的恶意篡改行为,从根源上防止应用被二次打包,杜绝盗版应用的产生。避免手机APP被破解和盗版除了可以使用专业的第三方加固产品外,更需要开发者提高安全意识,如编写代码要规范,减少程序漏洞;及时修复漏洞,不给破解者可乘之机等。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
1 条评论
热度
最新
可以,大佬,互粉一下
可以,大佬,互粉一下
回复回复点赞举报
推荐阅读
编辑精选文章
换一批
NxShell会话管理支持导入导出
该功能常用于换电脑的时候,备份自己的nxshell 会话配置文件或者根据以前的会话文件恢复会话配置。具体操作如下:
用户4821680
2021/06/17
8760
NxShell会话管理支持导入导出
ftp/ftps文件管理
在使用NxShell ftp功能之前,需要配置服务器运行ftp服务端,具体相关的vsftpd的配置详见地址: https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/6/html/deployment_guide/s2-ftp-servers-vsftpd
用户4821680
2021/06/26
8970
ftp/ftps文件管理
全能终端神器——MobaXterm
现今软件市场上有很多终端工具,比如:secureCRT、Putty、telnet,等等。secureCRT其实也是一款很强大的终端工具,良许也使用过它很长时间,但是,它毕竟是收费软件,在公司里不允许使用。而且在良许自己的电脑里一量输入大写,整个界面就乱了(原因未知,未深究),这是直接导致良许放弃它的原因。
用户8851537
2021/09/17
2.4K0
一款多功能的SSH远程服务器管理工具
NxShell名字的源于英文next shell,以及new shell,故最终取名软件为NxShell。软件一开始设计就为了提供一个高可靠,跨平台,现在风的ssh工具。 所以在选型上面参照了现在PC端比较流行以及能快速开发迭代的Electron+Vue技术架构。
用户4821680
2021/11/14
2.1K0
推荐7款超级好用的终端工具 —— SSH+FTP
下载地址:https://www.vandyke.com/download/securecrt/6.7/index.html
HaC
2020/11/19
30.3K4
推荐7款超级好用的终端工具 —— SSH+FTP
下载地址:https://www.vandyke.com/download/securecrt/6.7/index.html
HaC
2020/12/30
10K4
推荐7款超级好用的终端工具 —— SSH+FTP
搭建Windows环境下的多功能免费SSH客户端
关于Windows下的SSH客户端工具,可以有许多选择,从开源免费到商业收费的,零零总总。
编程随笔
2021/08/18
1.7K0
搭建Windows环境下的多功能免费SSH客户端
putty、Xshell、远程连接、密钥登录 原
常用的远程连接工具:putty、Xshell、secureCRT 注: 进行远程连接的前提是虚拟机和主机之间可以互相ping通,如果不能ping通则无法进行后续工作。
阿dai学长
2019/04/03
3.8K0
再见 Xshell!这个开源的终端工具更酷炫!
程序员离不开终端命令行,在工作中用得最多的工具就是「终端连接工具」了,而且企业中 Linux 服务器居多,通过终端连接工具连到服务器,在此之上我们可以排查一些问题,执行代码等操作。
杰哥的IT之旅
2022/03/31
6.4K0
再见 Xshell!这个开源的终端工具更酷炫!
Linux笔记【002】| 远程登录服务器软件:MobXterm与FileZilla
在实际开发或者计算的时候可以使用一些第三方的工具对远程的服务器进行控制。目前常用的Linux远程登录工具有:putty、xshell、secureCRT等等。我推荐使用MobXterm。secureCRT其实也是一款很强大的终端工具,但是,它毕竟是收费软件。Putty非常小巧,而且免费,因此也有不少人使用,但Putty真的不好用,不支持标签,开多个会话的话就需要开多个窗口,窗口切换也很不方便。当然还有其它终端工具,比如XShell,XShell6是一款高效专业的实用型免费SSH客户端。XShell5简单强悍,支持标签式的环境,动态端口转发,自定义键的映射关系,用户定义的按钮,VB脚本,显示2字节字符和国际语言支持UNICODE的终端。我这里介绍MobaXterm,其他的自己百度下载,看自己适合哪种。MobaXterm是一款集万千于一身的全能型终端神器,先说说这款神器的优点:
DoubleHelix
2020/10/23
5K0
Linux笔记【002】| 远程登录服务器软件:MobXterm与FileZilla
Linux基础(day3)
1.9 使用PuTTY远程连接Linux 记得使用快照功能 (数据备份) 熟练使用putty和xshell (个人使用免费) putty官网下载地址 在putty官网下载一个软件组,
运维小白
2018/02/06
1.1K0
Linux基础(day3)
Linux文件传输命令 rz 与 sz
对于经常使用Linux系统的开发人员与运维人员来说,少不了将本地的文件上传到Linux服务器或者从服务器Linux上下载文件到本地,rz / sz命令很方便的帮我们实现了这个功能,但是很多Linux系统初始并没有这两个命令。今天讲解一下如何安装和使用rz、sz命令。
BUG弄潮儿
2021/02/03
8.5K0
Linux文件传输命令 rz 与 sz
跟 Xshell 说再见!推荐这款免费的终端工具
作为一个常常与 Linux 系统打交道的程序员,使用 SSH 终端工具进行远程管理我们的服务器是必不可少的日常工作之一。好工具是提高工作效率的必备神器!民工哥在此之前也介绍过不少的常用工具,以及它的使用与配置,大家可以点击文章上方的 Tools 专栏查阅。
民工哥
2022/05/26
2.7K0
跟 Xshell 说再见!推荐这款免费的终端工具
Linux 远程登录
Linux 一般作为服务器使用,而服务器一般放在机房,你不可能在机房操作你的 Linux 服务器。
用户8647142
2021/07/27
11.5K0
学习linux远程控制方法
Linux一般作为服务器使用,而服务器一般放在机房,你不可能在机房操作你的Linux服务器。
用户4988376
2021/07/16
1.5K0
Linux 服务器远程登录方式
Linux 一般作为服务器使用,而服务器一般放在机房,你不可能在机房操作你的 Linux 服务器。
用户4988085
2021/07/16
6.4K0
干掉 Xshell?这款开源的终端工具逼格更高!
作为一名 Java 后端开发,日常工作中免不了要和 Linux 服务器打交道,因为生产环境基本上都是部署在 Linux 环境下的。以前呢,Windows 环境下我会选择 Xshell 来作为终端进行远程操作。
沉默王二
2021/12/13
2.4K0
干掉 Xshell?这款开源的终端工具逼格更高!
origin绘图过程的一些经验
1.在 “帮助->learning center ”选项卡中可以查找教程及下载APP 2.如果不小心将工具栏拖到了屏幕中间或者不小心删除了某个工具栏,可以在“查看->工具栏->重新初始化”里边进行重置工具栏。 3.图像数字化(Digitize 从图上扣点):工具栏上的位置在“查看(V)”的V字右下边,点击之后选择需要扣点的图片位置,即可打开图片进行扣点或者扣线。需要旋转的可以点击“旋转图像”再点下边出现的微旋按钮将图片旋转,然后移动刚刚打开的图片上的四条线使其对齐坐标轴上下边界,输入坐标轴起始值和终止值,再手动选点(注意选点要双击)或者自动选点,然后点击 得到坐标值。 4.数据处理(Data Manipulation):比如剔除噪声或者筛选数据。菜单栏下边第一行的工具栏中,中间部分有个红加号,旁边一个梯子,这是添加列,后边有像漏斗一样的为筛选工具,漏斗前边像直方图的工具能为列添加随机数。先选中某列数据,点漏斗会加上筛选器到列标签上,再到列标签上点漏斗可以设置筛选规则。 5.做出散点图之后,在“快捷分析”里边可以对散点图进行快速拟合也可以计算积分面积,选择需要的分布方式(线性、高斯分布)对其拟合,会出现黄色矩形框,同时出现对散点的拟合曲线。点击右上角的三角展开对话,可以将矩形扩展到整条曲线。若图中有多个y值的散点图,也可以切换对另一条曲线进行拟合。 6.在已经画好的图形旁边的空白可以对线颜色和粗细进行调整,双击点可以对数据点进行相关修改。 7.在左侧竖向的工具栏中可以添加文字、箭头、直线,进行缩放、读取线中某个点的坐标,对点进行标注(按enter)等操作。 8.右侧的工具栏,可以添加上下左右的坐标轴,可以调换坐标轴,以及调整刻度。 9.批量绘图:如果你有同样类型的几组数据,并且要通过他们绘制同样xy轴的图形,则可以先用一组数据绘出一幅图,再点击 可以选择以同样的格式对其他book或者其他列进行批量绘图。 10.模板:将绘制好的一张图右键点击图表上方的对话框头再点存为模板后即可以在“绘图”里边的模板中找到并使用。 11.复制格式: 一张图做的很美观,另一张图可以复制它的格式。首先在第一张图上右击空白处,点“复制格式”然后再到第二张图上右击空白再点复制格式下边那个。将格式存为主题可以后调用。 12.origin怎么把柱状图变宽 也就是把整个图片拉长缩短,Origin作图的最基本原则是 “想要修改什么,就直接双击什么(或者在相应位置点击右键)”
全栈程序员站长
2022/09/02
4.9K0
再见收费的Xshell,我使用国产良心软件FinalShell替代了它
上一段时间突然发现我的Xshell连接Linux云服务器工具不可用了,竟然要收费了,而且一年的费用高达上千人民币。但是没多久看到同行不少大佬推荐了FinalShell这款国产良心替代软件,给国内众多学习和从事IT运维技能的程序员节省了一大笔钱,这里真的要感谢因为国产开源软件变得越来越强大而带给国内众多程序员们来的免费福利!
用户3587585
2021/09/08
5.2K0
再见收费的Xshell,我使用国产良心软件FinalShell替代了它
推荐使用集串口,SSH远程登录和FTP传输三合一工具MobaXterm
在以前的资料里,串口和SSH远程登使用SecureCRT,window与ubuntu数据传输使用filezilla,窗口切换来切换去,麻烦也眼花缭乱。有没有一个工具搞定串口、SSH和FTP?有!它就是MobaXterm。是不是特别高效呢?
韦东山
2020/09/30
2.6K0
推荐使用集串口,SSH远程登录和FTP传输三合一工具MobaXterm
推荐阅读
相关推荐
NxShell会话管理支持导入导出
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档