iOS逆向教程 1.1 逆向工程的介绍

一、什么是逆向工程

对于多年从事移动客户端开发的小伙伴来说,逆向工程这个名词可能有点生疏。逆向工程是在没有产品说明文档和产品接口文档的条件下,对产品进行反编译得到源码,研究分析源码然后得出其中的数据结构,业务逻辑或者某个功能的实现方式。一般的,app的开发我们称之为正向开发。正向开发是根据产品的需求文档和接口文档,为了实现一系统的功能去开发对应的软件。逆向开发则是直接通过分析现有的软件,去了解该软件的实现方式或者在该软件上添加自己需要的一些功能。举个简单的例子,有些正版的软件需要购买授权码,然后才能使用。那么很多一些破解版的软件,就是通过反编译软件,了解软件的实现方式,然后修改软件的业务流程,使之不需要授权就可以直接使用,这个就是逆向工程的范畴。

二、逆向工程可以干什么

2.1 软件的安全防护

你做APP开发的时候是否考虑过你APP的安全性?提到安全性你可能会说我对用户的账号密码进行了RSA加密或者多重md5加密, 那么其他的呢?比如说有些功能需要付费使用,如果别人通过逆向修改了你app的业务逻辑,绕过了付费直接使用呢?我之前开发过一款移动OA,里面有个打卡的功能,当时设计的流程是连上了公司的wifi才能打卡成功。那么如果逃避迟到呢?在电脑上装个模拟器远程打卡,或者搞两个手机,专门放个手机在公司,让早来的同事帮忙打一下。如果用逆向来逃避打卡就很简单,可以伪造公司的IP地址,在家里直接进行打卡。如果时间过了9点怎么办?一样的可以修改时间。或者更懒一点,直接自己添加一个自动打卡的功能,每天定时自动打卡。

从产品的角度来考虑,如何去避免这一漏洞,该如何去设计打卡的流程和限制条件,身为产品经理的你,考虑过么?其实,我个人觉得产品经理还是需要懂技术的。同样作为码代码的你,考虑过如何防止别人反编译你的代码么?虽然你不能防止别人反编译你的代码,但是你还是可以做点防护工作,比如代码混淆。不要说代码混淆只是安卓开发的小伙伴需要做的事情,不要觉得你做IOS开发没必要搞代码混淆。苹果虽然会对上传的ipa进行加密,但是对于逆向的开发人员来说,解密苹果加密之后的ipa包是很容易的,说到这里你是不是感觉有点头皮发麻了,哈哈。

2.2 编写插件

学习逆向开发另外一个作用可以用于编写一些插件,为某些APP定制开发一些特殊的功能。比如微信自动抢红包、自动添加好友、微信机器人等等。

三、学习逆向开发需要具体哪些条件

学习逆向开发还是有一定的门槛的,如果想开始学习逆向开发需要具体以下一些条件,当然也不是绝对的,仅供参考:

1、越狱手机;
2、两年iOS开发经验,熟练使用runtime; (新手学的也有,有经验的更好)
3、熟练使用mac命令行;
4、有足够的耐心和契而不舍的精神;

这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

长沙火山

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值