论文阅读-Multiple Targets Directed Greybox Fuzzing (Hongliang Liang,2024)

本文介绍了一种针对多目标的定向灰盒模糊测试方法,提出自适应搜索策略和新的能量调度(MES)及探索-利用协调(CEE)机制,旨在解决先前方法在处理多个目标时的局限性。通过动态调整能量分配和阶段划分,有效避免局部最优并提高测试效率。

标题: Multiple Targets Directed Greybox Fuzzing (Hongliang Liang,2024) 

作者: Hongliang Liang, Xinglin Yu, Xianglin Cheng, Jie Liu, Jin Li

期刊: IEEE Transactions on Dependable and Secure Computing

研究问题:

发现局限性:之前的定向灰盒测试在有多个目标的时候表现的不好

原因(problems):粗粒度的能量调度和静态阶段划分

AFLGO

1.problem1(能量):为了覆盖多个目标,为所有目标追求全局最优调度会忽略某些目标的局部最优调度 

2.two stages:(exploration and exploitation )首先从探索阶段开始,随机变异初始种子以生成许多新输入,以增加代码覆盖率。然后进入开发阶段,产生更多新的投入,越来越接近目标。 

3.problem2:(静态阶段划分):exploration和exploitation 的时间不好分配。

勘探越少,可供开发利用的覆盖信息就越少,导致在开发阶段难以产生高质量的定向种子。但过度探索会耗费大量资源,延​​误开发进度,失去方向性。 

Lolly 和 Berry  

1.problem1(能量):容易陷入局部最优调度 : 为单个目标寻求最优调度会导致其他目标难以实现 

2.problem2:(静态阶段划分):exploration和exploitation 的时间不好分配。 

研究假设:

1.提出自适应的搜索策略 

2.提出一种新的能量调度策略 

研究方法:

