腾讯、美团、阿里控股移动安全二进制实习面经:挑战与收获

目录

腾讯、美团、阿里控股移动安全二进制实习面经:挑战与收获

一、前言

二、面试过程及问题解析

(一)IEG PC 游戏安全一面

(二)IEG PC 游戏安全二面

(三)IEG 手游安全面经 - 一面

(四)应用宝一面

(五)TEG 安全一面

(六)TEG 安全二面

(七)美团安全一面

(八)美团安全二面

(九)美团一面(另一场)

(十)美团二面

(十)美团二面

(十一)阿里控股一面

(十二)阿里控股二面

三、总结


一、前言

作为一名 25 届双非硕士,在移动安全领域的求职过程中充满了挑战与机遇。本文将详细分享我在腾讯、美团、阿里控股等公司的实习面试经历,包括面试问题、回答思路以及个人的感悟和收获,希望能为其他求职者提供有价值的参考。

二、面试过程及问题解析

(一)IEG PC 游戏安全一面

  1. arm 汇编知识
    • 答案:了解 ARM 汇编指令集,包括常见的指令类型、寄存器的使用、函数调用等。可以举例说明一些常用的 ARM 汇编指令,如 MOV、ADD、SUB 等。
  2. 代码混淆
    • 答案:代码混淆是一种通过改变代码的结构和逻辑,使其难以理解和分析的技术。常见的代码混淆方法包括重命名变量和函数、插入无效代码、控制流平坦化等。可以介绍一些代码混淆的工具和技术,以及如何应对代码混淆。
  3. 反调试
    • 答案:反调试是一种防止软件被调试的技术。常见的反调试方法包括检测调试器的存在、修改内存或寄存器的值以干扰调试、使用加密或混淆技术等。可以介绍一些反调试的工具和技术,以及如何绕过反调试。
  4. hook 原理
    • 答案:Hook 是一种在运行时修改函数调用的技术。它通过将目标函数的前几条指令替换为跳转指令,跳转到自己的 hook 函数,从而实现对目标函数的拦截和控制。可以介绍一些 Hook 的工具和技术,以及 Hook 的应用场景。
  5. frida 原理
    • 答案:Frida 是一种动态分析工具,它通过在运行时注入 JavaScript 代码来实现对应用程序的 hook。Frida 的原理是利用了操作系统的动态链接机制,将自己的代码注入到目标进程中,从而实现对目标进程的控制和分析。可以介绍一些 Frida 的使用方法和应用场景。
  6. IDA 常用快捷键,常见插件的原理
    • 答案:IDA 是一款强大的反汇编工具,它有很多常用的快捷键和插件。可以介绍一些 IDA 的常用快捷键,如 F5(反编译)、G(跳转到指定地址)等。对于常见插件的原理,可以介绍一些插件的功能和实现方式,如 Hex-Rays Decompiler(反编译插件)、IDA Python(脚本插件)等。
  7. IDA Python 的知识
    • 答案:IDA Python 是 IDA 支持的一种脚本语言,可以用于自动化分析和扩展 IDA 的功能。可以介绍一些 IDA Python 的基本语法和常用函数,如读取内存、修改指令、查找函数等。
  8. 然后给了一道 x86 的题目
    • 答案:根据题目要求进行分析和解答。如果是关于 x86 汇编的问题,可以结合 x86 汇编指令集的特点进行回答。

(二)IEG PC 游戏安全二面

  1. 聊天,windows 调试器原理,代码混淆
    • 答案:Windows 调试器的原理是通过控制目标进程的执行,获取其内存和寄存器状态,从而实现对程序的调试。常见的 Windows 调试器有 Visual Studio Debugger、WinDbg 等。对于代码混淆,可以参考一面的回答。
  2. 两个面试官主要就是闲聊没啥技术问题,面完过了两天挂了
    • 反思:虽然是闲聊,但也可能是在考察沟通能力、团队合作能力等软技能。在面试中要保持积极的态度,展示自己的综合素质。

