二进制安全面经汇总

先介绍一下本人情况 985本,安全科班,上大学才开始接触的二进制安全,三月初开始准备春招,主投安全岗,辅投开发岗

主力语言C/C++/Python,接触过C#和java,涉猎比较广,各个领域都有过接触。安全能力上二进制接触比较多,web有过了解,主要经历在安全系统研发方面。

不得不说的是安全岗就业面确实比较窄,我原本以为自己很热爱安全,现在有一点点怀疑了

话不多说,上干货!

(我个人总结面经比较喜欢按主题模块分类,不是很喜欢以公司来分类的,所以将各个公司面经都整合成一个了,遇到新问题就往里面加)

C/C++逆向开发

  1. C/C++结构体大小如何计算?
  2. C++的结构体和C的区别?
  3. new和malloc的区别(delete和free的区别)
  4. 如何找到main函数?(这里要继续细分,win32桌面程序,控制台程序,linux下的命令行程序)
  5. 构造函数与析构函数调用时机
  6. C/C++编程有没有遇到的安全问题(我讲的一个浅构造导致的double free)
  7. 重载如何实现(静态函数名重载,动态虚函数重写)
  8. 虚函数如何实现?(重点,几乎必问,虚表指针位置)
  9. 虚继承/多重继承的内存结构(VC和G++中虚继承中虚表结构不太一样,这里我研究过,扯了一大堆)
  10. switch的实现与优化(难点)
  11. try-catch的实现与优化(难点,会顺着问到windows异常处理机制)
  12. 三种循环哪种效率最高?
  13. 32位下调用约定有哪些?(stdcall c标准调用 fastcall thiscall)
  14. 64位下调用约定?(VC:rdx rcx r8 r9,GCC: 多rdi rsi)

二进制逆向(反调试/脱壳/免杀/挂钩/注入)

这部分为安全岗面试重点

  1. 32位程序如何在64位机器上运行?
  2. PE格式(重点,几乎必问)
  3. PE装载进内存执行的过程(重点,内存对齐,IAT表建立,重定位)
  4. 知道哪些反调试手段?(SEH,反断点,查调试环境)
  5. gdb/od基本命令
  6. 调试器原理(三大断点实现)
  7. 如何脱壳(压缩壳/加密壳/虚拟化壳)
  8. 为什么脱完壳要修复导入表?
  9. 花指令有没有脱过?
  10. 有没有写过IDA脚本(逆向岗位几乎必问)
  11. 如果一个程序没有字符串/字符串被混淆了如何找核心代码?
  12. 内存泄漏如何排除
  13. 有没有做过免杀,怎么做的?(静态二分法定位,思考对面规则怎么写的,动态绕钩子检查,卸钩子,提权走底层)
  14. 沙箱有接触过吗?(并没有...)
  15. 有没有用过虚拟机?(QEMU, VMware Bochs)虚拟化有哪几种方式实现?虚拟机查杀有什么思路过吗?
  16. Hook有哪些方法?(几乎必问,inline hook,函数表hook)
  17. 如果inline hook前几个字节不能正好5字节Patch如何处理?
  18. 分析过哪些病毒样本?病毒分析有什么方法?(问到了深信服的实习)
  19. 特征码怎么提取的?
  20. .NET的实现(因为项目研究过.NET)
  21. flags寄存器有哪些位,有什么作用(OF, ZF, TF, 虚拟位)
  22. 控制寄存器有哪些,有什么作用(可以重点说说CR0和CR3)
  23. 共享内存怎么实现
  24. windows下有哪些注入方式?怎么实现?(重点)
  25. windows下3环向0环的切换过程?
  26. ARM汇编了解过吗(没有...)
  27. 如何防止内存被扫描?
  28. 如何隐藏进程?(说了一个CPU控制区找EPROCESS断链)隐藏之后对进程运行有影响吗?

漏洞利用

楼主pwn菜鸡,web不是很熟悉,说得都是比较基础,不过其实对漏洞利用很熟悉的面试官也不是特别多。

  1. windows/linux基本保护机制(栈执行保护,基址随机化,代码段随机化,栈溢出保护)
  2. 怎么绕过?
  3. pwn的一些印象深刻的题目,或是技巧(这部分如果面试官不是相关领域的建议不要说太深入,太细节的技术很复杂,很难讲懂)
  4. 堆漏洞利用?(double free, UAF)
  5. 栈上漏洞利用有哪些
  6. linux堆管理,glibc/slab/伙伴算法
  7. 脏牛
  8. web漏洞有了解吗?
  9. SQL注入、XSS攻击原理?
  10. ARP欺骗怎么实现的?
  11. 如何判断远端服务器的操作系统?

