二进制安全面经汇总
先介绍一下本人情况 985本,安全科班,上大学才开始接触的二进制安全,三月初开始准备春招,主投安全岗,辅投开发岗
主力语言C/C++/Python,接触过C#和java,涉猎比较广,各个领域都有过接触。安全能力上二进制接触比较多,web有过了解,主要经历在安全系统研发方面。
不得不说的是安全岗就业面确实比较窄,我原本以为自己很热爱安全,现在有一点点怀疑了
话不多说,上干货!
(我个人总结面经比较喜欢按主题模块分类,不是很喜欢以公司来分类的,所以将各个公司面经都整合成一个了,遇到新问题就往里面加)
C/C++逆向开发
- C/C++结构体大小如何计算?
- C++的结构体和C的区别?
- new和malloc的区别(delete和free的区别)
- 如何找到main函数?(这里要继续细分,win32桌面程序,控制台程序,linux下的命令行程序)
- 构造函数与析构函数调用时机
- C/C++编程有没有遇到的安全问题(我讲的一个浅构造导致的double free)
- 重载如何实现(静态函数名重载,动态虚函数重写)
- 虚函数如何实现?(重点,几乎必问,虚表指针位置)
- 虚继承/多重继承的内存结构(VC和G++中虚继承中虚表结构不太一样,这里我研究过,扯了一大堆)
- switch的实现与优化(难点)
- try-catch的实现与优化(难点,会顺着问到windows异常处理机制)
- 三种循环哪种效率最高?
- 32位下调用约定有哪些?(stdcall c标准调用 fastcall thiscall)
- 64位下调用约定?(VC:rdx rcx r8 r9,GCC: 多rdi rsi)
二进制逆向(反调试/脱壳/免杀/挂钩/注入)
这部分为安全岗面试重点
- 32位程序如何在64位机器上运行?
- PE格式(重点,几乎必问)
- PE装载进内存执行的过程(重点,内存对齐,IAT表建立,重定位)
- 知道哪些反调试手段?(SEH,反断点,查调试环境)
- gdb/od基本命令
- 调试器原理(三大断点实现)
- 如何脱壳(压缩壳/加密壳/虚拟化壳)
- 为什么脱完壳要修复导入表?
- 花指令有没有脱过?
- 有没有写过IDA脚本(逆向岗位几乎必问)
- 如果一个程序没有字符串/字符串被混淆了如何找核心代码?
- 内存泄漏如何排除
- 有没有做过免杀,怎么做的?(静态二分法定位,思考对面规则怎么写的,动态绕钩子检查,卸钩子,提权走底层)
- 沙箱有接触过吗?(并没有...)
- 有没有用过虚拟机?(QEMU, VMware Bochs)虚拟化有哪几种方式实现?虚拟机查杀有什么思路过吗?
- Hook有哪些方法?(几乎必问,inline hook,函数表hook)
- 如果inline hook前几个字节不能正好5字节Patch如何处理?
- 分析过哪些病毒样本?病毒分析有什么方法?(问到了深信服的实习)
- 特征码怎么提取的?
- .NET的实现(因为项目研究过.NET)
- flags寄存器有哪些位,有什么作用(OF, ZF, TF, 虚拟位)
- 控制寄存器有哪些,有什么作用(可以重点说说CR0和CR3)
- 共享内存怎么实现
- windows下有哪些注入方式?怎么实现?(重点)
- windows下3环向0环的切换过程?
- ARM汇编了解过吗(没有...)
- 如何防止内存被扫描?
- 如何隐藏进程?(说了一个CPU控制区找EPROCESS断链)隐藏之后对进程运行有影响吗?
漏洞利用
楼主pwn菜鸡,web不是很熟悉,说得都是比较基础,不过其实对漏洞利用很熟悉的面试官也不是特别多。
- windows/linux基本保护机制(栈执行保护,基址随机化,代码段随机化,栈溢出保护)
- 怎么绕过?
- pwn的一些印象深刻的题目,或是技巧(这部分如果面试官不是相关领域的建议不要说太深入,太细节的技术很复杂,很难讲懂)
- 堆漏洞利用?(double free, UAF)
- 栈上漏洞利用有哪些
- linux堆管理,glibc/slab/伙伴算法
- 脏牛
- web漏洞有了解吗?
- SQL注入、XSS攻击原理?
- ARP欺骗怎么实现的?
- 如何判断远端服务器的操作系统?
项目相关
- Powershell防御项目讲一下?
- 怎么防止无文件攻击?
- 分析过哪些脚本病毒?
- 加密混淆怎么处理?
- 知道哪些加密算法,非对称加密与对称加密的区别?
- .NET钩子怎么下的?
- 做过流量检测?说说怎么提的特征?
- 顺便问到TCP连接建立与释放(典中典)
- 问到毕业设计,简述一下你的静态分析算法怎么设计的
- 开发过Linux键盘监控?怎么实现的?
- windows调试器怎么实现的?(3环API...)
- 写过端口扫描工具,怎么实现的?(netfilter框架编程)
- ARP Poison怎么写的?(原始套接字,linux上好写一些)
- 写过区块链的项目,说一下?(写的Spring + Solidity,但是接触不深,不是很回答上来)
暂时想到这么多,后续有需要进行补充
#面经##春招[话题]##安全岗##安全攻防工程师#