1.提出一种能量调度方法(MES)

    考虑种子序列和目标序列之间的三种关系进行能量调度,即s的序列覆盖率(seqCov

<think> 我们正在解决用户的问题:使用`pyocd list --targets`命令时没有显示目标芯片。 根据引用[1]:我们可以通过`--pack`参数指定pack包的路径来查看支持的芯片列表,并且建议使用绝对路径。 引用[2]说明了`pyocd list`命令的一些用法,包括列出目标板(即芯片)。 引用[3]提到了一个错误,即找不到芯片,尽管在其他软件中可以识别。 用户的问题是`pyocd list --targets`没有显示目标芯片,可能的原因和解决办法如下: 1. **未安装对应的Device Family Pack (DFP)**:pyocd需要对应的DFP包才能识别芯片。用户需要确保已经下载了目标芯片的DFP包,并且使用`--pack`参数指定其路径(最好用绝对路径)来加载。 如引用[1]所示,命令格式为:`pyocd list --pack <pack_path> --targets` 2. **DFP包路径问题**:如果已经下载了DFP包,但未正确指定路径,或者路径不是绝对路径,可能导致加载失败。建议使用绝对路径。 3. **pyocd的版本问题**:旧版本的pyocd可能不支持某些芯片或功能。建议升级到最新版本的pyocd。 4. **环境变量设置**:pyocd可以通过环境变量`PYOCD_PACK`来指定pack包的路径。用户可以设置该环境变量指向包含pack包的目录,这样就不需要每次使用`--pack`参数了。 5. **安装pack包**:除了指定路径,还可以使用`pyocd pack install <pack_name>`来安装pack包,这样pyocd就能自动识别。例如,安装AutoChips.AC780x_DFP的包:`pyocd pack install AutoChips.AC780x_DFP` 6. **检查连接**:虽然`pyocd list --targets`只是列出支持的目标芯片,并不需要硬件连接,但为了确保问题不是出在硬件连接上,可以尝试连接硬件后使用`pyocd list --probes`检查探针是否被识别(引用[2]和引用[3]都提到了探针的识别问题)。如果探针都无法识别,那么可能是驱动问题或者硬件连接问题。 7. **查看支持的目标列表**:有时芯片名称可能拼写错误或者不在pyocd的默认支持列表中。可以先运行`pyocd list --targets`查看默认支持的目标,确保目标芯片确实不在其中,然后尝试通过pack包加载。 8. **调试信息**:可以增加`-v`参数(verbose)来获取更多输出信息,帮助诊断问题。例如:`pyocd list --pack <pack_path> --targets -v` 9. **安装pyocd插件**:某些芯片可能需要额外的插件支持,确保已安装相关插件。 10. **权限问题**:在Linux系统下,可能需要使用sudo权限才能访问USB设备,但`list --targets`通常不需要硬件连接,所以这个可能性较小。 根据上述分析,给出具体解决步骤: 步骤1:确保已经下载了目标芯片对应的pack包。如果没有,请从芯片厂商官网下载或者使用pyocd的pack install命令安装。 步骤2:使用绝对路径指定pack包运行命令,例如: `pyocd list --pack /path/to/your.pack --targets` 步骤3:如果步骤2成功,则可以将pack包安装到pyocd的pack缓存中,这样以后就不需要每次指定路径。安装命令: `pyocd pack install /path/to/your.pack` 步骤4:如果使用pack install安装后,运行`pyocd list --targets`仍然不显示,可以尝试设置环境变量: 在Linux/macOS中:`export PYOCD_PACK=/path/to/packs` (注意这里是pack包所在的目录,而不是单个pack文件) 在Windows中:`set PYOCD_PACK=C:\path\to\packs` 步骤5:升级pyocd:`pip install --upgrade pyocd` 步骤6:如果以上步骤都不行,尝试查看详细日志:`pyocd list --targets -v` 或者 `pyocd list --pack /path/to/your.pack --targets -v`,根据日志排查问题。 注意:在引用[3]中提到,即使在其他软件(如J-Flash)中能识别,pyocd也可能无法识别,这可能是因为pyocd的配置或驱动问题。但本次问题只是列出目标芯片,并不需要连接硬件,所以硬件连接问题可以排除。因此,主要关注点在于pack包的安装和指定。 如果用户的目标芯片是AutoChips的AC780x系列,那么我们可以直接使用引用[1]中的例子,指定相应的pack包路径。 此外,用户也可以查看pyocd的官方文档,了解更多的故障排除方法。 生成相关问题: 1. 如何安装pyocd的Device Family Pack? 2. 如何使用pyocd进行芯片的擦除和编程? 3. pyocd连接目标芯片时出现错误怎么办? </think> ### 解决 `pyocd list --targets` 不显示目标芯片的方法 #### 1. **检查 Pack 包路径** - **核心问题**:pyocd 需通过 Pack 包识别芯片,路径未正确指定会导致无法显示目标芯片 [^1]。 - **操作步骤** ```bash # 使用绝对路径指定 Pack 包(示例路径需替换为实际路径) pyocd list --pack /绝对路径/AutoChips.AC780x_DFP.1.0.5.pack --targets ``` - **验证**:确保路径无空格或特殊字符,建议复制文件管理器中的完整路径。 #### 2. **安装 Pack 包到全局缓存** - **原理**:将 Pack 包安装到 pyocd 默认搜索路径,避免每次手动指定 [^1]。 - **操作步骤** ```bash # 安装 Pack 包 pyocd pack install /绝对路径/AutoChips.AC780x_DFP.1.0.5.pack # 重新检查支持的芯片 pyocd list --targets ``` #### 3. **检查 Pack 包兼容性** - **常见问题**: - Pack 包未包含目标芯片型号。 - Pack 包与 pyocd 版本不兼容。 - **解决方法**: 1. 访问芯片官网下载最新 Pack 包。 2. 升级 pyocd: ```bash pip install --upgrade pyocd ``` #### 4. **调试模式获取详细信息** - **作用**:通过日志定位加载失败原因 [^3]。 - **命令** ```bash pyocd list --targets -vv # 显示详细调试日志 ``` - **日志分析重点**: - `No matching packs` → Pack 路径错误。 - `Unsupported target` → Pack 包不兼容。 #### 5. **环境配置检查** - **关键配置**: - 系统环境变量 `PYOCD_PACK` 指向 Pack 目录(非文件)[^2]。 - Linux/Mac: ```bash export PYOCD_PACK=/存储Pack包的目录 ``` - Windows: ```powershell setx PYOCD_PACK "C:\存储Pack包的目录" ``` --- ### 总结流程图 ```mermaid graph TD A[命令不显示芯片] --> B{指定Pack路径?} B -->|是| C[使用--pack绝对路径] B -->|否| D[安装Pack到全局] C --> E[检查输出] D --> E E --> F{成功显示?} F -->|是| G[问题解决] F -->|否| H[启用调试模式-vv] H --> I[分析日志] I --> J[检查Pack兼容性/版本] J --> K[升级pyocd或Pack包] ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值