JNWA-2020.09.19二进制面试题
编程/语言特性相关
- free的时候报错,为什么
- 如果他没问你具体场景或更详细的信息的话,期望答:”可能是缓冲区溢出,检查是否存在越界写”
- 如果这样问了,给出场景:”在错误信息中发现double free”,期望答:”有一个堆块被释放了两次”
- new delete 和 malloc free 有什么区别
- 期望答:“位置、类型安全、返回值、内存大小、构造/析构”,从以上几点进行展开分析
- 64位下, 一个结构体有 double 和 int 两个成员 ,请问占用的空间有多少?
- 期望答:”16字节”
逆向相关
- 如何用IDA分析一个加UPX壳的程序
- 期望答:“脱壳后载入分析”。
- 可追问:“如何脱壳”,期望答:”找到入口点,dump程序,修复OEP,重建IAT“。
- 也接受“使用UPX脱壳工具脱壳”,可追问:“如果工具用不了呢”,期望答同上
- (接上一题)符号问题如何解决
- 期望答:“制作并导入sig文件”
- x86平台下的test指令影响到了哪些elfags位
- 期望答:”使CF,OF为0,并且还影响SF,ZF,PF“,答出后三者说明基础很不错
- (和上题是同一组,看简历中是不是有说了解arm架构的)、arm有几组寄存器
- 期望答:“37个,其中通用31个,6个状态”
- switch-case通常会被优化成什么结构?
- 期望答:“被优化成跳转表,密集+稀疏两种策略。”后半句不答也没什么大关系
- (同上一组)乘除法通常会被优化成什么
- 移位
- 反编译器的原理
- 期望答:”文件装载,指令解码,语义映射,相关图(控制流图)构造,过程分析,类型分析
和结果输出“
- 期望答:”文件装载,指令解码,语义映射,相关图(控制流图)构造,过程分析,类型分析
- 在windbg中用什么按键来显示调用栈
- 期望答:“k”
- gdb是如何设置断点的
- 期望答:“将指令修改成0xcc(INT3)触发中断”
- 简述一下C++逆向的经验,遇到的问题
- 说说有哪些种反静态分析的技术
- 加壳,破坏堆栈平衡、Stack pivoting(栈翻转)劫持流程、滥用noreturn、加花
指令
- 加壳,破坏堆栈平衡、Stack pivoting(栈翻转)劫持流程、滥用noreturn、加花
- 反动态调试技术(Windows下)
- 进程名查找,系统API与标志(NtGlobalFlag、IsDebuggerPresent)
Pwn相关
- 综合描述一下栈溢出漏洞
- 这个真没什么好期望的,把成因(缺少边界检查等)、后果(程序崩溃,劫持控制流)答出
来就好
- 这个真没什么好期望的,把成因(缺少边界检查等)、后果(程序崩溃,劫持控制流)答出
- 栈溢出之后的利用方式,比如ret2libc
- 就ret2libc来说期望答:“控制程序执行 libc 中的函数,通常是返回至某个函数的 plt 处或者函
数的具体位置”,其他的参照ctfwiki就好
- 就ret2libc来说期望答:“控制程序执行 libc 中的函数,通常是返回至某个函数的 plt 处或者函
- 格式化字符串的漏洞原理
- 同样参照ctfwiki就好。主要答出:“格式化字符串函数所接收的参数是由格式化字符串所控制
的”
- 同样参照ctfwiki就好。主要答出:“格式化字符串函数所接收的参数是由格式化字符串所控制
- Canary的值存储在具体的哪里
- 期望答:“把高地址作为上面的话,canary存放在EBP/RBP下面”
- 描述一下你对堆漏洞的理解,列举一下堆漏洞的常⻅攻击方式
- 期望答:”通过溢出或任意写的方式修改chunk信息,进而利用堆管理器在某些方面特性实现
控制流劫持。Unlink、UAF、House of Spirit等等“
- 期望答:”通过溢出或任意写的方式修改chunk信息,进而利用堆管理器在某些方面特性实现
- 描述一下FastBins的细节
- 期望答:“inuse位始终被置为1,数据结构为单链表,LIFO策略,最多为10个”,还有些没写 的参考ctfwiki
花指令
- 讲一下什么是花指令
- 产生花指令的根本原因
- 常见的花指令
ELF文件格式
- 什么是ELF文件
- ELF文件四种类型
- ELF文件结构
壳
- 什么是壳
- 壳的种类
- 讲讲外壳输入表中重要的API函数
- 壳的加载过程
- 知道UPX壳吗?UPX加壳原理
汇编
- 随便说三个重要的标志位寄存器
- 讲一下CPU执行call指令时的流程
- call相当于哪两个指令
PE文件格式
- 怎么判断PE是DLL,还是exe
- 怎么判断PE文件是32位还是64位
- PE加载过程
基础
- windows下的调用约定
- 通用寄存器有哪些
- 怎么找到函数地址
调试与反调试
- INT 3指令、INT3中断调试处理流程是什么
- 反调试技术总结
- 探测windows调试器(使用windows API、手动检测数据结构、系统痕迹检测)
- 识别调试器行为(软件断点检查、硬件断点检查、执行代码校验和检查、时钟检测、判断父进程是否是explorer.exe、判断STARTUPINFO信息、判断是否具有SeDebugPrivilege权限)
- 干扰调试器的功能(使用TLS回调、中断、陷阱标志位、异常)
- 调试器漏洞(PE头漏洞、OutputDebugString漏洞)
HOOK
- 什么是Hook
- Hook原理
- 有哪些HOOK
windows
windows注入方式有哪些
dll注入
- (修改注册表、全局消息钩子注入、手工修改导入表、远程线程注入DLL、APC注入、DLL劫持、输入法注入)
代码注入
- (手工修改起始地址、挂起进程注入、挂起线程注入、调试器注入)
调试器原理、异常分发流程、反调试及反反调试
病毒木马原理、常见隐藏以及通讯方法
ida、od、windbg等用法,及对应的脚本
常见的壳原理,以及脱壳方法和平时操作心得
windows编程了解吗
权限维持
- windows
- linux
其他
- 污点分析的作用
- 静态分析的缺点
本文作者:
yd0ng
本文链接: https://yd0ng.github.io/2020/09/19/%E4%BA%8C%E8%BF%9B%E5%88%B6%E5%AE%89%E5%85%A8%E9%9D%A2%E8%AF%95%E9%A2%98/
版权声明: 本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。转载请注明出处!
本文链接: https://yd0ng.github.io/2020/09/19/%E4%BA%8C%E8%BF%9B%E5%88%B6%E5%AE%89%E5%85%A8%E9%9D%A2%E8%AF%95%E9%A2%98/
版权声明: 本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。转载请注明出处!