5 CONCLUSIONS
We presented an open-source framework for concolic
execution of programs at binary level. The paper de-
scribed its architecture, implementation details and
our perspective for future work ideas. We hope that
this will help the community and industry to test their
strategies for concolic execution easier than before
and also that we will get contributions, support, and
feedback on our source code repository. By having
the first framework that is able to do concolic execu-
tion for x86 binaries, we were able to optimize the
number of SMT queries using RL strategies. New
research opportunities and ideas that occurred during
development were also presented.
ACKNOWLEDGEMENTS
This work was supported by a grant of Roma-
nian Ministry of Research and Innovation CCCDI-
UEFISCDI. project no. 17PCCDI/2018.
REFERENCES
Bucur, S., Ureche, V., Zamfir, C., and Candea, G. (2011).
Parallel symbolic execution for automated real-world
software testing. In Proc. of the EuroSys’11, pages
183–198. ACM.
Chen, B., Havlicek, C., Yang, Z., Cong, K., Kannavara, R.,
and Xie, F. (2018). CRETE: A versatile binary-level
concolic testing framework. In Proc. of FASE 2018,
volume 10802 of LNCS, pages 281–298. Springer.
Chipounov, V., Kuznetsov, V., and Candea, G. (2012). The
S2E platform: Design, implementation, and applica-
tions. ACM Trans. Comput. Syst., 30(1):2:1–2:49.
Coppit, D. and Lian, J. (2005). yagg: An easy-to-use gen-
erator for structured test inputs. In Proc, of ASE’05,
pages 356–359. ACM.
De Moura, L. and Bjørner, N. (2008). Z3: An efficient SMT
solver. In Proc. of TACAS’08, volume 4963 of LNCS,
pages 337–340. Springer.
Dolan-Gavitt, B., Hulin, P., Kirda, E., Leek, T., Mambretti,
A., Robertson, W., Ulrich, F., and Whelan, R. (2016).
LAVA: Large-scale automated vulnerability addition.
In SP’16, pages 110–121. IEEE Computer Society.
Godefroid, P., Klarlund, N., and Sen, K. (2005). DART:
Directed automated random testing. SIGPLAN Not.,
40(6):213–223.
Godefroid, P., Levin, M. Y., and Molnar, D. (2012).
SAGE: Whitebox fuzzing for security testing. Queue,
10(1):20:20–20:27.
Godefroid, P., Peleg, H., and Singh, R. (2017). Learn&fuzz:
machine learning for input fuzzing. In Proc. of
ASE’17, pages 50–59. IEEE Computer Society.
H
¨
oschele, M. and Zeller, A. (2016). Mining input grammars
from dynamic taints. In Proc. of ASE’16, pages 720–
725. ACM.
King, J. C. (1976). Symbolic execution and program test-
ing. Commun. ACM, 19(7):385–394.
L
¨
ammel, R. and Schulte, W. (2006). Controllable combi-
natorial coverage in grammar-based testing. In Proc.
of TestCom’06, volume 3964 of LNCS, pages 19–38.
Springer.
Paduraru, C. and Melemciuc, M. (2018). An automatic test
data generation tool using machine learning. In Proc.
of ICSOFT’18, pages 506–515. SciTePress.
Paduraru, C., Melemciuc, M., and Ghimis, B. (2019). Fuzz
testing with dynamic taint analysis based tools for
faster code coverage. In Proc. of ICSOFT’19, pages
82–93. SciTePress.
Paduraru, C., Melemciuc, M., and Stefanescu, A. (2017).
A distributed implementation using Apache Spark of
a genetic algorithm applied to test data generation.
In Proc. of GECCO’17 workshops, pages 1857–1863.
ACM.
Paduraru, C., Paduraru, M., and Stefanescu, A. (2020). Op-
timizing decision making in concolic execution using
reinforcement learning. In Proc of ICST’20 work-
shops, pages 52–61. IEEE.
Purdom, P. (1972). A sentence generator for testing parsers.
BIT Numerical Mathematics, 12(3):366–375.
Rabanal, P., Rodr
´
ıguez, I., and Rubio, F. (2017). Applica-
tions of river formation dynamics. Journal of Compu-
tational Science, 22:26–35.
Salwan, J. and Saudel, F. (2015). Triton: A dynamic sym-
bolic execution framework. In Symp. sur la s
´
ecurit
´
e
des tech. de l’inform. et des comm., pages 31–54. On-
line at http://triton.quarkslab.com. SSTIC.
Sen, K., Marinov, D., and Agha, G. (2005). CUTE: A
concolic unit testing engine for C. In Proc. of ES-
EC/FSE’13, pages 263–272. ACM.
Sirer, E. G. and Bershad, B. N. (1999). Using produc-
tion grammars in software testing. SIGPLAN Not.,
35(1):1–13.
Stoenescu, T., Stefanescu, A., Predut, S., and Ipate, F.
(2017). Binary analysis based on symbolic execution
and reversible x86 instructions. Fundamenta Infor-
maticae, 153(1-2):105–124.
Sutton, M., Greene, A., and Amini, P. (2007). Fuzzing:
Brute Force Vulnerability Discovery. Addison-Wesley
Professional.
van Hasselt, H., Guez, A., and Silver, D. (2015). Deep rein-
forcement learning with double Q-learning. In Proc.
of AAAI’16, pages 2094–2100. AAAI Press.
ICSOFT 2020 - 15th International Conference on Software Technologies
536