安卓逆向面试题汇总 技术篇(1)

admin 2022年1月10日11:32:52评论284 views字数 2644阅读8分48秒阅读模式

首发安全客 链接:https://www.anquanke.com/post/id/246020

因为发完之后发现,某些地方描述不精确,所以这里做了一点微调。

文章太长 所以准备分7个部分发出来


正文开始:

大家好,我是王铁头 一个乙方安全公司搬砖的菜鸡,持续更新移动安全,iot安全,编译原理相关原创视频文章。

因为本人水平有限,文章如果有错误之处,还请大佬们指出,诚心诚意的接受批评。

简介

这篇文章详细讲解了,安卓面试经常会问到的几个技术问题。

以及相关的背景知识,技术原理。

文章中用到的资料代码 看这里:https://github.com/wangtietou/Wtt_Mobile_Security


本菜鸡大概面试了30多家公司,因为学历比较差(大专),很多公司看了简历直接就把我刷了。或者简历没看就把我刷了,在boss直聘上看到大佬已读不回 简直是常规操作了。

很多时候根本走不到技术那里。

走到技术那里后,面试失败的概率大概30%左右,有时候是因为我技术菜,有时候是因为要做的细分领域不太一致不太想干,有时候是因为谈不拢工资(我想多要一点,对方不给,哈哈哈哈)。


除了面试经验比较多,面试别人的经验也比较多。

因为我在公司时间也比较长,把之前招我进来的同事成功熬走了,所以现在android逆向面试,移动安全面试这块也是我当面试官。

所以,不管是面试还是被面试,我铁头多少也有一些经验。


安卓逆向面试题汇总 技术篇

面试官经常问的几个问题如下:

  1. 常见的加固手段有哪些

  2. 安卓反调试一般有哪些手段,怎么去防范

  3. arm汇编 b bl bx blx 这些指令是什么意思

  4. ida xx操作的快捷键是哪个?

  5. Xposed hook 原理  frida hook 原理

  6. inline hook原理

  7. ollvm 代码混淆你了解吗?要怎么去处理

上面是一个汇总的目录,下面一个一个仔细拆分  详细说说


安卓逆向面试题详解

1)常见的加固手段

网上有的人把安卓壳分成五代壳,有人分成三代壳。

不同的人对这块的,具体的区分和看法不同,但是五代壳更细分一些。

在加固厂商内部,用的是五代壳的标准,当然他们PPT已经出现了第6 ,7 ,8代壳。我入行以及搬砖的时候,周围人用的基本都是下图的标准,所以我这里用五代壳来描述。

安卓逆向面试题汇总 技术篇(1)

安卓逆向面试题汇总 技术篇(1)上面的图把安卓五代壳的优缺点,实现逻辑讲的非常好。大佬们理解了上面这两张图,回答第一个问题基本就ok了。


但是,大哥们既然看到了我这个文章,大佬们就可以风骚一点多说一些,说些面试官也不知道的。毕竟, 唬不住5k,唬得住50k。

说完上面的大概就是个及格分,说点下面的,面试官如果不了解这块的话当时就被你给唬住了。


大佬们如果在公司负责甲方安全,采购过企业版加固,或者在加固厂商搬过砖的话就会知道。加固虽然大体上分为免费版和企业版。免费版里面有的公司基本没啥加固选项,上传个apk应用包梭哈就完事了。

比如这种。

安卓逆向面试题汇总 技术篇(1)

有的公司还是 比较人性化的,用户可以根据自己需求选择加固选项。比如这种

安卓逆向面试题汇总 技术篇(1)

可以看到,免费版这里,厂商玩的花样并不多,有的就是上传一个包,啥加固选项没有,有的虽然有,加固选项也就几个。

但是企业版这里,厂商们花样都比较多。假设某加固公司,企业版实现了6个功能(一般是十几个 二十几个 我这里做个比喻)。功能如下:

  1. 签名校验。 

  2. 密钥白盒

  3. 反xposed frida

  4. 源代码深度混淆

  5. h5加固

  6. 内存防dump

