二进制文件修补全攻略
1. 搜索功能的拓展应用
搜索功能不仅可用于定位待修补的候选指令模式,还在漏洞分析、查找特定功能等方面发挥着重要作用。它能帮助逆向工程师识别关键的指令模式。
2. 查找特定行为
程序的行为由执行的指令和操作的数据共同定义。当需要修改程序行为时,定位要修改的具体行为往往比定位要更改的数据更具挑战性。由于无法预测编译器为源代码生成的具体指令序列,使用自动化搜索功能精确找到代码修补位置并非易事。
查找特定行为通常需要对程序中的函数进行分析,常用的方法有:
- 对二进制文件中的所有函数进行仔细分析。
- 从已知函数(如 main 函数)开始,仔细遍历调用树。
- 依赖函数名(假设二进制文件有符号信息)。
- 利用“有趣”数据的交叉引用回溯到可能感兴趣的函数。
例如,若要查找二进制文件中与认证相关的函数,可以搜索与认证相关的常见字符串,如 "Please enter your password:" 和 "Authentication failed" 。定位引用这些字符串的函数可以缩小搜索范围。
无论使用何种方法定位候选函数,都要验证该函数是否确实实现了想要修改的行为,同时要警惕函数名与实际行为可能不符的情况。
3. 应用修补
当找到要修改的代码或数据后,就可以开始使用相关工具进行修补。首先要考虑新内容与被替换内容的大小关系:
- 若新内容大小小于或等于原内容大小,修补可以在原内容的内存范围内完成。
- 若新内容大于
超级会员免费看
订阅专栏 解锁全文
808

被折叠的 条评论
为什么被折叠?



