ImplicitFlow
ImplicitFlow官网地址
1 命令选项
Option | Arguments | Description |
---|
–Transform | InitImplicitFlow | 初始化隐式流 |
–InitImplicitFlowHandlerCount | INTSPEC | 插入的信号解释例程(signal handler)数,默认为1 |
–InitImplicitJitCount | INTSPEC | 插入的固定(jitted)函数数目,默认为0 |
–InitImplicitCacheSize | INTSPEC | 文件缓存隐式流的大小,默认为100 |
–InitImplicitFlowJitFunctionBody | S-Expression | S-Expression描述了被固定的功能的控制结构 |
–InitImplicitFlowKinds | 注释[1] | 注释[1] |
–InitImplicitFlowTrainingKind | gap,resend | 如何训练,默认为gap。其中gap表示慢速和快速时间之间的差,resend表示使用更复杂的统计测试,重新发送每个位直到达到保证的置信度和目标错误率 |
–InitImplicitFlowTrainingParameterRange | S-Expression | 一个S-Expression是由形式为(implicit-flow-kind from to)的列表元素组成 |
–InitImplicitFlowTrace | BOOLSPEC | 跟踪隐式流初始化的执行 |
–InitImplicitFlowTrain | BOOLSPEC | 产生运行训练pass的程序 |
–InitImplicitFlowTime | BOOLSPEC | 产生运行许多时序测试的程序,默认为false |
–InitImplicitFlowTrainingTimesClock | INTSPEC | 针对基于时序的原语所进行的训练测量数,默认为0 |
–InitImplicitFlowTrainingTimesThread | INTSPEC | 针对基于线程的原语所进行的训练测量数,默认为0 |
–InitImplicitFlowTrainingGapMaxFailureRateClock | INTSPEC | 针对基于时序的原语的最大可接受故障率,默认为5 |
–InitImplicitFlowTrainingGapMaxFailureRateThread | INTSPEC | 针对基于线程的原语的最大可接受故障率,默认为5 |
–InitImplicitFlowTrainGapMinGap | INTSPEC | 快中点与慢中点之间的最小差距,默认为80 |
–InitImplicitFlowTrainingResendConfidenceLeve | real | 重发训练类型的置信度,默认为0.95 |
–InitImplicitFlowTrainingResendTargetErrorRate | real | 重新发送训练类型的可接受错误率,默认为0.0001 |
–InitImplicitFlowTrainingData | S-Expression | 从–InitImplicitFlowTrain的先前运行中设置训练数据 |
注释[1]
Arguments | Description |
---|
counter_int | 通过累加一个变量的值来复制变量 |
counter_float | 通过累加一个变量的值来复制变量 |
counter_signal | 在信号hander中通过累加一个变量的值来复制变量 |
bitcopy_unrolled | 逐位复制变量,用if语句测试每一个位 |
bitcopy_loop | 循环遍历变量中的位,通过用if语句测试来复制每一个位 |
file_write | 通过写入文件,逐字节复制变量 |
trivial_clock | 通过计时trivial循环来复制变量 |
trivial_thread_1 | 使用1个线程计时,进行计时trivial循环来复制变量 |
trivial_thread_2 | 使用2个线程计时,进行计时trivial循环来复制变量 |
trivial_counter | 使用计时一个trivial循环来复制变量 |
file_cache_time | 在打开/关闭缓存情况下,定时读取文件来复制变量 |
file_cache_thread_1 | 使用1个线程计时,在打开/关闭缓存情况下,定时读取文件来复制变量 |
file_cache_thread_2 | 使用2个线程计时,在打开/关闭缓存情况下,定时读取文件来复制变量 |
men_cache_time | 通过定时读取具有或不具有缓存的CPU数据缓存来复制变量 |
men_cache_thread_1 | 使用1个线程计时,通过定时读取具有或不具有缓存的CPU数据缓存来复制变量 |
men_cache_thread_2 | 使用2个线程计时,通过定时读取具有或不具有缓存的CPU数据缓存来复制变量 |
jit_time | 通过计时固定函数来复制变量 |
branchPrediction_time | 通过计时CPU的分支预测来复制变量 |
* | 所有选项 |
2 实验
未混淆c文件如下所示,命名为"ImplicitFlow.c"。
tigress --Environment=x86_64:Linux:Gcc:4.8.5 --Transform=InitImplicitFlow --Functions=main --out=ImplicitFlow_obf.c ImplicitFlow.c