• 移动安全/app逆向学到自闭(1) -- 开篇简介


    引言 

    现在是数据为王的时代,很多平台,不管国内还是国外都有各种防护,保护自己的数据,所以你会发现,最近几年,要用个东西,要查个东西,变得越来越不再依赖百度之类的搜索引擎了,为什么?

    因为很多平台已经越来越封闭,不再或者很少给搜索引擎提供搜索功能了,再加上现在手机是人手一部的时代,未来还会更泛滥,那么各大平台,各大公司都是希望的让用户停留在自己平台的时间多一点,而用电脑的人反而变少或者变得有需要的时候才会用电脑了,比如玩3A大作,那必须得用电脑,除了手机上不能实现或者实在不方便操作意外,其他的电脑能完成的,手机也能完成。

    所以,大势所趋,各大平台也开始主推移动端平台,不管是app还是m端(也叫h5,手机端的网页版),或者说小程序,都算是移动端了,而且很多必要的环节里也必须要手机操作才行,比如你在淘宝买个东西,你本来一直是在电脑上看的,你看好以后,到最后付款的时候,你还是把你的手机掏了出来扫码支付,而电脑端的平台反而成了展示为主,不再是主力业务,相信你一定遇到过,打开某平台的电脑端网站,用着用着你就被限制了,提示让你下载app才能使用,或者有些平台的电脑端网站就是个app下载页面,而不是数据展示页面或者功能页面了,你必须要下载他家的app你才能使用了,所以web端正在被app逐渐的替代

    所以,这样的结果就导致,可能3年,5年以后,web端会更少,那么我们爬虫工程师,到目前为止,很大部分的工作内容和工作经验都是针对web端的爬取的,包括我也是,然后如果你是最近正在找工作的,你绝对看到过有些公司的招聘要求是能搞app端的数据了

    行业走势啊,没办法,作为爬虫工程师,你现在不得不跟着学app的爬取,不然你就会被淘汰,再不然你就转行吧,这个问题其实我在我之前的博客里有提过,但是最近是真的越发的体会到这种行情了,而我们从爬虫过渡到app,首先java或者object-c/swift肯定就不会的,而市面上的安卓应用基本都是java写的,ios端的是用object-c/swift写的,以后的鸿蒙,也说不定会多一种逆向方向,这方面,我们肯定是不能跟做安卓和ios正向开发了好几年的人比的,那么只有恶补这方面的知识了。

    为什么要做app逆向

    假如现在你正在分析某app的接口,你突然的发现,以前的那套流程走不下去了,为什么?你发现接口抓不到了,因为app端有ssl证书检测,你也许过证书验证就花了好多时间研究,是不走代理呢?还是用的自己那一套协议呢?比如微信用的mmtls,还是有双向证书认证呢?抠出证书文件,也许这个证书还有密码,花了半天,把密码找到,导入到抓包工具开始继续抓包,这一关就算过了,接口里面多了个sign加密参数,如果是web端的话,那还可以搞搞js逆向,但是这是app啊,你怎么搞?只有逆向了,你要找出app源码里面的sign生成的方法在哪,现在主流的app都有加固,那么首先你得会脱壳吧,脱壳分了工具脱壳和手动脱壳,那工具脱壳你选用哪些呢?是dumpdex还是fdex2,还是fart,还是youpak呢?而且现在国内做加固的平台那么多,不同的加固平台有不同的加固方法,也就有不同的脱壳方法,你这方面至少得恶补下吧,手动脱壳,那汇编,寄存器啥的,得有个大概熟悉吧,搞完脱壳,拿到源码的dex,你发现里面的代码是混淆过的,那么你得解混淆吧,怎么解,用jeb,还是jadx,还是什么呢?最后你解完混淆,你还是没找到在哪里,那么你得作调试吧,firda,objecttion这些工具得会用吧,hook得会用吧,找到那段关键代码时,你抠出来,准备用python代码实现,然后你发现还是不行,那把那段代码转为class,再转jar包,用python库调用jar得结果,结果还是不行,那你得修改或者注释源码里面的代码吧,在哪里修改,哪里注释,源码dex是smail语言,你得会smail吧,改完后,重打包,安卓app打包流程也需要会吧,找一个签名生成文件,生成签名,然后用这个签名打包成新的app,安装上运行的时候,你发现闪退了,那么这个app有签名校验,那么你又得回过去改smail源码吧,最后折腾下来,你终于把这个app吃下来了。

    这其中经历这些,远远比搞一个web端的接口难很多很多倍,所以这也是一个门槛,我上面罗里吧嗦说那么多,都是我以前遇到过的或者看到过别人发的技术贴里的,那么这些东西,你不花个几个月时间,你是真的搞不下来的,我估计很多人在抓包时遇到的证书检测那里就卡死了,不夸张的说,因为我最开始搞app的时候就是,搞了半天,fiddler抓包就是抓不到,或者手机上装了证书后,app就提示没网之类的,再或者只能抓到静态资源(图片,视频),数据接口就是抓不到。

    现在爬虫工程师一直是灰色地带,搞app逆向,搞不好也会进去,看你怎么选择,移动安全这块,以后大概率是个大头,你学起来的时候,你会发现,app端有好多骚操作,是你web端可能搞一辈子都遇不到的,这也是它吸引我的地方,有时候看到别人的技术贴分析过程时,那种看到奇思妙想的时候,不自觉的起鸡皮疙瘩那种感觉,可能懂的人才能懂了。而且,像什么风控,app端的风控可能更成熟点,对这种感兴趣的,你搞起来绝对不无聊,老带劲了。

    当然不是说web端就没意思了,我其实js逆向和app逆向也都在研究,什么某数,某美,某验啥的,jsdom,wasm啥的,js平坦流,ast啥的也在研究,这个估计也是目前web端的天花板了,有很多东西确实值得研究的,所以,js逆向部分我也会跟着一起更新的。

    不是在贩卖焦虑,懂的自然懂

  • 相关阅读:
    给DOM元素绑定click事件也有学问
    几个JavaScript的浏览器差异处理问题
    CSS样式权重的级联cascade的概念
    你知道HTML标签设计的本意吗?
    一些奇怪的JavaScript试题
    JavaScript如何计算两个日期间的时间差
    Vim默认开启语法标识功能
    理解Python中的继承规则和继承顺序
    An Easy Introduction to CUDA C and C++
    super()
  • 原文地址:https://www.cnblogs.com/Eeyhan/p/15150448.html
Copyright © 2020-2023  润新知