项目相关

  1. Powershell防御项目讲一下?
  2. 怎么防止无文件攻击?
  3. 分析过哪些脚本病毒?
  4. 加密混淆怎么处理?
  5. 知道哪些加密算法,非对称加密与对称加密的区别?
  6. .NET钩子怎么下的?
  7. 做过流量检测?说说怎么提的特征?
  8. 顺便问到TCP连接建立与释放(典中典)
  9. 问到毕业设计,简述一下你的静态分析算法怎么设计的
  10. 开发过Linux键盘监控?怎么实现的?
  11. windows调试器怎么实现的?(3环API...)
  12. 写过端口扫描工具,怎么实现的?(netfilter框架编程)
  13. ARP Poison怎么写的?(原始套接字,linux上好写一些)
  14. 写过区块链的项目,说一下?(写的Spring + Solidity,但是接触不深,不是很回答上来)

暂时想到这么多,后续有需要进行补充

#面经##春招[话题]##安全岗##安全攻防工程师#
全部评论
牛啊 知识很全
1 回复 分享
发布于 2023-04-25 19:46 陕西
ieg招安全? 做逆向的么
点赞 回复 分享
发布于 2023-07-23 00:25 上海
老哥是鹅厂哪里呀 IEG吗
点赞 回复 分享
发布于 2023-04-23 14:46 河北
老哥牛哇
点赞 回复 分享
发布于 2023-04-16 23:55 北京
安全就业面确实比较窄。我的技术储备更多是Web渗透测试这方面的,可能也是能力不够吧,拿不到这方面的offer,但是不想去卷前端后端,我宁愿在安全公司做售前。想问问大佬现在是还在等结果吗
点赞 回复 分享
发布于 2023-04-08 20:03 四川

相关推荐

2025-12-24 15:25
已编辑
门头沟学院 前端工程师
是腾讯的csig腾讯云,前天晚上九点突然打电话约面,激动的通宵学了一晚上,第二天状态很差改了今天(以后再也不通宵学习了)感觉自己浪费了面试官一个半小时单纯手写+场景,无八股无项目无算法,打击真的很大,全是在面试官提醒的情况下完成的,自己技术方面真的还是有待提高,实力匹配不上大厂和已经面试的两个公司完全不一样,很注重编码能力和解决问题的能力,然而我这两个方面都很薄弱,面试官人很好很耐心的等我写完题目,遇到瓶颈也会提醒我,写不出题也会很耐心的跟我讲解好感动,到最后面试结束还安慰我打算把下周最后一场面试面完之后就不面啦,如果能去实习还是很开心,但是最重要的还是好好努力提高技术以下是面经第一题// 实现一个解析 url 参数的函数function parseUrl(urlStr) {// TODO}parseUrl('*********************************************');// 返回 {a: 1, b: 2, c: 3}追问:在链接里见过什么部分?用 hash 路由的话放在哪第二题// 考虑有一个异步任务要执行,返回 Promise,这个任务可能会失败,请实现 retry 方法,返回新方法,可以在失败后自动重试指定的次数。/*** 异步任务重试* @param task 要执行的异步任务* @param times 需要重试的次数,默认为 3 次*/function retry(task, times = 3) {// TODO: 请实现}// ---------------测试示例 ----------------// 原方法const request = async (data) => {// 模拟失败if (Math.random() < 0.7) {throw new Error('request failed');}const res = await fetch('https://jsonplaceholder.typicode.com/posts', {method: 'POST',body: JSON.stringify(data),});return res.json();}// 新的方法const requestWithRetry = retry(request);// 使用async function run() {const res = await requestWithRetry({ body: 'content' });console.log(res);}run();第三题就是给 retry 函数添加类型注释,用到泛型第四题:在组件库中将 Alert 用 api 的形式实现(应该就是 message 这个组件)怎么渲染到一个浮层里而不是原地渲染出来
不知道怎么取名字_:技术这个东西,太杂了,而且要下功夫的
查看5道真题和解析
点赞 评论 收藏
分享
评论
31
146
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务