加入收藏 | 设为首页 | 会员中心 | 我要投稿 好传媒网 (https://www.haochuanmei.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长资讯 > 评论 > 正文

来,教你如何破解一个 iOS APP

发布时间:2018-10-16 10:07:36 所属栏目:评论 来源:谢幺谢幺
导读:【新产品上线啦】51CTO播客,随时随地,碎片化学习 今天给大家来一个硬知识科普。 黑客中有一类人,注定跟程序开发者是死对头,是宿敌。 他们总跟开发者对着干: 开发者的日常是用一段段代码写出一个个软件,实现各种功能。 他们的日常则是把一个个完整的软
副标题[/!--empirenews.page--] 【新产品上线啦】51CTO播客,随时随地,碎片化学习

今天给大家来一个硬知识科普。

黑客中有一类人,注定跟程序开发者是“死对头”,是宿敌。

来,教你如何破解一个 iOS APP

他们总跟开发者对着干:

开发者的日常是用一段段代码写出一个个软件,实现各种功能。

他们的日常则是把一个个完整的软件逆推,还原成一段段代码。

他们,就是传说中的“逆向工程师”。

假如让你钥匙撬开一把锁,你或许感到无从下手,但如果这把锁的外壳完全透明的,内部结构清晰可见,你便会觉得容易了许多。

在赛博世界里,逆向工程就有这种看穿一个物体的本领。

来,教你如何破解一个 iOS APP

给他们一个手机APP、电脑程序,用不了多久,就能逆推出程序的运行逻辑,找到里头的关键代码,篡改、破解、发现漏洞。

人们把这种技术叫做“逆向工程”。我们在网上看到的各种破解软件,多半都跟逆向工程有关。

然鹅,

逆向的江湖有正亦有邪。

正义的逆向者只是做安全研究,而那些邪恶的逆向者却拿着这项技能四处干坏事牟利。

比如盗版软件。开发者们累死累活才写好的程序,分分钟就被人逆向破解,植入广告和木马,重新打包成盗版。拼多多变成拼夕夕,一款软件多出好几十个远方表亲。

来,教你如何破解一个 iOS APP

(网曝各种山寨的彩票软件)

再比如有朋友总抢不到群红包,怀疑有人用了外挂,其实所谓的“抢红包外挂”就是有人逆向破解了微信APP,在里头添加了自动领红包的代码。

来,教你如何破解一个 iOS APP

(网上流传的破解软件)

对于那些跟钱打交道的金融类APP,逆向破解更是噩梦,一旦APP被逆向,就很容易面临巨额损失。

最近我撩到一位逆向技术大牛,聊了聊手机APP的破解与反破解,今天与诸位浅友分享一下。

话说,这位大牛有点奇特,虽然他是个逆向技术高手,却不去破解别人的手机应用。相反,他的日常是带着团队专门帮 iOS 应用开发者做反破解。

来,大家认识一下这位新朋友,他就是通付盾的研发副总裁、 iOS 加固项目的总负责人,华保健。

来,教你如何破解一个 iOS APP

此人灰常厉害,他是中科大的计算机学博士,做了几十年信息安全、系统渗透等方面的工作,2015年前后还在微软主导过 Office 365 和 必应搜索(Bing)的研发项目,前两年加入通付盾,负责技术研发。

话说华博士一心做技术,人比较腼腆,所以我没能拿到他的1080P高清无码近照,只能从他的微信头像里扣下一张AV画质的照片。关于他的技术故事,我相信非常精彩,不过来日方长,回头再写。

今天继续聊破解和反破解。

1、破解一个APP的标准大路

华保健告诉我,要破解一个苹果手机的APP,其实有一些标准套路。

第一步是脱壳。

所谓“壳”,就是原有的软件代码上再外包一层“壳代码”。机器运行程序时,先运行壳代码,这样可以保护应用的代码逻辑不容易暴露。

苹果商店会给每个上架的 iOS APP 都加一层壳。

“不过,这层自带的壳并没什么实质性作用。”

华保健说,由于苹果商店给全世界几百万个 APP 都用的同一种加壳方法,因此全世界的逆向工程师、黑客们都盯着它,老早就做出了针对这种壳的脱壳工具,开源在网上供免费下载,总之,苹果自带的壳分分钟就能脱掉。

脱壳之后,第二步是反编译。

到这一步,幺哥必须给大家先普及一个有趣的计算机知识。

各位同学请看,下图中的两个人是早期的程序员,他们正在检查代码:

来,教你如何破解一个 iOS APP

也不知道是谁出的主意,早期的计算机代码就这么直接用打孔的方式记录在长长的纸带上。打孔代表0,没打孔代表1,对应着电子元件的开闭状态,以此控制机器运行。

这种原始的代码记录方式叫“机器码”,是一种二进制编码。

来,教你如何破解一个 iOS APP

相信你已经发现,这种代码记录方式用起来非常麻烦。

据说,当时要编写一个程序,光是打孔就得几天几夜,还容易出错,程序员们不仅每天都在打孔、改错,还得记住一堆 0101010 这样长长的代码。

后来有人发明了一种汇编语言,这才开始用英文字符来替代一串串的二进制字符。

从此,像1000100111011000 这样的代码就可以用“mov ax,bx”这样的一串字母来替代,它的意思是“把b寄存器(一种机器元件)里的数据挪到a寄存器”。

来,教你如何破解一个 iOS APP

再后来,程序越来越复杂,汇编语言也不够用,更高级的语言就诞生了。比如 C、C++、Java、Python、PHP、Rust、Nodejs 等等……

(编辑:好传媒网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读