(三)IEG 手游安全面经 - 一面

  1. 自我介绍
    • 答案:简要介绍自己的教育背景、项目经验和技能特长。
  2. ARM 的汇编指令集 实现跳转之类的需要用到哪些指令,回答了 B BL 然后问这两的区别
    • 答案:ARM 汇编指令集中,实现跳转的指令有 B(Branch)和 BL(Branch with Link)。B 指令是简单的跳转指令,只进行地址跳转;BL 指令是带链接的跳转指令,在跳转的同时将下一条指令的地址保存到链接寄存器(LR)中,以便后续返回。
  3. 问怎么实现注入,了解 ptrace 不,ptrace 能实现注入不
    • 答案:实现注入的方法有很多种,如代码注入、DLL 注入等。ptrace 是一种用于跟踪和控制进程的系统调用,但它通常不能直接实现注入。可以介绍一些其他的注入方法,如使用 Hook 技术、修改内存等。
  4. elf 的文件结构
    • 答案:ELF(Executable and Linkable Format)是一种可执行文件和链接格式,它通常用于 Linux 系统。ELF 文件结构包括文件头、节头表、程序头表等。可以介绍一些 ELF 文件的主要组成部分和其作用。
  5. 然后 frida hook 相关知识,断点的类型,具体怎么实现的,区别是什么
    • 答案:Frida hook 可以通过在运行时注入 JavaScript 代码来实现对应用程序的 hook。Frida 中的断点类型包括软件断点和硬件断点。软件断点是通过修改内存中的指令为断点指令来实现的,硬件断点是通过设置处理器的调试寄存器来实现的。软件断点的优点是实现简单,缺点是容易被检测到;硬件断点的优点是难以被检测到,缺点是实现复杂。
  6. 怎么定位反调试位置,如果有反调试怎么绕过,如果找不到相关的反调试函数怎么办,怎么去分析
    • 答案:定位反调试位置可以通过静态分析和动态分析相结合的方法。静态分析可以通过查看反汇编代码、查找特定的函数调用等方式来定位反调试代码;动态分析可以通过使用调试器、跟踪程序执行等方式来定位反调试代码。如果有反调试,可以尝试绕过反调试,如修改内存中的反调试代码、使用反反调试工具等。如果找不到相关的反调试函数,可以通过分析程序的行为、查找可疑的代码片段等方式来定位反调试代码。
  7. 有没有做过驱动
    • 答案:根据实际情况回答,如果做过驱动,可以介绍一下驱动的开发经验和遇到的问题;如果没有做过驱动,可以表达对驱动开发的兴趣和学习的决心。
  8. 用户层读写内存和内核层读写内存的区别,然后用户层怎么检测有没有被读写过内存,内核层有没有办法检测
    • 答案:用户层读写内存和内核层读写内存的区别主要在于权限和实现方式。用户层读写内存需要通过系统调用或库函数来实现,权限较低;内核层读写内存可以直接访问物理内存,权限较高。用户层可以通过一些内存检测工具(如 Valgrind)来检测有没有被读写过内存;内核层可以通过一些内核调试工具(如 Kprobes)来检测有没有被读写过内存。
  9. 然后有没有遇到过代码混淆,我说 ollvm 花指令,然后回答了这两的原理,以及怎么去混淆,这部分问的比较细致。还问了控制流平坦化怎么区分真实快
    • 答案:代码混淆是一种通过改变代码的结构和逻辑,使其难以理解和分析的技术。OLLVM(Obfuscator-LLVM)是一种基于 LLVM 的代码混淆工具,它通过对代码进行控制流平坦化、虚假控制流插入、指令替换等方式来增加代码的分析难度。花指令是一种通过插入一些无效的指令来干扰反汇编的技术。对于代码混淆,可以使用反混淆工具、静态分析和动态分析相结合等方法来进行分析。对于控制流平坦化,可以通过分析程序的控制流图、查找关键的跳转指令等方式来区分真实的代码块。
  10. F5 原理(没答上来,回答了怎么干扰 F5)

  • 答案:F5 是 IDA 中的一个功能,它可以将汇编代码反编译为高级语言代码。F5 的原理是通过分析汇编代码的结构和逻辑,生成对应的高级语言代码。如果要干扰 F5,可以通过修改汇编代码的结构、插入无效的指令等方式来使 F5 生成错误的高级语言代码。

  1. hook 的类型,具体怎么实现,还涉及 so 加载流程

  • 答案:Hook 的类型有很多种,如函数 Hook、系统调用 Hook、消息 Hook 等。具体实现方式可以通过修改内存中的指令、使用 Hook 框架等方式来实现。对于 so 加载流程,可以介绍一下动态链接的原理和 so 文件的加载过程。

  1. 然后就是游戏逆向相关的,因为我写了相关项目,问了 UE4 怎么逆向,unity 怎么逆向,怎么找坐标,坐标怎么显示到屏幕

  • 答案:游戏逆向是一个复杂的领域,不同的游戏引擎有不同的逆向方法。对于 UE4 和 Unity,可以通过分析游戏的二进制文件、使用反编译工具、跟踪游戏的执行等方式来进行逆向。找坐标可以通过分析游戏的内存、使用调试器等方式来实现。坐标显示到屏幕可以通过修改游戏的渲染代码、使用 Hook 技术等方式来实现。

  1. 还问了壳的类型,然后怎么脱,有没有分析过 vmp,然后就是一些细节的问询

  • 答案:壳的类型有很多种,如压缩壳、加密壳、虚拟机壳等。脱壳的方法也有很多种,如静态脱壳、动态脱壳、内存转储等。对于 VMP(Virtual Machine Protection),可以通过分析其虚拟机的指令集、使用反虚拟机工具等方式来进行分析。

