MrSlippery

Run KLEE, the involuntary base64 decoder

Nov 26th, 2015
454
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 1.83 KB | None | 0 0
  1. # Compile emitting LLVM bytecode to attract KLEE to its prey :-)
  2. user@machine:~/folder$ clang -I../klee/include -emit-llvm -c -g base64encode.c
  3. base64encode.c:37:3: warning: implicit declaration of function '__assert_fail' is invalid in C99 [-Wimplicit-function-declaration]
  4.   klee_assert(!(!error &&
  5.   ^
  6. ../klee/include/klee/klee.h:96:6: note: expanded from macro 'klee_assert'
  7.    : __assert_fail (#expr, __FILE__, __LINE__, __PRETTY_FUNCTION__))    \
  8.      ^
  9. 1 warning generated.
  10.  
  11. # Release the KLEEken!
  12. user@machine:~/folder$ time klee --libc=uclibc --posix-runtime base64encode.bc
  13. KLEE: NOTE: Using klee-uclibc : /home/user/klee/Release+Asserts/lib/klee-uclibc.bca
  14. KLEE: NOTE: Using model: /home/user/klee/Release+Asserts/lib/libkleeRuntimePOSIX.bca
  15. KLEE: output directory is "/home/user/folder/klee-out-0"
  16. KLEE: WARNING: undefined reference to function: klee_posix_prefer_cex
  17. KLEE: WARNING ONCE: calling external: syscall(16, 0, 21505, 35235760)
  18. KLEE: WARNING ONCE: calling __user_main with extra arguments.
  19. KLEE: ERROR: /home/user/folder/base64encode.c:37: ASSERTION FAIL: !(!error && new_dest_size == dest_size && same(new_dest, dest, new_dest_size))
  20. KLEE: NOTE: now ignoring this error at this location
  21.  
  22. KLEE: done: total instructions = 7742
  23. KLEE: done: completed paths = 20
  24. KLEE: done: generated tests = 20
  25.  
  26. real    0m1.706s
  27. user    0m1.555s
  28. sys 0m0.150s
  29.  
  30. # That was fast... could it be?
  31. user@machine:~/folder$ ls klee-last/*.err
  32. klee-last/test000020.assert.err
  33.  
  34. # No escape from KLEEality! :-)
  35. user@machine:~/folder$ ktest-tool klee-last/test000020.ktest
  36. ktest file : 'klee-last/test000020.ktest'
  37. args       : ['base64encode.bc']
  38. num objects: 2
  39. object    0: name: 'model_version'
  40. object    0: size: 4
  41. object    0: data: '\x01\x00\x00\x00'
  42. object    1: name: 'new_src'
  43. object    1: size: 14
  44. object    1: data: 'Hello, world!\x00'
Advertisement
Add Comment
Please, Sign In to add comment