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, 二进制分析, 云安全监控, 云安全运维, 云资产清单, 代码混淆, 去混淆, 客户端加密, 程序合成, 符号执行, 逆向工具, 逆向工程, 静态分析