{"id":1137,"date":"2023-11-13T12:53:33","date_gmt":"2023-11-13T03:53:33","guid":{"rendered":"https:\/\/h4ck.kr\/?p=1137"},"modified":"2023-11-13T13:16:18","modified_gmt":"2023-11-13T04:16:18","slug":"klee-%eb%91%90%eb%b2%88%ec%a7%b8-%ed%8a%9c%ed%86%a0%eb%a6%ac%ec%96%bc-%ea%b0%84%eb%8b%a8%ed%95%9c-%ec%a0%95%ea%b7%9c-%ed%91%9c%ed%98%84%ec%8b%9d-%eb%9d%bc%ec%9d%b4%eb%b8%8c%eb%9f%ac%eb%a6%ac%eb%a5%bc","status":"publish","type":"post","link":"https:\/\/h4ck.kr\/?p=1137","title":{"rendered":"KLEE \ub450\ubc88\uc9f8 \ud29c\ud1a0\ub9ac\uc5bc: \uac04\ub2e8\ud55c \uc815\uaddc \ud45c\ud604\uc2dd \ub77c\uc774\ube0c\ub7ec\ub9ac\ub97c \ud14c\uc2a4\ud2b8\ud574\ubcf4\uae30"},"content":{"rendered":"\n<p>\uc774\uac83\uc740 \uac04\ub2e8\ud55c \uc815\uaddc \ud45c\ud604\uc2dd \uc77c\uce58 \ud568\uc218\ub97c \ud14c\uc2a4\ud2b8\ud558\uae30 \uc704\ud574 KLEE\ub97c \uc0ac\uc6a9\ud558\ub294 \uc608\uc81c\uc774\ub2e4.<br>\uc18c\uc2a4 \ud2b8\ub9ac\uc5d0\uc11c<strong> examples\/regexp<\/strong>\uc5d0 \uae30\ubcf8 \uc608\uc81c\ub97c \ucc3e\uc744 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<p><strong>Regexp.c<\/strong>\uc5d0\ub294 \uac04\ub2e8\ud55c \uc815\uaddc \ud45c\ud604\uc2dd \uc77c\uce58 \ud568\uc218\uc640 KLEE\ub97c \uc0ac\uc6a9\ud558\uc5ec<br>\uc774 \ucf54\ub4dc\ub97c \ud0d0\uc0c9\ud558\uae30 \uc704\ud574 \ud544\uc694\ud55c \uae30\ubcf8 \ud14c\uc2a4\ud2b8 \ud558\ub124\uc2a4(<strong>main()<\/strong>)\uac00 \ud3ec\ud568\ub418\uc5b4 \uc788\ub2e4.<br>\uc18c\uc2a4 \ucf54\ub4dc\uc758 \ubc84\uc804\uc744 <a href=\"https:\/\/klee.github.io\/resources\/Regexp.c.html\">\uc5ec\uae30\uc11c<\/a> \ubcfc \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<p>\uc774 \uc608\uc81c\ub294 KLEE\ub97c \uc0ac\uc6a9\ud558\uc5ec \uc608\uc81c\ub97c \ube4c\ub4dc\ud558\uace0 \uc2e4\ud589\ud558\ub294 \ubc29\ubc95,<br>\uadf8\ub9ac\uace0 \ucd9c\ub825\uc744 \ud574\uc11d\ud558\ub294 \ubc29\ubc95\uacfc \ud14c\uc2a4\ud2b8 \ub4dc\ub77c\uc774\ubc84\ub97c \uc218\ub3d9\uc73c\ub85c \uc791\uc131\ud560 \ub54c \uc0ac\uc6a9\ud560 \uc218 \uc788\ub294 \uba87 \uac00\uc9c0 \ucd94\uac00\ub41c KLEE \uae30\ub2a5\uc744 \ubcf4\uc5ec\uc900\ub2e4.<\/p>\n\n\n\n<p>\uba3c\uc800 \uc608\uc81c\ub97c \ube4c\ub4dc\ud558\uace0 \uc2e4\ud589\ud558\ub294 \ubc29\ubc95,<br>\uadf8\ub9ac\uace0 \ud14c\uc2a4\ud2b8 \ud558\ub124\uc2a4\uac00 \uc5b4\ub5bb\uac8c \uc791\ub3d9\ud558\ub294\uc9c0 \uc790\uc138\ud788 \uc124\uba85\ud574\ubcf4\uaca0\ub2e4.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"917\" src=\"https:\/\/h4ck.kr\/wp-content\/uploads\/2023\/11\/Untitled-5-1024x917.png\" alt=\"\" class=\"wp-image-1138\" srcset=\"https:\/\/h4ck.kr\/wp-content\/uploads\/2023\/11\/Untitled-5-1024x917.png 1024w, https:\/\/h4ck.kr\/wp-content\/uploads\/2023\/11\/Untitled-5-300x269.png 300w, https:\/\/h4ck.kr\/wp-content\/uploads\/2023\/11\/Untitled-5-768x687.png 768w, https:\/\/h4ck.kr\/wp-content\/uploads\/2023\/11\/Untitled-5.png 1115w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">\uc608\uc81c \ube4c\ub4dc\ud558\uae30<\/h2>\n\n\n\n<p>\uccab \ubc88\uc9f8 \ub2e8\uacc4\ub294 LLVM bitCode \ud615\uc2dd\uc758 \uc624\ube0c\uc81d\ud2b8 \ud30c\uc77c\uc744 \uc0dd\uc131\ud560 \uc218 \uc788\ub294 \ucef4\ud30c\uc77c\ub7ec\ub97c \uc0ac\uc6a9\ud558\uc5ec \uc18c\uc2a4 \ucf54\ub4dc\ub97c \ucef4\ud30c\uc77c\ud558\ub294 \uac83\uc774\ub2e4.<\/p>\n\n\n\n<p><strong>examples\/regexp<\/strong> \ub514\ub809\ud1a0\ub9ac \ub0b4\uc5d0\uc11c \ub2e4\uc74c \uba85\ub839\uc744 \uc2e4\ud589\ud558\uc790:<\/p>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-9d6595d7 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:100%\">\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\" data-enlighter-theme=\"dracula\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">$ clang-11 -I \/snap\/klee\/6\/usr\/local\/include -emit-llvm -c -g -O0 -Xclang -disable-O0-optnone Regexp.c<\/pre>\n<\/div>\n<\/div>\n\n\n\n<p>\uc704 \uba85\ub839\uc744 \uc2e4\ud589\ud558\uba74, LLVM bitCode \ud615\uc2dd\uc758<strong> Regexp.bc<\/strong> \ud30c\uc77c\uc774 \uc0dd\uc131\ub41c\ub2e4.<\/p>\n\n\n\n<p><strong>-I <\/strong>\uc778\uc218\ub294 \ucef4\ud30c\uc77c\ub7ec\uac00 KLEE \uac00\uc0c1 \uba38\uc2e0\uacfc \uc0c1\ud638 \uc791\uc6a9\ud558\ub294 \ub370 \uc0ac\uc6a9\ub418\ub294 \ub0b4\uc7a5 \ud568\uc218\uc5d0 \ub300\ud55c \uc815\uc758\ub97c \ud3ec\ud568\ud558\ub294 <a href=\"https:\/\/github.com\/klee\/klee\/blob\/master\/include\/klee\/klee.h\">klee\/klee.h<\/a> \ud5e4\ub354 \ud30c\uc77c\uc744 \ucc3e\uc744 \uc218 \uc788\ub3c4\ub85d \uc0ac\uc6a9\ub41c\ub2e4.<\/p>\n\n\n\n<p><strong>-c<\/strong>\ub294 \ucf54\ub4dc\ub97c \ub124\uc774\ud2f0\ube0c \uc2e4\ud589 \ud30c\uc77c\uc774 \uc544\ub2cc \uc624\ube0c\uc81d\ud2b8 \ud30c\uc77c\ub85c \ucef4\ud30c\uc77c\ud558\ub824\ub294 \uac83\uc744 \ub098\ud0c0\ub0b4\uba70,<\/p>\n\n\n\n<p>\ub9c8\uc9c0\ub9c9\uc73c\ub85c <strong>-g<\/strong>\ub294 \uc624\ube0c\uc81d\ud2b8 \ud30c\uc77c\uc5d0 \ucd94\uac00 \ub514\ubc84\uadf8 \uc815\ubcf4\ub97c \uc800\uc7a5\ud558\ub3c4\ub85d \ud558\uba70, KLEE\uac00 \uc18c\uc2a4 \ucf54\ub4dc \ub77c\uc778 \ubc88\ud638 \uc815\ubcf4\ub97c \ub098\ud0c0\ub0b4\uae30 \uc704\ud574 \uc0ac\uc6a9\ud55c\ub2e4.<\/p>\n\n\n\n<p><strong>-O0 -Xclang -disable-O0-optnone<\/strong>\uc740 \ucd5c\uc801\ud654 \uc5c6\uc774 \ucef4\ud30c\uc77c\ud558\ub418, KLEE\uac00 \uc790\uccb4 \ucd5c\uc801\ud654\ub97c \uc218\ud589\ud558\uc9c0 \ubabb\ud558\ub3c4\ub85d \ud558\ub294 \ub370 \uc0ac\uc6a9\ub418\uc5c8\ub2e4.<\/p>\n\n\n\n<p>LLVM \ub3c4\uad6c\uac00 \uacbd\ub85c\uc5d0 \uc124\uce58\ub418\uc5b4 \uc788\ub2e4\uba74, \uc774 \ub2e8\uacc4\uac00 \uc791\ub3d9\ud588\ub294\uc9c0 \uc0dd\uc131\ub41c \ud30c\uc77c\uc5d0\uc11c<strong> llvm-nm<\/strong>\uc744 \ud1b5\ud574 \ud655\uc778\ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"421\" src=\"https:\/\/h4ck.kr\/wp-content\/uploads\/2023\/11\/Untitled-6-1024x421.png\" alt=\"\" class=\"wp-image-1139\" srcset=\"https:\/\/h4ck.kr\/wp-content\/uploads\/2023\/11\/Untitled-6-1024x421.png 1024w, https:\/\/h4ck.kr\/wp-content\/uploads\/2023\/11\/Untitled-6-300x123.png 300w, https:\/\/h4ck.kr\/wp-content\/uploads\/2023\/11\/Untitled-6-768x315.png 768w, https:\/\/h4ck.kr\/wp-content\/uploads\/2023\/11\/Untitled-6.png 1115w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>\ubcf4\ud1b5 \uc774 \ud504\ub85c\uadf8\ub7a8\uc744 \uc2e4\ud589\ud558\uae30 \uc804\uc5d0 \ub124\uc774\ud2f0\ube0c \uc2e4\ud589 \ud30c\uc77c\uc744 \uc0dd\uc131\ud558\uae30 \uc704\ud574 \ub9c1\ud06c\ud574\uc57c \ud560 \uac83\uc774\ub2e4.<\/p>\n\n\n\n<p>\uadf8\ub7ec\ub098 KLEE\ub294 \uc9c1\uc811 LLVM \ube44\ud2b8\ucf54\ub4dc \ud30c\uc77c\uc5d0\uc11c \uc2e4\ud589\ub41c\ub2e4.<\/p>\n\n\n\n<p>\uc774 \ud504\ub85c\uadf8\ub7a8\uc740 \ub2e8\uc77c \ud30c\uc77c\ub9cc \uac00\uc9c0\uace0 \uc788\uc73c\ubbc0\ub85c \ub9c1\ud06c\uac00 \ud544\uc694\ud558\uc9c0 \uc54a\ub2e4.<\/p>\n\n\n\n<p>\uc5ec\ub7ec \uc785\ub825\uc744 \uac00\uc9c4 &#8220;\uc2e4\uc81c&#8221; \ud504\ub85c\uadf8\ub7a8\uc758 \uacbd\uc6b0 \uc77c\ubc18\uc801\uc778 \ub9c1\ud06c \ub2e8\uacc4 \ub300\uc2e0 <strong>llvm-link<\/strong> \ub3c4\uad6c\ub97c \uc0ac\uc6a9\ud558\uc5ec \uc5ec\ub7ec LLVM \ube44\ud2b8\ucf54\ub4dc \ud30c\uc77c\uc744 \ud558\ub098\uc758 \ubaa8\ub4c8\ub85c \ubcd1\ud569\ud558\uc5ec KLEE\uc5d0\uc11c \uc2e4\ud589\ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">KLEE\ub97c \ud1b5\ud574 \ucf54\ub4dc \uc2e4\ud589\ud558\uae30<\/h2>\n\n\n\n<p>\ub2e4\uc74c \ub2e8\uacc4\ub294 KLEE\ub97c \uc0ac\uc6a9\ud558\uc5ec \ucf54\ub4dc\ub97c \uc2e4\ud589\ud558\ub294 \uac83\uc774\ub2e4. (\uba85\ub839\uc5b4\uc758 \uc218\ub294 LLVM \ubc84\uc804 \ubc0f \ucd5c\uc801\ud654 \uc218\uc900\uc5d0 \ub530\ub77c \ub2e4\ub97c \uc218 \uc788\uc74c)<\/p>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-9d6595d7 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:100%\">\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\" data-enlighter-theme=\"dracula\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">$ klee --only-output-states-covering-new Regexp.bc\nKLEE: output directory is \"\/home\/ubuntu\/whitehat\/IOT-research\/klee-study\/tutorial_2\/klee-out-0\"\nKLEE: Using STP solver backend\nKLEE: SAT solver: MiniSat\nKLEE: ERROR: Regexp.c:14: memory error: out of bound pointer\nKLEE: NOTE: now ignoring this error at this location\nKLEE: ERROR: Regexp.c:16: memory error: out of bound pointer\nKLEE: NOTE: now ignoring this error at this location\n\nKLEE: done: total instructions = 4849788\nKLEE: done: completed paths = 6675\nKLEE: done: partially completed paths = 763\nKLEE: done: generated tests = 18\n<\/pre>\n<\/div>\n<\/div>\n\n\n\n<p>KLEE\ub97c \uc2dc\uc791\ud558\uba74 \ucd9c\ub825\uc744 \uc800\uc7a5\ud558\ub294 \ub514\ub809\ud1a0\ub9ac\ub97c \ud45c\uc2dc\ud55c\ub2e4. (ex: klee-out-0)<\/p>\n\n\n\n<p>KLEE\ub294 \uae30\ubcf8\uc801\uc73c\ub85c \uccab \ubc88\uc9f8 \ube48 <strong>klee-out-N<\/strong> \ub514\ub809\ud1a0\ub9ac\ub97c \uc0ac\uc6a9\ud558\uace0, <br>\uac00\uc7a5 \ucd5c\uadfc\uc5d0 \uc0dd\uc131\ub41c \ub514\ub809\ud1a0\ub9ac\ub97c \uac00\ub9ac\ud0a4\ub294 <strong>klee-last <\/strong>\uc2ec\ubcfc\ub9ad \ub9c1\ud06c\ub3c4 \ub9cc\ub4e0\ub2e4.<br>\ucd9c\ub825\uc5d0 \uc0ac\uc6a9\ud560 \ub514\ub809\ud1a0\ub9ac\ub97c \uc9c0\uc815\ud558\ub824\uba74, \uba85\ub839\uc904 \uc778\uc218 <strong>-output-dir=path<\/strong>\ub97c \uc0ac\uc6a9\ud560 \uc218\ub3c4 \uc788\ub2e4.<\/p>\n\n\n\n<p>KLEE\uac00 \uc2e4\ud589 \uc911\uc77c \ub54c &#8220;\uc911\uc694\ud55c&#8221; \uc774\ubca4\ud2b8\uc5d0 \ub300\ud55c \uc0c1\ud0dc \uba54\uc2dc\uc9c0\ub97c \ucd9c\ub825\ud574\uc900\ub2e4.<br>\uc608\ub97c \ub4e4\uc5b4 \ud504\ub85c\uadf8\ub7a8\uc5d0\uc11c \uc624\ub958\ub97c \ubc1c\uacac\ud588\uc744 \ub54c \uba54\uc2dc\uc9c0\uac00 \ud45c\uc2dc\ub41c\ub2e4.<br>\uc774 \uacbd\uc6b0 KLEE\ub294 \ud14c\uc2a4\ud2b8 \ud504\ub85c\uadf8\ub7a8\uc758 <strong>14\ubc88\uc9f8\uc640 16\ubc88\uc9f8 \ub77c\uc778\uc5d0\uc11c memory error: out of bound pointer (\ub450 \uac1c\uc758 \uc798\ubabb\ub41c \uba54\ubaa8\ub9ac \uc561\uc138\uc2a4)<\/strong>\ub97c \uac10\uc9c0\ud588\ub2e4\uace0 \ub098\ud0c0\ub09c\ub2e4.<br>\uc774\uc5d0 \ub300\ud574\uc11c\ub294 \uc7a0\uc2dc\ud6c4 \uc790\uc138\ud788 \ub2e4\uc2dc \ud55c\ubc88 \uc0b4\ud3b4\ubcfc \uac83\uc774\ub2e4.<\/p>\n\n\n\n<p>\ub9c8\uc9c0\ub9c9\uc73c\ub85c, KLEE \uc2e4\ud589\uc774 \uc644\ub8cc\ub418\uba74 \uc2e4\ud589\uc5d0 \uad00\ud55c \uba87 \uac00\uc9c0 \ud1b5\uacc4\ub97c \ucd9c\ub825\ud55c\ub2e4.<br>\uc5ec\uae30\uc5d0\uc11c \ubcfc \uc218 \uc788\ub4ef\uc774 KLEE\ub294 \ucd1d \uc57d <strong>4.8 \ubc31\ub9cc <\/strong>\uac1c\uc758 \uba85\ub839\uc5b4\ub97c \uc2e4\ud589\ud558\uace0 <strong>7,438<\/strong>\uac1c\uc758 \uacbd\ub85c\ub97c \ud0d0\uc0c9\ud558\uba70 <strong>16<\/strong>\uac1c\uc758 \ud14c\uc2a4\ud2b8 \ucf00\uc774\uc2a4\ub97c \uc0dd\uc131\ud574\ub0c8\ub2e4.<br>KLEE\ub294 \uc0c8\ub85c\uc6b4 \ucf54\ub4dc\ub97c \uc2e4\uc81c\ub85c \ud3ec\ud568\ud558\ub294 \uc0c1\ud0dc\uc5d0 \ub300\ud55c \ud14c\uc2a4\ud2b8 \uc0dd\uc131\uc744 <strong>&#8211;only-output-states-covering-new<\/strong>\ub85c \uc81c\ud55c\ud588\uae30 \ub54c\ubb38\uc5d0 16\uac1c\uc758 \ud14c\uc2a4\ud2b8 \ucf00\uc774\uc2a4\ub9cc \uc0dd\uc131\ud588\ub2e4.<\/p>\n\n\n\n<p>\uc774 \ud50c\ub798\uadf8\ub97c \uc81c\uc678\ud558\uba74 KLEE\ub294 <strong>6,677<\/strong>\uac1c\uc758 \ud14c\uc2a4\ud2b8 \ucf00\uc774\uc2a4\ub97c \uc0dd\uc131\ud560 \uac83\uc774\ub2e4.<br>\uadf8\ub7fc\uc5d0\ub3c4 \ubd88\uad6c\ud558\uace0 KLEE\ub294 \ubaa8\ub4e0 \uacbd\ub85c\uc5d0 \ub300\ud574 \ud14c\uc2a4\ud2b8 \ucf00\uc774\uc2a4\ub97c \uc0dd\uc131\ud558\uc9c0 \uc54a\ub294\ub2e4.<\/p>\n\n\n\n<p>\ubc84\uadf8\ub97c \ubc1c\uacac\ud558\uba74 \ud574\ub2f9 \ubc84\uadf8\uc5d0 \ub3c4\ub2ec\ud558\ub294 \uccab \ubc88\uc9f8 \uc0c1\ud0dc\uc5d0 \ub300\ud55c \ud14c\uc2a4\ud2b8 \ucf00\uc774\uc2a4\ub97c \uc0dd\uc131\ud55c\ub2e4.<br>\ud574\ub2f9 \uc704\uce58\uc5d0\uc11c \ub3d9\uc77c\ud55c \ubc84\uadf8\uc5d0 \ub3c4\ub2ec\ud558\ub294 \ub2e4\ub978 \ubaa8\ub4e0 \uacbd\ub85c\ub294 \uc870\uc6a9\ud788 \uc885\ub8cc\ub418\uace0 \ubd80\ubd84\uc801\uc73c\ub85c \uc644\ub8cc\ub41c \uacbd\ub85c\ub85c \ubcf4\uace0\ub41c\ub2e4.<\/p>\n\n\n\n<p>\uc624\ub958 \ucf00\uc774\uc2a4\uc758 \uc911\ubcf5\uc744 \uc2e0\uacbd \uc4f0\uc9c0 \uc54a\ub294\ub2e4\uba74, <strong>&#8211;emit-all-errors<\/strong> \uc635\uc158\uc744 \uc0ac\uc6a9\ud558\uc5ec <strong>7,438<\/strong>\uac1c\uc758 \uacbd\ub85c\uc5d0 \ub300\ud55c \ud14c\uc2a4\ud2b8 \ucf00\uc774\uc2a4\ub97c \uc0dd\uc131\uc2dc\ud0ac \uc218\ub3c4 \uc788\ub2e4.<\/p>\n\n\n\n<p>\ub9ce\uc740 \ud604\uc2e4\uc801\uc778 \ud504\ub85c\uadf8\ub7a8\ub4e4\uc740 \ubb34\ud55c\ud558\uac70\ub098(\ub610\ub294 \uadf9\ud788 \ud070) \ub9ce\uc740 \uacbd\ub85c\ub97c \uac00\uc9c0\uba70, KLEE\uac00 \uc885\ub8cc\ub418\uc9c0 \uc54a\ub294 \uac83\uc774 \uc77c\ubc18\uc801\uc774\ub2e4.<br>\uae30\ubcf8\uc801\uc73c\ub85c KLEE\ub294 \uc0ac\uc6a9\uc790\uac00 <strong>Control-C<\/strong>\ub97c \ub204\ub97c \ub54c\uae4c\uc9c0 \uacc4\uc18d \uc2e4\ud589\ub41c\ub2e4.(\uc989, KLEE\uac00 <strong>SIGINT<\/strong>\ub97c \ubc1b\uc744 \ub54c\uae4c\uc9c0\ub97c \uc758\ubbf8)<\/p>\n\n\n\n<p>\uadf8\ub7ec\ub098 KLEE\uc758 \uc2e4\ud589 \uc2dc\uac04\uacfc \uba54\ubaa8\ub9ac \uc0ac\uc6a9\ub7c9\uc744 \uc81c\ud55c\ud558\ub294 \ubd80\uac00 \uc635\uc158\ub4e4\uc774 \uc874\uc7ac\ud55c\ub2e4.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>max-time=&lt;\uc2dc\uac04 \uac04\uaca9&gt;<\/strong>: \uc8fc\uc5b4\uc9c4 \uc2dc\uac04\uc774 \ud750\ub978 \ub4a4\uc5d0\ub294 \uc2e4\ud589\uc744 \uc911\ub2e8\ud55c\ub2e4. (eg: <code>10min<\/code>&nbsp;or&nbsp;<code>1h5s<\/code>)<\/li>\n\n\n\n<li><strong>max-forks=N<\/strong>: <code>N<\/code>\uac1c\uc758 \uc2ec\ubcfc\ub9ad \ubd84\uae30 \uc774\ud6c4\uc5d0 \ud3ec\ud06c(forking)\ub97c \uc911\uc9c0\ud558\uace0 \ub0a8\uc740 \uacbd\ub85c\ub97c \uc885\ub8cc\ud55c\ub2e4.<\/li>\n\n\n\n<li><strong>max-memory=N<\/strong>: \uba54\ubaa8\ub9ac \uc18c\ube44\ub97c <code>N<\/code> \uba54\uac00\ubc14\uc774\ud2b8\ub85c \uc81c\ud55c\uc2dc\ud0a8\ub2e4.<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"604\" src=\"https:\/\/h4ck.kr\/wp-content\/uploads\/2023\/11\/Untitled-7-1024x604.png\" alt=\"\" class=\"wp-image-1140\" srcset=\"https:\/\/h4ck.kr\/wp-content\/uploads\/2023\/11\/Untitled-7-1024x604.png 1024w, https:\/\/h4ck.kr\/wp-content\/uploads\/2023\/11\/Untitled-7-300x177.png 300w, https:\/\/h4ck.kr\/wp-content\/uploads\/2023\/11\/Untitled-7-768x453.png 768w, https:\/\/h4ck.kr\/wp-content\/uploads\/2023\/11\/Untitled-7.png 1115w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">KLEE \uc624\ub958 \ubcf4\uace0\uc11c<\/h2>\n\n\n\n<p>KLEE\uac00 \uc2e4\ud589 \uc911\uc778 \ud504\ub85c\uadf8\ub7a8\uc5d0\uc11c \uc624\ub958\ub97c \uac10\uc9c0\ud558\uba74 \ud574\ub2f9 \uc624\ub958\ub97c \ub098\ud0c0\ub0b4\ub294 \ud14c\uc2a4\ud2b8 \ucf00\uc774\uc2a4\ub97c \uc0dd\uc131\ud558\uace0,<br>\uc624\ub958\uc758 \uc885\ub958\ub97c \uc2dd\ubcc4\ud558\ub294 <strong>TYPE<\/strong>\uacfc \ud14c\uc2a4\ud2b8 \ucf00\uc774\uc2a4 \ubc88\ud638\uc778 <strong>N<\/strong>\uc744 \uc0ac\uc6a9\ud558\uc5ec \uc624\ub958\uc5d0 \ub300\ud55c \ucd94\uac00 \uc815\ubcf4\ub97c <strong>testN.TYPE.err<\/strong> \ud30c\uc77c\uc5d0 \uae30\ub85d\ud55c\ub2e4.<\/p>\n\n\n\n<p>KLEE\uac00 \uac10\uc9c0\ud558\ub294 \uc624\ub958 \uc720\ud615 \uc911 \uc77c\ubd80\ub294 \ub2e4\uc74c\uacfc \uac19\ub2e4:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>ptr<\/strong>: \uc720\ud6a8\ud558\uc9c0 \uc54a\uc740 \uba54\ubaa8\ub9ac \uc704\uce58\uc758 \uc800\uc7a5 \ub610\ub294 \ub85c\ub4dc<\/li>\n\n\n\n<li><strong>free<\/strong>: \ub450 \ubc88 \ud638\ucd9c\ud558\uac70\ub098 \uc720\ud6a8\ud558\uc9c0 \uc54a\uc740 <code>free()<\/code><\/li>\n\n\n\n<li><strong>abort<\/strong>: \ud504\ub85c\uadf8\ub7a8\uc5d0\uc11c <code>abort()<\/code> \ud638\ucd9c<\/li>\n\n\n\n<li><strong>assert<\/strong>: <code>assertion<\/code> \uc2e4\ud328<\/li>\n\n\n\n<li><strong>div<\/strong>: <code>0<\/code>\uc73c\ub85c \ub098\ub204\uae30\ub098 \ub098\uba38\uc9c0 \uc5f0\uc0b0 \uac10\uc9c0<\/li>\n\n\n\n<li><strong>user<\/strong>: \uc785\ub825\uacfc \uad00\ub828\ub41c \ubb38\uc81c (\uc720\ud6a8\ud558\uc9c0 \uc54a\uc740 KLEE \ub0b4\ubd80 \ud638\ucd9c) \ub610\ub294 KLEE \uc0ac\uc6a9 \ubc29\ubc95\uc5d0 \ubb38\uc81c\uac00 \uc788\ub294 \uacbd\uc6b0<\/li>\n\n\n\n<li><strong>exec<\/strong>: KLEE\uac00 \ud504\ub85c\uadf8\ub7a8 \uc2e4\ud589\uc744 \ubc29\ud574\ud558\ub294 \ubb38\uc81c; \uc608\ub97c \ub4e4\uc5b4 \uc54c\ub824\uc9c0\uc9c0 \uc54a\uc740 \uba85\ub839\uc5b4, \uc720\ud6a8\ud558\uc9c0 \uc54a\uc740 \ud568\uc218 \ud3ec\uc778\ud130 \ud638\ucd9c \ub610\ub294 \uc778\ub77c\uc778 \uc5b4\uc148\ube14\ub9ac \ud638\ucd9c<\/li>\n\n\n\n<li><strong>model<\/strong>: KLEE\uac00 \uc644\uc804\ud55c \uc815\ubc00\ub3c4\ub97c \uc720\uc9c0\ud558\uc9c0 \ubabb\ud558\uace0 \ud504\ub85c\uadf8\ub7a8 \uc0c1\ud0dc\uc758 \uc77c\ubd80\ub9cc \ud0d0\uc0c9\ud558\ub294 \ubb38\uc81c. \uc608\ub97c \ub4e4\uc5b4 <code>malloc<\/code>\uc5d0 \ub300\ud55c \uc2ec\ubcfc \ud06c\uae30\ub294 \ud604\uc7ac \uc9c0\uc6d0\ub418\uc9c0 \uc54a\uc73c\uba70, \uc774\ub7ec\ud55c \uacbd\uc6b0 KLEE\ub294 \uc778\uc218\ub97c \uba85\ud655\ud558\uac8c(concretize)\ud55c\ub2e4.<\/li>\n<\/ul>\n\n\n\n<p>KLEE\ub294 \uc624\ub958\ub97c \uac10\uc9c0\ud558\uba74 \ucf58\uc194\uc5d0 \uba54\uc2dc\uc9c0\ub97c \ucd9c\ub825\ud574\uc900\ub2e4.<br>\uc704\uc758 \ud14c\uc2a4\ud2b8 \uc2e4\ud589\uc5d0\uc11c KLEE\uac00<strong> \ub450 \uac1c\uc758 \uba54\ubaa8\ub9ac \uc624\ub958<\/strong>\ub97c \uac10\uc9c0\ud588\uc74c\uc744 \ud655\uc778\ud560 \uc218 \uc788\ub2e4.<br>\ubaa8\ub4e0 \ud504\ub85c\uadf8\ub7a8 \uc624\ub958\uc5d0 \ub300\ud574 KLEE\ub294 <strong>.err<\/strong> \ud30c\uc77c\uc5d0 \uac04\ub2e8\ud55c \ubc31\ud2b8\ub808\uc774\uc2a4(backtrace)\ub97c \uae30\ub85d\ud55c\ub2e4.<br>\uc544\ub798\ub294 \uc704\uc5d0\uc11c \uc5b8\uae09\ud55c \uc624\ub958 \uc911 \ud558\ub098\uc758 \ubaa8\uc2b5\uc774\ub2e4.<\/p>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-9d6595d7 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:100%\">\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\" data-enlighter-theme=\"dracula\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">Error: memory error: out of bound pointer\nFile: Regexp.c\nLine: 14\nassembly.ll line: 76\nState: 39\nStack:\n        #000000076 in matchhere(94606982661559, 94606982661488) at Regexp.c:14\n        #100000206 in matchstar(symbolic, 94606982661559, 94606982661488) at Regexp.c:7\n        #200000101 in matchhere(94606982661557, 94606982661488) at Regexp.c:17\n        #300000206 in matchstar(symbolic, 94606982661557, 94606982661488) at Regexp.c:7\n        #400000101 in matchhere(94606982661555, 94606982661488) at Regexp.c:17\n        #500000206 in matchstar(symbolic, 94606982661555, 94606982661488) at Regexp.c:7\n        #600000101 in matchhere(94606982661553, 94606982661488) at Regexp.c:17\n        #700000029 in match(94606982661552, 94606982661488) at Regexp.c:27\n        #800000183 in main() at Regexp.c:50\nInfo:\n        address: 94606982661559\n        next: object at 94606982661408 of size 4\n                MO20[4] allocated at match():  %3 = alloca i32, align 4\n<\/pre>\n<\/div>\n<\/div>\n\n\n\n<p>\ubc31\ud2b8\ub808\uc774\uc2a4\uc758 \uac01 \uc904\uc740 \ud504\ub808\uc784 \ubc88\ud638, \uba85\ub839\uc5b4 \ub77c\uc778 (\uc774\uac83\uc740 \uc2e4\ud589 \ucd9c\ub825\uacfc \ud568\uaed8 \ucc3e\uc744 \uc218 \uc788\ub294 <strong>assembly.ll<\/strong> \ud30c\uc77c\uc5d0\uc11c\uc758 \ub77c\uc778 \ubc88\ud638\ub97c \uc758\ubbf8\ud568), \ud568\uc218\uc640 \uc778\uc218 (\uad6c\uccb4\uc801\uc778 \ub9e4\uac1c\ubcc0\uc218\uc758 \uac12\uc744 \ud3ec\ud568\ud568), \uadf8\ub9ac\uace0 \uc18c\uc2a4 \uc815\ubcf4\ub97c \ub098\uc5f4\ud55c\ub2e4.<\/p>\n\n\n\n<p>\ud2b9\uc815 \uc624\ub958 \ubcf4\uace0\uc11c\uc5d0\ub294 \ucd94\uac00 \uc815\ubcf4\ub3c4 \ud3ec\ud568\ub420 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<p>\uba54\ubaa8\ub9ac \uc624\ub958\uc758 \uacbd\uc6b0, KLEE\ub294 \uc798\ubabb\ub41c \uc8fc\uc18c\ub97c \ud45c\uc2dc\ud558\uace0 \ud574\ub2f9 \uc8fc\uc18c \uc55e\ub4a4\uc758 \ud799(heap)\uc5d0 \uc788\ub294 \uac1d\uccb4\ub97c \ubcf4\uc5ec\uc900\ub2e4.<\/p>\n\n\n\n<p>\uc774 \uacbd\uc6b0 \uc8fc\uc18c\uac00 \ubc14\ub85c \uc774\uc804 \uac1d\uccb4\uc758 \ub05d\uc5d0\uc11c \ud55c \ubc14\uc774\ud2b8 \ub4a4\uc5d0 \uc788\ub294 \uac83\uc73c\ub85c \ub098\ud0c0\ub09c\ub2e4.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"955\" src=\"https:\/\/h4ck.kr\/wp-content\/uploads\/2023\/11\/Untitled-8-1024x955.png\" alt=\"\" class=\"wp-image-1141\" srcset=\"https:\/\/h4ck.kr\/wp-content\/uploads\/2023\/11\/Untitled-8-1024x955.png 1024w, https:\/\/h4ck.kr\/wp-content\/uploads\/2023\/11\/Untitled-8-300x280.png 300w, https:\/\/h4ck.kr\/wp-content\/uploads\/2023\/11\/Untitled-8-768x716.png 768w, https:\/\/h4ck.kr\/wp-content\/uploads\/2023\/11\/Untitled-8.png 1115w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">\ud14c\uc2a4\ud2b8 \ud558\ub124\uc2a4\ub97c \ubcc0\uacbd\ud558\uae30<\/h2>\n\n\n\n<p>\uc774 \ud504\ub85c\uadf8\ub7a8\uc5d0\uc11c KLEE\uac00 \uba54\ubaa8\ub9ac \uc624\ub958\ub97c \ucc3e\ub294 \uc774\uc720\ub294 \uc815\uaddc \ud45c\ud604\uc2dd \ud568\uc218\uc5d0 \ubc84\uadf8\uac00 \uc788\ub294 \uac83\uc774 \uc544\ub2c8\ub77c \ud14c\uc2a4\ud2b8 \ub4dc\ub77c\uc774\ubc84\uc5d0 \ubb38\uc81c\uac00 \uc788\ub2e4\ub294 \uac83\uc744 \ub098\ud0c0\ub0b8\ub2e4.<br>\ubb38\uc81c\ub294 \uc785\ub825 \uc815\uaddc \ud45c\ud604\uc2dd \ubc84\ud37c\ub97c \uc644\uc804\ud788 \uc2ec\ubcfc\ub9ad\ud558\uac8c \ub9cc\ub4e4\uace0 \uc788\uc9c0\ub9cc, <strong>match<\/strong> \ud568\uc218\ub294 \ud574\ub2f9 \ubc84\ud37c\uac00 \ub110 \uc885\ub8cc\ub41c \ubb38\uc790\uc5f4\uc774\uc5b4\uc57c \ud55c\ub2e4\uace0 \uc608\uc0c1\ud55c\ub2e4.<br>\ub530\ub77c\uc11c \uc774 \ubb38\uc81c\ub97c \ud574\uacb0\ud558\ub294 2\uac00\uc9c0 \ubc29\ubc95\uc744 \uc0b4\ud3b4\ubcf4\uaca0\ub2e4.<\/p>\n\n\n\n<p>\uac00\uc7a5 \uac04\ub2e8\ud55c \ubc29\ubc95\uc740 \ubc84\ud37c\ub97c \uc2ec\ubcfc\ub9ad\ud558\uac8c \ub9cc\ub4e0 \ud6c4\uc5d0 <code>\\0<\/code>\uc744 \ubc84\ud37c \ub05d\uc5d0 \uc800\uc7a5\ud558\ub294 \uac83\uc774\ub2e4.<br>\uc774\ub807\uac8c \ud558\uba74 \uc6b0\ub9ac\uc758 \ub4dc\ub77c\uc774\ubc84\ub294 \ub2e4\uc74c\uacfc \uac19\ub2e4:<\/p>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-9d6595d7 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:100%\">\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"c\" data-enlighter-theme=\"dracula\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">int main() {\n  \/\/ The input regular expression.\n  char re[SIZE];\n\n  \/\/ Make the input symbolic.\n  klee_make_symbolic(re, sizeof re, \"re\");\n  re[SIZE - 1] = '\\\\0';\n\n  \/\/ Try to match against a constant string \"hello\".\n  match(re, \"hello\");\n\n  return 0;\n}<\/pre>\n<\/div>\n<\/div>\n\n\n\n<p>\ubc84\ud37c\ub97c \uc2ec\ubcfc\ub9ad\ud558\uac8c \ub9cc\ub4dc\ub294 \uac83\uc740 \ub0b4\uc6a9\uc744 \uc2ec\ubcfc \ubcc0\uc218\ub97c \ucc38\uc870\ud558\ub3c4\ub85d \ucd08\uae30\ud654\ud558\ub294 \uac83\ubfd0\uc774\uba70, \uc5ec\uc804\ud788 \uc6d0\ud558\ub294 \ub300\ub85c \uba54\ubaa8\ub9ac\ub97c \uc218\uc815\ud560 \uc218 \uc788\ub2e4.<br>\uc774 \ud14c\uc2a4\ud2b8 \ud504\ub85c\uadf8\ub7a8\uc744 \ub2e4\uc2dc \ucef4\ud30c\uc77c\ud558\uace0 KLEE\uc5d0\uc11c \uc2e4\ud589\ud558\uba74 \uba54\ubaa8\ub9ac \uc624\ub958\uac00 \uc0ac\ub77c\uc9c8 \uac83\uc774\ub2e4.<\/p>\n\n\n\n<p>\ub3d9\uc77c\ud55c \ud6a8\uacfc\ub97c \uc5bb\uae30 \uc704\ud55c \ub2e4\ub978 \ubc29\ubc95\uc740 <strong>klee_assume<\/strong> \ub0b4\uc7a5 \ud568\uc218\ub97c \uc0ac\uc6a9\ud558\ub294 \uac83\uc774\ub2e4.<br><strong>klee_assume<\/strong>\uc740 \uc77c\ubc18\uc801\uc73c\ub85c \uc870\uac74\uc2dd\uc744 \uc778\uc218\ub85c \uc0ac\uc6a9\ud558\uba70, \ud604\uc7ac \uacbd\ub85c\uc5d0\uc11c \ud574\ub2f9 \ud45c\ud604\uc2dd\uc774 \ucc38\uc774\ub77c\uace0 &#8220;\uac00\uc815&#8221;\ud55c\ub2e4. (\ud45c\ud604\uc2dd\uc774 \uc808\ub300\ub85c \ubc1c\uc0dd\ud558\uc9c0 \uc54a\uc744 \uacbd\uc6b0, \uc989 \ud45c\ud604\uc2dd\uc774 \ud655\uc2e4\ud788 \uac70\uc9d3\uc778 \uacbd\uc6b0, KLEE\ub294 \uc624\ub958\ub97c \ubcf4\uace0\ud568)<br>\uc6b0\ub9ac\ub294 <strong>klee_assume<\/strong>\uc744 \uc0ac\uc6a9\ud558\uc5ec \ubb38\uc790\uc5f4\uc774 \ub110 \uc885\ub8cc\ub420 \uacbd\uc6b0\uc5d0\ub9cc \uc0c1\ud0dc\ub97c \ud0d0\uc0c9\ud558\ub3c4\ub85d \ud558\uae30 \uc704\ud574 \ub4dc\ub77c\uc774\ubc84\ub97c \ub2e4\uc74c\uacfc \uac19\uc774 \uc791\uc131\ud560 \uc218 \uc788\ub2e4:<\/p>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-9d6595d7 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:100%\">\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"c\" data-enlighter-theme=\"dracula\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">int main() {\n  \/\/ The input regular expression.\n  char re[SIZE];\n\n  \/\/ Make the input symbolic.\n  klee_make_symbolic(re, sizeof re, \"re\");\n  klee_assume(re[SIZE - 1] == '\\\\0');\n\n  \/\/ Try to match against a constant string \"hello\".\n  match(re, \"hello\");\n\n  return 0;\n}<\/pre>\n<\/div>\n<\/div>\n\n\n\n<p>\uc774 \ud2b9\uc815 \uc608\uc81c\uc5d0\uc11c\ub294 \ub450 \uac00\uc9c0 \uc194\ub8e8\uc158\uc774 \ubaa8\ub450 \uc798 \uc791\ub3d9\ud558\uc9c0\ub9cc, \uc77c\ubc18\uc801\uc73c\ub85c <strong>klee_assume<\/strong> \ubc29\uc2dd\uc774 \ub354 \uc720\uc5f0\ud558\ub2e4:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\uc81c\uc57d \uc870\uac74\uc744 \uba85\uc2dc\uc801\uc73c\ub85c \uc120\uc5b8\ud568\uc73c\ub85c\uc368, \uc774\uac83\uc740 \ud14c\uc2a4\ud2b8 \ucf00\uc774\uc2a4\uac00 <code>\\0<\/code>\uc744 \uac00\uc838\uc57c \ud568\uc744 \uac15\uc81c\ud55c\ub2e4. <br>\uccab \ubc88\uc9f8 \uc608\uc81c\uc5d0\uc11c \uc885\ub8cc \ub110\uc744 \uba85\uc2dc\uc801\uc73c\ub85c \uc4f0\ub294 \uacbd\uc6b0, \uc2ec\ubcfc\ub9ad \uc785\ub825\uc758 \ub9c8\uc9c0\ub9c9 \ubc14\uc774\ud2b8\uac00 \ubb34\uc5c7\uc774\ub4e0 \uc0c1\uad00\ud558\uc9c0 \uc54a\uc73c\uba70 KLEE\ub294 \uc544\ubb34 \uac12\uc774\ub4e0 \uc0dd\uc131\ud574\ub0bc \uc218 \uc788\ub2e4. <br>\ud14c\uc2a4\ud2b8 \ucf00\uc774\uc2a4\ub97c \uc9c1\uc811 \uac80\ud1a0\ud574\uc57c \ud558\ub294 \uacbd\uc6b0, \uc911\uc694\ud55c \ubaa8\ub4e0 \uac12\uc744 \ud45c\uc2dc\ud558\ub3c4\ub85d \ud558\ub294 \uac83\uc774 \ub354 \ud3b8\ub9ac\ud560 \uc218\ub3c4 \uc788\ub2e4.<\/li>\n\n\n\n<li><strong>klee_assume<\/strong>\uc744 \uc0ac\uc6a9\ud558\uba74 \ub354 \ubcf5\uc7a1\ud55c \uc81c\uc57d \uc870\uac74\uc744 \uc778\ucf54\ub529\ud560 \uc218 \uc788\ub2e4. <br>\uc608\ub97c \ub4e4\uc5b4, <strong>klee_assume(re[0] != &#8216;^&#8217;)<\/strong>\ub97c \uc0ac\uc6a9\ud558\uc5ec \uccab \ubc88\uc9f8 \ubc14\uc774\ud2b8\uac00 <code>^<\/code>\uac00 \uc544\ub2cc \uc0c1\ud0dc\ub9cc\uc744 \ud0d0\uc0c9\ud558\ub3c4\ub85d KLEE\uc5d0 \uc9c0\uc2dc\ud560 \uc218 \uc788\ub2e4.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>\ucc38\uace0<\/strong><\/h3>\n\n\n\n<p><strong>klee_assume<\/strong>\uc744 \uc5ec\ub7ec \uc870\uac74\uacfc \ud568\uaed8 \uc0ac\uc6a9\ud560 \ub54c \uc8fc\uc758\ud574\uc57c \ud55c\ub2e4.<\/p>\n\n\n\n<p><code>&amp;&amp;<\/code> \ubc0f <code>||<\/code>\uacfc \uac19\uc740 <strong>Boolean<\/strong> \uc870\uac74\uc740 \ud45c\ud604\uc2dd\uc758 \uacb0\uacfc\ub97c \uacc4\uc0b0\ud558\uae30 \uc804\uc5d0 \ucf54\ub4dc\ub85c \ucef4\ud30c\uc77c\ub420 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<p>\uc774\ub7ec\ud55c \uc0c1\ud669\uc5d0\uc11c KLEE\ub294 <strong>klee_assume<\/strong> \ud638\ucd9c\uc5d0 \ub3c4\ub2ec\ud558\uae30 \uc804\uc5d0 \ud504\ub85c\uc138\uc2a4\ub97c \ubd84\uae30\ud560 \uac83\uc774\uba70, \ubd88\ud544\uc694\ud55c \ucd94\uac00 \uc0c1\ud0dc\ub97c \ud0d0\uc0c9\ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<p>\uc774\ub7ec\ud55c \uc774\uc720\ub85c <strong>klee_assume<\/strong>\uc5d0 \uac00\ub2a5\ud55c \uac04\ub2e8\ud55c \ud45c\ud604\uc2dd\uc744 \uc0ac\uc6a9\ud558\ub294 \uac83\uc774 \uc88b\uc73c\uba70 (ex: \ub2e8\uc77c \ud638\ucd9c\uc744 \uc5ec\ub7ec \ud638\ucd9c\ub85c \ubd84\ud560), <br>\ub2e8\ucd95 \ud3c9\uac00(short-circuiting) \uc5f0\uc0b0\uc790 \ub300\uc2e0 <code>&amp;<\/code> \ubc0f <code>|<\/code> \uc5f0\uc0b0\uc790\ub97c \uc0ac\uc6a9\ud558\ub294 \uac83\uc774 \uc88b\ub2e4.<\/p>\n\n\n\n<p><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\ucd9c\ucc98 \ubc0f \ubc88\uc5ed<\/h2>\n\n\n\n<p><a href=\"https:\/\/klee.github.io\/tutorials\/testing-regex\/\">https:\/\/klee.github.io\/tutorials\/testing-regex\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\uc774\uac83\uc740 \uac04\ub2e8\ud55c \uc815\uaddc \ud45c\ud604\uc2dd \uc77c\uce58 \ud568\uc218\ub97c \ud14c\uc2a4\ud2b8\ud558\uae30 \uc704\ud574 KLEE\ub97c \uc0ac\uc6a9\ud558\ub294 \uc608\uc81c\uc774\ub2e4.\uc18c\uc2a4 \ud2b8\ub9ac\uc5d0\uc11c examples\/regexp\uc5d0 \uae30\ubcf8 \uc608\uc81c\ub97c \ucc3e\uc744 \uc218 \uc788\ub2e4. Regexp.c\uc5d0\ub294 \uac04\ub2e8\ud55c \uc815\uaddc \ud45c\ud604\uc2dd \uc77c\uce58 \ud568\uc218\uc640 KLEE\ub97c \uc0ac\uc6a9\ud558\uc5ec\uc774 \ucf54\ub4dc\ub97c \ud0d0\uc0c9\ud558\uae30 \uc704\ud574 \ud544\uc694\ud55c \uae30\ubcf8 \ud14c\uc2a4\ud2b8 \ud558\ub124\uc2a4(main())\uac00 \ud3ec\ud568\ub418\uc5b4 \uc788\ub2e4.\uc18c\uc2a4 \ucf54\ub4dc\uc758 \ubc84\uc804\uc744 \uc5ec\uae30\uc11c \ubcfc \uc218 \uc788\ub2e4. \uc774 \uc608\uc81c\ub294 KLEE\ub97c \uc0ac\uc6a9\ud558\uc5ec \uc608\uc81c\ub97c \ube4c\ub4dc\ud558\uace0 \uc2e4\ud589\ud558\ub294 \ubc29\ubc95,\uadf8\ub9ac\uace0 \ucd9c\ub825\uc744 \ud574\uc11d\ud558\ub294 \ubc29\ubc95\uacfc \ud14c\uc2a4\ud2b8 \ub4dc\ub77c\uc774\ubc84\ub97c \uc218\ub3d9\uc73c\ub85c&hellip;&nbsp;<a href=\"https:\/\/h4ck.kr\/?p=1137\" rel=\"bookmark\">\ub354 \ubcf4\uae30 &raquo;<span class=\"screen-reader-text\">KLEE \ub450\ubc88\uc9f8 \ud29c\ud1a0\ub9ac\uc5bc: \uac04\ub2e8\ud55c \uc815\uaddc \ud45c\ud604\uc2dd \ub77c\uc774\ube0c\ub7ec\ub9ac\ub97c \ud14c\uc2a4\ud2b8\ud574\ubcf4\uae30<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"neve_meta_sidebar":"","neve_meta_container":"","neve_meta_enable_content_width":"","neve_meta_content_width":0,"neve_meta_title_alignment":"","neve_meta_author_avatar":"","neve_post_elements_order":"","neve_meta_disable_header":"","neve_meta_disable_footer":"","neve_meta_disable_title":"","footnotes":""},"categories":[15],"tags":[20],"class_list":["post-1137","post","type-post","status-publish","format-standard","hentry","category-whitehat1","tag-klee"],"_links":{"self":[{"href":"https:\/\/h4ck.kr\/index.php?rest_route=\/wp\/v2\/posts\/1137","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/h4ck.kr\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/h4ck.kr\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/h4ck.kr\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/h4ck.kr\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1137"}],"version-history":[{"count":7,"href":"https:\/\/h4ck.kr\/index.php?rest_route=\/wp\/v2\/posts\/1137\/revisions"}],"predecessor-version":[{"id":1161,"href":"https:\/\/h4ck.kr\/index.php?rest_route=\/wp\/v2\/posts\/1137\/revisions\/1161"}],"wp:attachment":[{"href":"https:\/\/h4ck.kr\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1137"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/h4ck.kr\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1137"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/h4ck.kr\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1137"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}