起落落落起的春招找实习之旅

春招投的不多,只感受了腾讯和阿里的面试,这里记录一下其中比较有用的几个问题。 面的第一家是腾讯科恩实验室,因为过年的时候就发招聘了,一面3.5号,电面54分钟。

  • 简单介绍一下项目,然后开始深挖简历,中间穿插着技术提问
  • 项目里静态分析和基于xposed动态工具介绍一下,如果不使用xposed,怎么实现动态分析工具
  • 做过脱壳没有,Android上的加固,脱壳技术介绍一下
  • 如何从海量的APP找出一个二次打包的应用呢,有几种思路(流量特征,代码相似度检测,UI节点遍历等,开放题)
  • xposed框架原理(zygote劫持,修改method结构体,将Java方法转成native方法hook。需要对xposed的源码有一定的了解)
  • APP的漏洞了解吗,应用克隆漏洞呢(支付宝那个),activity暴露攻击怎么利用,webview漏洞,其他漏洞等
  • 如何Hook动态加载的dex(博客写的loadclass方法)
  • ARM和x86汇编有什么区别,函数调用约定,函数传参和返回
  • 栈溢出原理,格式化字符串漏洞,有哪几种保护手段,怎么绕过栈上canary保护,ROP攻击原理

二面3.15号,隔了10天,组长面的,49分钟。

  • 现在Android平台上的几种加固方式(动态加载,类抽取,混淆,vmp),怎么脱壳,及各种技术细节
  • xposed框架原理(面试官很爱问这个问题),Frida原理,Frida和xposed有什么区别
  • Got表hook和inline hook区别
  • selinux安全相关
  • Android系统从按下开机键,启动流程是怎么样的(设备初始化,init进程,zygote进程,dalvik实例)
  • webview漏洞原理和防护,支付宝的克隆漏洞技术复现细节(腾讯家很爱问…)
  • 做过APP自动测试工具没有,这些漏洞如果编写自动化测试框架有什么思路

后来因为一些原因没有拿到这个offer(后来也庆幸自己没去,上天总是把最好的留到最后),中间穿插了阿里移动安全的面试,不得不说阿里的面试直接吓到我了,一面两个面试官,46分钟。

  • IDA有个F5的功能,那么如何阻止破坏F5分析呢(破坏堆栈,滥用noreturn函数)
  • 列举几个花指令的代码片段
  • Windows常见的加壳,脱壳技术
  • windows原创注入和hook的几种实现
  • Android的init_array和JNI_OnLoad的时机问题,如何绕过init_array段中的反调试
  • xposed hook原理,xposed究竟是如何实现一个dalvik模式的函数hook的,Frida是如何实现native函数hook
  • Android常见的加固和脱壳技术,vmp了解吗,如何让你设计一个虚拟机保护你怎么实现
  • Android反调试的几种手段
  • ollvm混淆的原理,手段,列举指令替换的例子,如何实现的控制流平坦化
  • iOS砸壳工具原理(DYLD_INSERT_LIBRARIES注入dylib动态库)
  • iOS如何在不越狱的情况下去hook一个c函数,了解fishhook吗,Method Swizzling呢
  • 编程方面:static函数的区别,局部变量和全局变量放在哪个段,局部变量一定都是放在栈上吗,特殊情况
  • int a(int b){ return a?100:10; }这个函数的作用是什么,用你最熟悉的一种汇编语言实现,这个函数的汇编指令大体上分成那几个模块

总的来说阿里的面试难度还是挺大的(我只能复现这些问题,因为有些问题真的是第一次听说),再加上我准备不足,于是一面就GG了,听说阿里今年每一面只要评级A+的,没办法。到了四月的正规批,被腾讯csig安全捞了简历但是面试隔了一周,所以最后的面试都已经是四月底了,一面深圳的电话,32分钟。

  • 看你比赛很多啊,你这些比赛收获最大的一个题目是什么
  • 现在这种爱加密和梆梆壳是如何函数级加密的,脱壳思路是什么
  • 有没有编译过Android源码,怎么编译内核修改traceid字段实现的反调试bypass
  • dalvik和ART虚拟机上函数hook区别是什么,ART虚拟机为什么执行速度加快(dex2oat,安装的时候编译成native机器码跑)
  • 混淆的so库有什么分析经验,最擅长一门的编程语言是什么,用过IDApython吗
  • 给你一个商业保护题目分析一下,给你一周的时间,不会的话写一下大体的分析。

这个题目是一个混淆的so库,问其中一个函数的作用(后来查了一下是头条系的,难度还是挺大的)。接下来二面是总监面,因为本来一周的so题目我两天分析完给他发过去了,可能他也比较满意,全程聊得都很轻松。三面就比较奇葩了,级别应该更高,问我什么怎么设计一个类似于斗地主一样的棋牌游戏,怎么设计一个操作系统呢,从日志里取出现次数最多的QQ号代码思路等。

最后成功拿到了深圳这边安全实验室的的offer,现在回头看来这个工作是最适合我的,感谢腾讯安全,给我的so库混淆题目还是很有难度的,比之前几场面试难多了,能把这个题目搞出来也算对得起无数个生涯奋斗的夜晚。感谢陪我面试走下来的x哥和小强,经过这两个多月的历练,感觉自己还是太菜了,需要学习的东西还有很多,在这个过程中得到的收获还是挺大的,对我以前的学习深度和技术思维都有了新的思考,以后要走的路依然很长,后续想起来什么再补充吧。