werew/qsynth-artifacts
GitHub: werew/qsynth-artifacts
QSynth合成产物数据集,提供经过Tigress混淆的C函数及其执行跟踪、真值标注和合成结果,用于去混淆与程序合成算法的基准测试评估。
Stars: 11 | Forks: 4
# QSynth 合成产物
## 数据集
这些产物提供以下四个数据集:
* **syntia**:使用 EncodeArithmetic 和 EncodeData 混淆的 500 个函数
* **custom_EA**:使用 EncodeArithmetic 混淆的 500 个函数
* **custom_VR_EA**:使用 Virtualize 和 EncodeArithmetic 混淆的 500 个函数
* **custom_EA_ED**:使用 EncodeArithmetic 和 Virtualize 混淆的 500 个函数
*(数据库跟踪被截断为 293 个函数)*
## 基准测试
每个数据集目录包含以下文件:
* **original.c**:包含所有函数的源文件
* **obfuscated.c**:由 Tigress 生成的混淆源文件
* **run_tigress.sh**:用于重新生成 obfuscated.c 文件的 Shell 脚本
* **ground_truth.json**:包含基本真值的 JSON 文件。对于每个函数,它包含原始表达式(在 original.c 中)及其对应的混淆版本(在 obfuscated.c 中)
* **obfuscated**:预编译的 x86_64 二进制文件(无 PIE)
* **trace.db**:SQLite 数据库格式的执行跟踪 *(可能是最有趣的文件)*
* **results**:
* **qsynth.log**:合成脚本的原始输出
* **qsynth.json**:QSynth 可处理输出 *(很可能是第二有趣的文件)*
## 结果
*qsynth.json* 对于每个函数包含如下条目:
```
{
"target_1": {
"fun_name": "target_1",
"start": 164,
"stop": 238,
"orig_ast": "~(b*d ^ d*d) - b",
"orig_node": 10,
"orig_depth": 5,
"obfu_ast": "(((b & d)*(b | d) + (b & ~d)*(~b & d) & (d & d)*(d | d) + (d & ~d)*(~d & d)) - ((b & d)*(b | d) + (b & ~d)*(~b & d) | (d & d)*(d | d) + (d & ~d)*(~d & d)) - 1 ^ b) - ((~(((b & d)*(b | d) + (b & ~d)*(~b & d) & (d & d)*(d | d) + (d & ~d)*(~d & d)) - ((b & d)*(b | d) + (b & ~d)*(~b & d) | (d & d)*(d | d) + (d & ~d)*(~d & d)) - 1) & b) + (~(((b & d)*(b | d) + (b & ~d)*(~b & d) & (d & d)*(d | d) + (d & ~d)*(~d & d)) - ((b & d)*(b | d) + (b & ~d)*(~b & d) | (d & d)*(d | d) + (d & ~d)*(~d & d)) - 1) & b))",
"obfu_node": 229,
"obfu_depth": 12,
"triton_ast": "(((b & d)*(b | d) + (~b & d)*(~d & b) & d*d) - (d*d | (b & d)*(b | d) + (~b & d)*(~d & b)) - 1 ^ b) - (((d*d ^ (b & d)*(b | d) + (~b & d)*(~d & b)) & b) + ((d*d ^ (b & d)*(b | d) + (~b & d)*(~d & b)) & b))",
"triton_node": 95,
"triton_depth": 10,
"synthesized_ast": "~((d*d ^ d*b) + b)",
"synth_node": 10,
"synth_depth": 5,
"dse_t": 0.10445356369018555,
"synthesis_t": 0.03491616249084473,
"sem_orig_obf": "UNK",
"sem_obf_trit": "UNK",
"sem_orig_synth": "OK",
"is_simplified": true,
"is_fully_synthesized": true
}
}
```
Start 和 stop 是执行跟踪中的偏移量(即 DB 中的 id)。然后是每个表达式、其节点大小和深度。接着 `dse_t`、`synthesis_t` 分别给出符号执行时间和合成时间。`is_simplified` 和 `is_fully_synthesized` 指示函数是否被简化,以及是否被完全简化。`sem_orig_obf`、`sem_obf_trit` 和 `sem_orig_synth` 指示语义是否被保留,例如在原始版本和合成版本之间(`sem_orig_synth`)。"UNK" 表示尚未检查或检查超时。
## 合成 Oracle 表
用于基准测试的表可在此处获取:https://ret2libc.com/static/various/lts_15/
它们是 Python pickle 对象。表达式使用与 Syntia 类似的逆波兰表示法 (RPN) 进行编码。
标签:DNS 反向解析, EncodeArithmetic, Ground Truth, QSynth, SQLite, Syntia, Tigress, Virtualize, x86_64, 二进制分析, 云安全监控, 云安全运维, 云资产清单, 代码混淆, 去混淆, 客户端加密, 程序合成, 符号执行, 逆向工具, 逆向工程, 静态分析