刚上大学那会儿,安卓系统还没有像现在这样普及。因为它的开源以及相对塞班等系统的优点,促使它没用多久就迅速成为移动端使用最为广泛的系统。
记得我的第一部安卓手机系统是2.2的版本,现在安卓11都开始适配发行了。那个时候的我喜欢折腾手机,当时手机root和刷机非常火爆,大街小巷到处都能看到有那种挂着刷机、解锁、root牌子的小店子。网上到处都是获取root权限的软件,像什么kingroot、百度一键root、360一键root等等。
笔者当时也很是痴迷于手机破解,逛了好多刷机解锁论坛,所以,笔者经常刷自己的手机,获取root之后,卸载掉系统自带的一些预制软件。当时由于不懂安卓开发技术,对其系统的概念也是没有任何概念,就是跟着论坛大神一起折腾。记得有几次还把手机桌面给卸载掉了,然后再开机就无法操作手机了,不知道有没有人经历过手机没有桌面的那种情况:开完机之后,就显示黑屏,只有通知栏是显示的。
折腾了手机刷机和root之后,偶然间,看到了一个比较好用的计算器软件,它的功能在当时来说已经非常完善了,包括二维、三维函数图像绘制,科学计算,微积分,线性代数等等,功能非常强大,好像还可以多行显示。但是唯一的缺点就是它集成了广告而且还是英文的,笔者英语是个二把手,所以使用很费劲。
所以,当时笔者就想着可以不可以破解了它,不让他显示广告,最好把它翻译成汉语的。由于笔者当时没有学过安卓开发,对于它的语法一无所知,更别说是安卓逆向破解了。但由于自己是计算机专业的,也比较爱折腾,所以就开始在各大论坛上搜索有关于安卓软件破解的教程,主要是破解去广告以及汉化。
还好,在我的前面已经有好多人和我一样,他们把软件破解的经验都记录下来了。于是我就跟着他们的脚步,知道了apktool,dex2jar,jd-gui等等破解工具。一开始不懂安卓界面是使用xml编写的,所以就通过搜索字符串的方式,找到需要修改的界面,然后机械的跟着教程把layout_height的值改为0dp,也不知道这个属性具体是怎么解析的,也不知道dp是个什么东西,只知道大概意思就是把高度改为0了,所以广告就不现实了。
对于汉化界面,一开始同样的,不清楚安卓的设计模式,根本不知道界面显示的字符是怎么存放的。反正就是跟着论坛教程,一股脑的、机械的通过工具搜索字符串,然后在通过翻译网站把原来的字符串翻译成汉语在替换回去,最后通过工具在重新打包、签名,然后就可以使用没有广告的并且汉化了的软件了。
后来,由于笔者对安卓开发比较有兴趣,所以,在课余时间,就通过自学的方式学习了安卓开发。然后再回过头来看我之前使用的那些工具,以及当时机械的修改的那些软件,才明白当时为什么要那样修改。
我记得当时笔者学习安卓的时候,可以说是一波三折,三起三落,步履维艰。我当时第一本安卓教程书籍是李刚的《疯狂Android讲义》,尽管这本书讲得非常仔细,也很适合没有基础的人学习。但是,笔者当时有一个毛病就是遇到看不明白的地方,并没有和大多数人一样跳过它们,而是自己在那里苦思冥想,非要把它搞明白了才愿意继续学习下一节。所以,当时笔者是非常苦恼的,甚至差点都要放弃了,还好,笔者没有放弃,并且最后也搞明白了。
最近,由于偶然间看到了那种手绘的视频,感觉很高大上,所以就想着怎么制作。于是就从网上找到了几个App,也下载下来使用了,感觉挺好用的。但是我还没有使用几次,它就开始弹出付费购买的界面了,然后就不能使用了。这周末一时闲来无事,就想起了当时上学时破解软件的经历,于是就打算再看看这个软件是否可以破解付费功能。
简单看了看,也了解了这几年软件破解相关的内容,发现软件不光是进行了混淆,而且还是用了加固。于是自己尝试着先去脱壳,还好,壳成功的脱下来了,然后就使用反编译工具去查看代码调用流程,想尝试着修改掉付费功能那块的调用逻辑。
但是,很不幸,因为破解软件之后需要重新打包,所以就破坏了原来软件的签名,只能使用新的签名密钥文件来签名软件。我简单的修改了下,然后编了一个版本,安装之后,发现没有成功,于是就又去看了看代码调用,发现关键的地方都是使用native方法,cpp编写的so库实现的。对于so的反编译就没有Java那么简单了,于是我就放弃了。
现在回过头来看看这件事情,从开始破解到最后发现不可行,整整耗费了我一天的时间,感觉真是不值得。而且这种破解别人的软件也不道德,毕竟人家制作软件耗费了精力和时间,这样不劳而获的破解,真的是很不好的。另一方面,现在的反破解技术已经不是当年笔者去广告汉化时的那个层次了。
所以,笔者在这里建议大家,不要再去破解别人的软件了,笔者今后也不会去破解别人的软件了。他们辛辛苦苦做出来的软件,限制几个付费的功能也是可以理解的,这对于他们来说也算是人家正当应得的,毕竟人家为此付出了时间、精力和脑力。
那么,对于这种破解别人软件的做法,你是怎么看的呢?欢迎留言讨论!
评论留言