来,教你如何破解一个 iOS APP
副标题[/!--empirenews.page--]
【新产品上线啦】51CTO播客,随时随地,碎片化学习
今天给大家来一个硬知识科普。 黑客中有一类人,注定跟程序开发者是“死对头”,是宿敌。 他们总跟开发者对着干: 开发者的日常是用一段段代码写出一个个软件,实现各种功能。 他们的日常则是把一个个完整的软件逆推,还原成一段段代码。 他们,就是传说中的“逆向工程师”。 假如让你钥匙撬开一把锁,你或许感到无从下手,但如果这把锁的外壳完全透明的,内部结构清晰可见,你便会觉得容易了许多。 在赛博世界里,逆向工程就有这种看穿一个物体的本领。 给他们一个手机APP、电脑程序,用不了多久,就能逆推出程序的运行逻辑,找到里头的关键代码,篡改、破解、发现漏洞。 人们把这种技术叫做“逆向工程”。我们在网上看到的各种破解软件,多半都跟逆向工程有关。 然鹅, 逆向的江湖有正亦有邪。 正义的逆向者只是做安全研究,而那些邪恶的逆向者却拿着这项技能四处干坏事牟利。 比如盗版软件。开发者们累死累活才写好的程序,分分钟就被人逆向破解,植入广告和木马,重新打包成盗版。拼多多变成拼夕夕,一款软件多出好几十个远方表亲。 再比如有朋友总抢不到群红包,怀疑有人用了外挂,其实所谓的“抢红包外挂”就是有人逆向破解了微信APP,在里头添加了自动领红包的代码。 对于那些跟钱打交道的金融类APP,逆向破解更是噩梦,一旦APP被逆向,就很容易面临巨额损失。 最近我撩到一位逆向技术大牛,聊了聊手机APP的破解与反破解,今天与诸位浅友分享一下。 话说,这位大牛有点奇特,虽然他是个逆向技术高手,却不去破解别人的手机应用。相反,他的日常是带着团队专门帮 iOS 应用开发者做反破解。 来,大家认识一下这位新朋友,他就是通付盾的研发副总裁、 iOS 加固项目的总负责人,华保健。 此人灰常厉害,他是中科大的计算机学博士,做了几十年信息安全、系统渗透等方面的工作,2015年前后还在微软主导过 Office 365 和 必应搜索(Bing)的研发项目,前两年加入通付盾,负责技术研发。 话说华博士一心做技术,人比较腼腆,所以我没能拿到他的1080P高清无码近照,只能从他的微信头像里扣下一张AV画质的照片。关于他的技术故事,我相信非常精彩,不过来日方长,回头再写。 今天继续聊破解和反破解。 1、破解一个APP的标准大路 华保健告诉我,要破解一个苹果手机的APP,其实有一些标准套路。 第一步是脱壳。 所谓“壳”,就是原有的软件代码上再外包一层“壳代码”。机器运行程序时,先运行壳代码,这样可以保护应用的代码逻辑不容易暴露。 苹果商店会给每个上架的 iOS APP 都加一层壳。 “不过,这层自带的壳并没什么实质性作用。” 华保健说,由于苹果商店给全世界几百万个 APP 都用的同一种加壳方法,因此全世界的逆向工程师、黑客们都盯着它,老早就做出了针对这种壳的脱壳工具,开源在网上供免费下载,总之,苹果自带的壳分分钟就能脱掉。 脱壳之后,第二步是反编译。 到这一步,幺哥必须给大家先普及一个有趣的计算机知识。 各位同学请看,下图中的两个人是早期的程序员,他们正在检查代码: 也不知道是谁出的主意,早期的计算机代码就这么直接用打孔的方式记录在长长的纸带上。打孔代表0,没打孔代表1,对应着电子元件的开闭状态,以此控制机器运行。 这种原始的代码记录方式叫“机器码”,是一种二进制编码。 相信你已经发现,这种代码记录方式用起来非常麻烦。 据说,当时要编写一个程序,光是打孔就得几天几夜,还容易出错,程序员们不仅每天都在打孔、改错,还得记住一堆 0101010 这样长长的代码。 后来有人发明了一种汇编语言,这才开始用英文字符来替代一串串的二进制字符。 从此,像1000100111011000 这样的代码就可以用“mov ax,bx”这样的一串字母来替代,它的意思是“把b寄存器(一种机器元件)里的数据挪到a寄存器”。 再后来,程序越来越复杂,汇编语言也不够用,更高级的语言就诞生了。比如 C、C++、Java、Python、PHP、Rust、Nodejs 等等…… (编辑:晋中站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |