开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 114|回复: 3
收起左侧

[逆向安全] [求助]调试一个so的时候遇到的问题!

[复制链接]
结帖率:12% (2/17)
发表于 前天 10:00 | 显示全部楼层 |阅读模式   浙江省杭州市
15精币
1.提示big fuction 这个修改 hexrays.cfg  MAX_FUNCSIZE 即可

2.无法 Graph vies 提示:

IDA failed to display the program in graph mode.

Only instructions belonging to functions can be displayed in graph mode.

For other program items IDA uses the text representation.


3. F5后一直提示 Decompiling... 一直都没结果~


回答提醒:如果本帖被关闭无法回复,您有更好的答案帮助楼主解决,请发表至 源码区 可获得加分喔。
友情提醒:本版被采纳的主题可在 申请荣誉值 页面申请荣誉值,获得 1点 荣誉值,荣誉值可兑换荣誉会员、终身vip用户组。
快捷通道:申请荣誉值无答案申请取消悬赏投诉有答案未采纳为最佳

签到天数: 7 天

发表于 前天 10:28 | 显示全部楼层   河南省驻马店市
函数过大无法反编译。把MAX_FUNCSIZE 值改大一点  


在IDA安装目录的cfg/hexrays.cfg中修改或添加

MAX_FUNCSIZE = 0x48000
回复

使用道具 举报

结帖率:55% (11/20)

签到天数: 7 天

发表于 前天 11:08 | 显示全部楼层   浙江省湖州市
### 解决IDA调试SO文件时的常见问题


#### **问题1:提示big function**
**原因**:IDA默认对函数大小有限制,超过阈值会提示"big function"。  
**解决方法**:  
1. 找到IDA安装目录下的`cfg/hexrays.cfg`文件(以IDA Pro 7.0为例,路径通常为`IDA Pro 7.0/cfg/hexrays.cfg`)。  
2. 用文本编辑器打开,搜索`MAX_FUNCSIZE`(默认值可能为20000或更小)。  
3. 将其修改为更大的值(如`MAX_FUNCSIZE = 1000000`),保存后重启IDA。  


#### **问题2:无法进入Graph视图,提示函数指令相关错误**
**原因**:  
- IDA未正确识别代码段为函数,或反汇编时未创建函数结构。  
- 代码中存在未定义的指令或数据段干扰函数识别。  

**解决方法**:  
1. **手动创建函数**:  
   - 定位到无法显示Graph的代码段,按`P`键(Create Function)手动创建函数。  
   - 确保函数起始地址为有效指令(可先按`C`键将数据转换为代码)。  

2. **检查代码段属性**:  
   - 按`ALT+M`打开内存映射窗口,确认目标代码段权限为可执行(Executable)。  
   - 若代码段被误识别为数据段,右键选择`Convert to Code`(或按`C`键)。  

3. **重新分析程序**:  
   - 按`F12`刷新反汇编视图,或在菜单中选择`Analyze > Reanalyze program`强制重新分析。  


#### **问题3:F5反编译卡住,一直显示"Decompiling..."**
**原因**:  
- 函数逻辑复杂(如大量循环、跳转、反调试代码),导致反编译器超时。  
- IDA未正确识别函数结构,或存在未处理的指令/数据。  
- 反编译器配置或版本问题。  

**解决方法**:  


##### **方案一:优化反编译配置**  
1. 打开IDA的反编译器设置:  
   - 菜单`Edit > Options > Decompiler`(或按`ALT+F7`)。  
2. 调整以下参数:  
   - **Timeout**:增大超时时间(如从30秒改为300秒)。  
   - **Recursion depth**:增加递归深度(如从100改为500)。  
   - 勾选`Use simplified control flow`(简化控制流)。  


##### **方案二:分块处理复杂函数**  
1. 若函数过大,手动拆分处理:  
   - 在函数中找到关键跳转点(如`if-else`、`switch`),用`ALT+K`设置函数边界。  
   - 对拆分后的子函数分别按`F5`反编译。  

2. 跳过反编译困难的部分:  
   - 对无法反编译的代码段,先通过汇编分析逻辑,再手动还原伪代码。  


##### **方案三:更新IDA版本或使用插件**  
1. 确认当前IDA版本是否支持目标SO的架构(如ARM64、x86-64),建议使用IDA Pro 7.5+。  
2. 尝试安装`Hex-Rays Decompiler`插件更新包,或使用第三方反编译工具(如Ghidra)辅助。  


##### **方案四:处理反调试与混淆**  
若SO包含反调试逻辑(如检测IDA钩子、动态代码生成),可能导致反编译失败:  
1. 用IDA的`Debugger`模式运行SO,绕过反调试检测后再反编译。  
2. 手动修补反调试代码(如NOP掉检测指令),再重新加载分析。  


### 进阶技巧:提升反编译效率
1. **预处理代码**:  
   - 对关键函数先按`D`键(定义为数据)再按`C`键(定义为代码),强制IDA重新解析指令。  
   - 用`ALT+P`定义函数参数类型,帮助反编译器生成更准确的伪代码。  

2. **使用IDA脚本自动化**:  
   ```python
   # 示例脚本:批量处理函数反编译
   import ida_kernwin
   import ida_funcs
   import ida_decompiler
   
   def decompile_all_functions():
       func = ida_funcs.get_first_func()
       count = 0
       while func:
           name = ida_funcs.get_func_name(func.start_ea)
           print(f"Decompiling function: {name}")
           decompiler = ida_decompiler.decompiler_t()
           if decompiler.decompile(func.start_ea):
               count += 1
           func = ida_funcs.get_next_func(func.end_ea)
       print(f"Decompiled {count} functions successfully.")
   
   ida_kernwin.execute_sync(decompile_all_functions, ida_kernwin.MFF_NOWAIT)
   ```  
   将脚本保存为`.py`文件,在IDA中通过`File > Script file`运行,可批量反编译函数。  


### 总结
遇到反编译问题时,优先检查函数定义、代码段属性和反编译器配置。对于复杂SO,需结合动态调试、手动分析和工具优化逐步突破。如果问题仍无法解决,可尝试提供具体SO文件或关键代码片段,以便进一步定位原因。
回复

使用道具 举报

结帖率:12% (2/17)

签到天数: 3 天

 楼主| 发表于 前天 17:30 | 显示全部楼层   浙江省杭州市
The graph is too big (more than 1000 nodes) to be displayed on the screen
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 793400750,邮箱:wp@125.la
网站简介:精易论坛成立于2009年,是一个程序设计学习交流技术论坛,隶属于揭阳市揭东区精易科技有限公司所有。
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

快速回复 返回顶部 返回列表