(四)应用宝一面

  1. 被同学推到开发的岗位,一点不懂,面试官也知道我不懂,没为难我,聊了下天,面完秒挂
    • 反思:在面试前要对所应聘的岗位有一定的了解,避免出现完全不了解的情况。如果被推荐到不熟悉的岗位,可以提前学习一些相关知识,以便在面试中能够有一定的交流。

(五)TEG 安全一面

  1. VMP 解释器定位流程
    • 答案:VMP(Virtual Machine Protection)是一种虚拟机保护技术,它通过将程序的代码转换为虚拟机指令,然后在虚拟机中执行这些指令,从而增加程序的分析难度。定位 VMP 解释器的流程可以通过静态分析和动态分析相结合的方法。静态分析可以通过查找特定的函数调用、分析程序的控制流图等方式来定位 VMP 解释器的入口点;动态分析可以通过使用调试器、跟踪程序的执行等方式来定位 VMP 解释器的执行过程。
  2. 怎么实现的 trace
    • 答案:Trace 是一种跟踪程序执行的技术,它可以记录程序的执行路径、函数调用等信息。实现 trace 的方法有很多种,如使用调试器、插入日志代码、使用 Hook 技术等。可以介绍一些具体的实现方法和其应用场景。
  3. so 注入方式
    • 答案:so 注入是一种将动态链接库(so 文件)注入到目标进程中的技术。常见的 so 注入方式有代码注入、DLL 注入、LD_PRELOAD 环境变量等。可以介绍一些 so 注入的方法和其原理。
  4. 二代壳怎么回填
    • 答案:二代壳是一种更复杂的壳技术,它通常采用了更高级的加密和混淆技术。回填二代壳的方法比较复杂,需要对壳的结构和原理有深入的了解。一般来说,可以通过分析壳的代码、查找关键的跳转指令等方式来找到回填的入口点,然后进行回填操作。
  5. 协议分析的流程
    • 答案:协议分析是一种通过分析网络协议的数据包来了解协议的结构和功能的技术。协议分析的流程可以包括以下几个步骤:捕获数据包、分析数据包的结构、识别协议的类型、解析协议的内容、提取有用的信息等。可以介绍一些协议分析的工具和技术,以及其应用场景。

(六)TEG 安全二面

  1. 爬虫遇到的问题
    • 答案:在进行爬虫开发时,可能会遇到一些问题,如反爬虫机制、IP 封锁、验证码识别等。可以介绍一些解决这些问题的方法,如使用代理 IP、模拟用户行为、使用验证码识别工具等。
  2. 整体的分析流程,怎么对抗的
    • 答案:整体的分析流程可以根据具体的问题和需求来确定。一般来说,可以包括需求分析、数据采集、数据处理、数据分析、结果展示等步骤。在对抗方面,可以采取一些技术手段,如加密、混淆、反调试、反爬虫等,来保护自己的程序和数据。
  3. 指纹对抗
    • 答案:指纹对抗是一种通过修改设备的指纹信息来避免被识别和跟踪的技术。常见的指纹对抗方法有修改设备的硬件信息、使用虚拟机、使用代理 IP 等。可以介绍一些指纹对抗的工具和技术,以及其应用场景。
  4. ollvm
    • 答案:参考前面的回答。
  5. 二面莫名其妙,没问啥具体的技术问题,面完第二天挂了,难过
    • 反思:虽然二面没有问具体的技术问题,但也可能是在考察其他方面的能力,如沟通能力、团队合作能力等。在面试中要保持积极的态度,展示自己的综合素质。