这上面的功能是插件化的,你可以根据实际应用场景选择其中几个功能,也可以都要。比如你的app根本么有h5页面,你选个h5加固不是白花钱吗?

这里套餐不同,价格也是不同的。(企业壳大概一年几万吧)

销售那里不同的功能组合有不同的报价,就像A公司选了1,3,5。 你选了 2,4,6. 虽然都是企业版,但是你和别人的企业版还是有区别的。

说这些就是表示,不同apk即使用了同一家厂商的企业版加固,选择的加固方式也是不一样的。

而且,一些行业的客户,加固厂商各自也会有针对行业的一些加固手法。

比如一些手游,加固厂商就会有一些反外挂的操作,针对内存读写的强检测,一些金融客户,因为对用户信息保密程度要求高,就会做一些安全键盘和防录屏截屏操作。

这里一些加固公司还把加固方式也做成了插件化


比如一个apk,同时把2代壳和4代壳的加固方式都用上。

2代壳不落地加载,结合4代壳dexvmp。或者3代壳指令抽取结合4代壳dexvmp,这里混合也是他们的常用套路,不会影响app正常运行。


说到这里有的大佬可能会疑惑,2代3代4代不是不同的加固方式吗?

是怎么结合的哪?

这里我解释一下假设加固厂商拿到了一个未加固的dex, 那么2 3 4代壳子是怎么结合的。

1) dex比较重要的部分,比如算法部分,登录模块,这块的方法内容被抽取转换成自定义的指令格式,然后调用系统底层的jni方法执行。(4代壳dexvmp)

2) 其他不重要方法体直接抽空, 单独加密,运行的时候方法体内容再动态还原(3代抽取)。

3) 加载这个dex的时候(现在的dex已经经过了上面2步处理 里面的方法很多被抽空,一些被dexvmp保护), 并不是写出到文件系统用 dexclassloader这样的api去加载, 而是读到内存中直接加载,直接调用c层API加载内存中的dex(2代不落地加载)

还有一些更深度的定制,反正有钱就是大爷,你钱多干啥都可以商量,一般企业壳加固后你还是可以看到厂商的特征加固文件。

比如你看到libjiagu.so就觉得是360 ,深度定制后,特征文件你一个都找不到,而且还可以实现一些定制化的需求。

安卓逆向面试题汇总 技术篇(1)


企业版功能插件化,套餐化,加壳方式组合这些东西,一般来说很多人是不知道的,所以说说这些,能很快的把你从众多普通面试者中区分出来。

安卓逆向面试题汇总 技术篇(1)

把这一点说上,到时候面试官说不定因为过于欣赏你,把他大学刚毕业,没有男朋友的妹妹介绍给你了。

所以,当面试官问加固方式这块的时候,你除了把两张图的内容说清楚,还可以清清嗓子,一脸高手寂寞的神情。

悠悠地说:

其实吧,很多我搞过的企业壳,看的出来挺多都是定制化的,有的是2代壳结合4代壳的加固,有的是2代3代混合4代。

感觉很多企业壳,根据不同的业务场景,买了不同的加固套餐,比如xx应用,我脱壳的时候,发现有 清场sdk, ollvm混淆。另一个企业壳根本就没有这些,大部分逻辑在后端,不过也搞了密钥白盒和H5加固。

还有一些游戏的企业壳,内存读写明显防护是比较厉害的。金融这块的也基本都有安全键盘,和防截屏的一些保护。这时候,状若无意的对面试官说:“你说是吧”。

perfect.


本文始发于微信公众号(移动安全王铁头):安卓逆向面试题汇总 技术篇(1)

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年1月10日11:32:52
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   安卓逆向面试题汇总 技术篇(1)https://cn-sec.com/archives/481702.html

发表评论

匿名网友 填写信息