(七)美团安全一面

  1. 一道算法
    • 答案:根据题目要求进行算法设计和实现。可以介绍一些常见的算法思想和数据结构,如贪心算法、动态规划、栈、队列等。
  2. 具体 app 分析流程 很细 遇到过什么对抗
    • 答案:具体的 app 分析流程可以包括以下几个步骤:解包 app、分析清单文件、反编译代码、静态分析、动态分析等。在分析过程中,可能会遇到一些对抗措施,如代码混淆、反调试、加密等。可以介绍一些应对这些对抗措施的方法。
  3. 一些汇编的知识
    • 答案:参考前面的回答。
  4. 加密算法的种类,AES 算法
    • 答案:加密算法的种类有很多种,如对称加密算法、非对称加密算法、哈希算法等。AES 算法是一种对称加密算法,它具有高效、安全的特点。可以介绍一下 AES 算法的原理、加密过程和解密过程。
  5. 花指令怎么识别边界的
    • 答案:花指令是一种通过插入一些无效的指令来干扰反汇编的技术。识别花指令的边界可以通过分析指令的结构、查找关键的跳转指令等方式来实现。可以介绍一些识别花指令边界的工具和技术。

(八)美团安全二面

  1. 算法
    • 答案:根据题目要求进行算法设计和实现。
  2. 给你个 app,怎么去分析
    • 答案:参考前面的回答。
  3. 代码混淆怎么去除
    • 答案:代码混淆是一种通过改变代码的结构和逻辑,使其难以理解和分析的技术。去除代码混淆的方法有很多种,如使用反混淆工具、静态分析和动态分析相结合等。可以介绍一些具体的去除代码混淆的方法。
  4. 专利介绍
    • 答案:如果有相关的专利,可以介绍一下专利的内容、创新点和应用场景。如果没有专利,可以表达对专利的认识和理解,以及对创新的追求。
  5. 实习经历的提问
    • 答案:根据自己的实习经历,回答面试官的问题。可以介绍一下实习的公司、岗位、主要工作内容、收获和体会等。

(九)美团一面(另一场)

  1. 针对我研究生的方向,脱壳沙箱怎么实现的,怎么对 VMP 实现分析的,怎么注入 so 的
    • 答案:脱壳沙箱是一种用于分析加壳程序的工具,它可以在不运行程序的情况下,对程序的壳进行分析和脱壳。对 VMP 实现分析可以通过分析其虚拟机的指令集、使用反虚拟机工具等方式来进行。注入 so 的方法可以参考前面的回答。
  2. 系统的启动流程
    • 答案:系统的启动流程可以包括以下几个步骤:BIOS 自检、加载引导程序、加载操作系统内核、初始化系统环境等。可以介绍一下每个步骤的具体内容和作用。
  3. 常见汇编指令 寄存器的用法,脱壳 trace 的实现 unidbg 断点功能
    • 答案:参考前面的回答。
  4. ollvm
    • 答案:参考前面的回答。
  5. 花指令
    • 答案:参考前面的回答。
  6. 美团 app 指纹使用了哪些数据
    • 答案:美团 app 的指纹可能使用了设备的硬件信息、软件信息、网络信息等。具体的数据可以通过分析美团 app 的代码、使用抓包工具等方式来确定。
  7. 怎么伪造新机
    • 答案:伪造新机可以通过修改设备的指纹信息来实现。常见的方法有修改设备的硬件信息、使用虚拟机、使用代理 IP 等。可以介绍一些具体的伪造新机的方法和其风险。

(十)美团二面

  1. 爬虫对抗,协议攻击对抗
    • 答案:在爬虫对抗方面,可以采取限制访问频率、检测异常请求模式、使用验证码、IP 封锁等措施。对于协议攻击对抗,可以加强协议的安全性设计,如加密通信、验证请求来源、防止篡改等。同时,持续监测网络流量,及时发现异常行为并采取相应措施。
  2. 研究方向 脱壳和恶意软件检测,怎么检测的,基于什么
    • 答案:对于脱壳,可以通过静态分析和动态分析相结合的方法。静态分析可以检查文件结构、识别壳的特征等;动态分析可以在运行时监测程序行为,如内存变化、系统调用等,以确定是否存在壳。恶意软件检测可以基于特征码匹配、行为分析、机器学习等方法。特征码匹配是通过与已知恶意软件的特征进行对比;行为分析则关注程序的运行行为是否异常,如修改系统关键文件、建立异常网络连接等;机器学习可以通过训练模型来识别恶意软件的特征模式。
  3. 四大组件,activity 和 service 的区别
    • 答案:Android 的四大组件包括 Activity、Service、BroadcastReceiver 和 ContentProvider。Activity 是用户界面的组成部分,负责与用户交互;Service 是在后台运行的组件,用于执行长时间运行的任务,不需要用户界面。Activity 通常是可见的,与用户有直接交互;Service 可以在后台默默运行,即使应用在前台不可见也能继续工作。Activity 有生命周期管理,会随着用户操作而暂停、恢复或销毁;Service 的生命周期相对较为稳定,除非被明确停止,否则会一直运行。
  4. java 层的 hook 原理(没答上来,只知道 C 的 hook)
    • 答案:在 Java 层,hook 通常可以通过 Java 反射机制或者动态代理来实现。反射机制可以在运行时获取类的信息并修改其行为。动态代理则是通过创建一个代理对象来拦截对目标对象的方法调用,从而实现对方法的增强或修改。
  5. 实习经验中,移动风控策略怎么优化的。
    • 答案:可以从多个方面优化移动风控策略。例如,加强数据收集和分析,提高对异常行为的识别能力;优化风险评估模型,更准确地判断风险等级;建立实时监测系统,及时发现风险并采取应对措施;加强与其他安全系统的协作,形成全方位的风控体系;对用户进行安全教育,提高用户的安全意识等。
  6. 常见的灰黑产
    • 答案:常见的灰黑产包括恶意注册、刷单、刷量、诈骗、盗号、数据窃取等。这些行为通常利用技术手段或社会工程学方法,以获取不正当利益或破坏正常的业务秩序。
  7. 对抗手段 攻击手段
    • 答案:对抗灰黑产的手段包括加强身份验证、加密数据传输、监测异常行为、建立风险预警系统、与执法部门合作等。攻击手段可能包括漏洞利用、社会工程学攻击、恶意软件注入、网络钓鱼等。

(十一)阿里控股一面

  1. 感觉问的不难,就是逆向那一套,不过从安卓平台到了 ios 平台,面试很友好,技术问题问的不多
    • 答案:对于 iOS 平台的逆向问题,可以提及一些与 Android 平台的不同之处,如 iOS 的沙盒机制、代码签名等。同时,可以表达对学习 iOS 逆向技术的兴趣和决心。
  2. 混淆对抗
    • 答案:在 iOS 平台上,混淆对抗可以采用类似 Android 平台的方法,如代码混淆、字符串加密、函数名重命名等。同时,iOS 还可以利用其独特的特性,如静态库和动态库的加载机制,来增加逆向的难度。
  3. VMP 对抗
    • 答案:对于 iOS 上的 VMP(Virtual Machine Protection),可以分析其虚拟机的指令集和执行流程,尝试使用反虚拟机工具或通过动态分析来理解其保护机制,并寻找突破的方法。
  4. 逆向过程遇到的问题
    • 答案:可以分享在逆向过程中遇到的具体问题,如代码混淆导致分析困难、反调试机制的阻碍、加密算法难以破解等,并说明自己是如何尝试解决这些问题的。
  5. 对二进制漏洞挖掘的了解
    • 答案:二进制漏洞挖掘是通过分析二进制程序的代码和内存布局,寻找可能存在的安全漏洞。可以提及一些常见的漏洞类型,如缓冲区溢出、整数溢出、格式化字符串漏洞等,并介绍一些漏洞挖掘的方法和工具,如 fuzzing 测试、静态分析工具、动态调试等。

(十二)阿里控股二面

  1. 风控指纹对抗,因为研究过阿里系软件,所以这块问的比较细,细节的参数之类,然后研究到哪一步了
    • 答案:详细介绍对阿里系软件的风控指纹对抗的研究过程,包括分析指纹的生成机制、识别关键参数、尝试绕过指纹检测的方法等。说明目前研究的进展和成果,以及未来的研究方向。
  2. 实习经历的介绍,也比较细。
    • 答案:全面介绍实习经历,包括实习的公司、岗位、主要工作内容、遇到的挑战和解决方法、取得的成果等。突出自己在实习过程中的学习和成长,以及对移动安全领域的理解和贡献。
  3. 然后就是唠嗑,生活上的了。
    • 可以轻松地与面试官交流生活中的兴趣爱好、未来的职业规划等,展示自己的综合素质和积极向上的生活态度。

三、总结

在面试的过程中,我不仅学到了很多专业知识和技能,还提高了自己的沟通能力和应变能力。虽然在求职过程中遇到了一些挫折,但最终成功收获了阿里和美团的 offer,这让我感到非常欣慰。同时,我也认识到自己还有很多不足之处,需要不断学习和进步。希望我的面经能为其他求职者提供一些参考,祝大家都能找到自己满意的工作。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值