YARA User's Manual YARA User's Manual Ver. 1.6 Víctor Manuel Álvarez YARA Korean User's Manual Ver. 1.6 Hakawati(Woo-seo

Size: px
Start display at page:

Download "YARA User's Manual YARA User's Manual Ver. 1.6 Víctor Manuel Álvarez YARA Korean User's Manual Ver. 1.6 Hakawati(Woo-seo"

Transcription

1 Ver. 1.6 Víctor Manuel Álvarez YARA Korean User's Manual Ver. 1.6 Hakawati(Woo-seok Choi) ISAC & Research Engineer : Kisec 40 th : Malware Project Member : Blog : 1

2 YARA install! Yara 1.6 install on Linux! Yara-Python-1.6 install on Linux! Yara install on Windows! 4 YARA in a nutshell! 5 Writing rules! Comments! 7 Strings! Hexadecimal strings! Text strings! Case-insensitive strings! Wide-character strings! Searching for full words! Regular expressions! 13 Conditions! Counting strings! String offsets or virtual addresses! File size! Executable entry point! Accessing data at a given position! Sets of strings! Applying the same condition to many strings! Using anonymous strings with "of" and "for..of"! Iterating over string occurrences! Referencing other rules! 23 More about rules! Global rules! Private rules! Rule tags! Metadata! External variables! 26 Includes! 27 Using YARA from command-line! 28 Using YARA from Python! 29 PerformanceGuidelines 33 YARA Editor 33 2

3 10.1 YARA-Editor Install on Linux! UI Yara Browser! UI Malware Browser! Editor Config File Key Bindings File Menu Edit Menu Yara Menu Editor 37 3

4 0. YARA install YARA 를설치하고사용하는방법은매우간단합니다. Linux 계열들은소스코드를다운로드 받고컴파일하여사용할수있습니다. Windows 계열은컴파일을통해사용할수없고, Python 의모듈을이용하여사용할수있습니다. YARA 를이용한탐지를효과적으로 ( 자동화 ) 하기위해서는 Python 프로그래밍을연습해야합 니다. 0.1 Yara 1.6 install on Linux ~# sudo apt-get install libpcre3-dev g++ ~# wget ~# tar xfz yara-1.6.tar.gz ~# cd yara-1.6 ~/yara-1.6#./configure ~/yara-1.6# make ~/yara-1.6# make check ~/yara-1.6# make install 0.2 Yara-Python-1.6 install on Linux ~# wget ~# tar xfz yara-python-1.6.tar.gz ~# cd yara-python-1.6 ~/yara-python-1.6# python setup.py build ~/yara-python-1.6# python setup.py install Permission 에러가발생시명령줄앞에 sudo를사용하시면됩니다. 0.3 Yara install on Windows Windows 에서는 Python 의 Yara 모듈로 Yara 를사용할수있습니다. 그래서 Yara 가요구하는 Python 의버전에맞게 Python 을설치해야합니다. 4

5 다운로드 : >>> import yara >>> rules = yara.compile(filepath="yara 룰파일주소 ") >>> rules.match(" 대상파일주소 ") 1. YARA in a nutshell YARA는악성코드를연구하는연구원이악성코드의종류들을식별하고분류하는목적으로사용하는도구입니다. YARA를사용하면그종류의샘플에포함된텍스트또는바이너리정보의기반으로악성코드를분류할수있습니다. YARA는설명, 이름규칙문자열의집합그리고부울식으로규칙로직을결정합니다. 규칙이설명된악성코드의종류에속해있는지결정하기위해파일또는실행중인프로세스에적용할수있습니다. 다음예와함께설명합니다. 다음두변종의악성코드종류가있다고가정합니다. 그중하나는 에서다운로드하고, 다른하나는 에서다운로드합니다. 이 URL들의악성코드는하드코딩되어있습니다. win.exe 이름으로다운로드되어떨어지는두변종의파일또한하드코드의샘플을포함하고있습니다. 이러한설정된것들을통해우리는다음과같은규칙을만들수있습니다. rule BadBoy $a = win.exe $b = $c = $a and ($b or $c) 위의규칙은파일또는프로세스가 win.exe 문자열과두개의 URL 중하나를포함하고있 을때, BadBoy 로보고하도록 YARA 에게지시합니다. 이는단지단순한예제이며, 더복잡하고강력한규칙은 wild-card, 대소문자를구분하는텍 스트문자열, 정규표현식, 그리고 YARA 에서제공하는다양한기능들을사용하여만듭니다. 5

6 2. Writing rules YARA 의규칙은이해하고쓰기쉽게하기위해 C 언어의구조체를선언하는방식과유사한 구문으로갖추고있습니다. 다음은 YARA 에어떤것도적용하지않은아주간단한규칙입니 다. rule Dummy false YARA의각규칙은식별자규칙을따르는키워드 rules로시작합니다. 식별자는 C 프로그래밍언어와동일한어휘규칙을준수해야하며, 영숫자와밑줄문자를포함할수있지만, 첫번째문자는숫자를사용해서는안됩니다. 규칙식별자는대소문자를구분하며 128자를초과할수없습니다. 다음키워드들은예약되어있으며식별자로사용할수없습니다. all in private and include rule any index rva ascii indexes section at int8 strings condition int32 true entrypoint matches uint8 false meta uint16 filesize nocase uinit32 fullword note wide for or global of 규칙은일반적으로두섹션으로구분되어있습니다. 어떤문자열에도의존하지않는규칙이면, 문자열정의및조건, 문자열정의섹션을생략할수있지만상태섹션은항상필요로합니다. 문자열정의섹션은정의되어있는규칙의일부문자열을가집니다. 식별자는 $ 문자다음에영숫자와밑줄로구성되며, 해당문자열을참조하는조건섹션에서사용할수있습니다. 다음예제와같이문자열은텍스트나진수형태로정의할수있습니다. rule ExampleRule 6

7 $my_text_string = "text here" $my_hex_string = E2 34 A1 C8 23 FB $my_text_string or $my_hex_string 텍스트문자열은 C 언어처럼따옴표로묶여있습니다. 16 진수문자열은대괄호로묶으며, 이 는 16 진수의연속으로구성하며인접한문자는공백으로표시하여구분합니다. 10 진수숫자 는 16 진수문자열로인식하지않습니다. 조건세션의규칙은로직에있습니다. 이섹션에서말하고자하는것은파일또는프로세스에조건세션의규칙을충족하는로직을포함하며이는부울변수로표현합니다. 일반적으로문자열식별자를사용하여이전에정의된문자열찾습니다. 부울변수의역할은문자열식별자를통해파일이나프로세스메모리등에서찾은문자열과비교해 true 또는 false로평가합니다. 이렇게문자열식별자의문자열이파일이나프로세스, 메모리또는기타등등에의해서부울변수로인한 true로발견되었다면설정한규칙대로역할을수행합니다. 2.1 Comments YARA 규칙에서주석을추가할경우 C 소스파일에서단일라인과여러라인에주석을다는 것과같이주석을지원합니다. /* */ This is a multi-line comment... rule CommentExample //... and this is single-line comment false // just an dummy rule, don't do this 7

8 3. Strings YARA에는 3가지타입의문자열이있습니다. 16진수문자열, 텍스트문자열그리고정규표현식입니다. 16진수문자열은바이트의시퀀스그대로정의하는데사용하고, 텍스트문자열과정규표현식은텍스트문자그대로정의하여읽는부분에사용합니다. 그러나텍스트문자열과정규표현식을정의하는규칙을벗어나면바이트그대로의시퀀스로나타내어아래에표시됩니다. 3.1 Hexadecimal strings 16진수문자열은더욱유연하게 wild-cards, jumps 그리고 alternatives의세가지특별한구조를허용합니다. Wild-cards는어떤것과도매칭하지않고, 어떤바이트가들어갈지도모르는자리를표시하는역할을합니다. 자리를표시하는문자는물음표 (?) 입니다. 다음은 wild-cards와함께 16진수문자열을사용한예제입니다. rule WildcardExample $hex_string = E2 34?? C8 A? FB $hex_string 위의 wild-cards 예제는알수없는값을바이트단위뿐만아니라 nibble 단위로표현할수 있는의미를가집니다. Wild-cards는문자열을정의할때유용하지만변수의길이를알고있어야합니다. 하지만컨텐츠마다그길이는다를수있습니다. 일부의경우에서는변수의내용을길이의덩어리로문자열대신정의해야할수있습니다. 이러한상황에서 wild-cards대신 jumps를사용할수있습니다. rule JumpExample $hex_string = F4 23 [4-6] 62 B4 8

9 $hex_string 위의예제에서대괄호로묶여있고하이픈으로구분된숫자쌍이있는데, 이는 jumps 를나 타냅니다. 위예제의 jumps 는 4 에서 6 바이트의임의의시퀀스를차지할수있다는것을나 타내고있습니다. 이는다음문자열의패턴들과일치합니다. F B4 F B4 F A B4 가장낮은바운드 jumps 는 ( 하이픈의앞숫자 ) 0 보다크거나같아야하고, 가장높은바운 드 jumps 는 ( 하이픈의뒤의숫자 ) 255 이하여야합니다. 다음은유효한 jumps 입니다.: FE [0-8] FE [23-45] FE [ ] 다음은유효하지않은 jumps 입니다 : FE [10-7] FE [4-4] FE [ ] Jumps 도이와같이괄호로묶어하나의번호로지정할수있습니다 : FE [6] 위 jumps 의의미는다음과같이정확히 6 바이트의공간이존재해야한다는것을의미합니 다. FE 39 45???????????? 물론 wild-cards 와 jumps 는동일한문자열에혼합하여사용할수있습니다 : 78 [4] 45?? 5F 9

10 Wild-cards 와 jumps 의유일한제한은문자열의시작부분에표시할수없다는것입니다. 다음문자열은올바르지않습니다. 5? [4] 진수문자열의주어진조각에대한다른방법을제공해야만하는상황도있습니다. 이러 한상황에서는정규표현식 (regular expression) 과유사한구문을사용할수있습니다. rule AlternativesExample1 $hex_string = F4 23 ( 62 B4 56 ) 45 $hex_string 이규칙은 F B4 45 또는 F 가포함된파일과일치합니다. 또한두개이상의대안도표현할수있습니다. 실제로제공할수있는대체시퀀스의양 에는제한이없고길이도제한이없습니다. rule AlternativesExample2 $hex_string = F4 23 ( 62 B ?? 67 ) 45 $hex_string 위의예제에서도볼수있듯이, wild-cards 를포함하는문자열대체시퀀스의일부로사용 할수있습니다. 그러나 jumps 포함하는규칙은만들수없습니다. 3.2 Text strings 이전섹션과같이텍스트문자열은일반적으로다음과같이정의되어있습니다. 10

11 rule TextExample $text_string = "foobar" $text_string ASCII- 인코딩, 대소문자를구분하는문자열을표현하는가장간단한방법입니다. 그러나텍 스트문자열은문자열을해석하는방식에유용한수식을동반할수있습니다. 이러한수식 은공백으로구분된문자열정의의끝부분에추가되며, 아래와같이설명합니다. 텍스트문자열은 C 언어에서사용할수있는 escape sequences 의하위집합을포함할수 있습니다. \" \\ \t \xdd 더블쿼터백슬래쉬수평탭 16진수표기법의모든바이트 Case-insensitive strings YARA 의텍스트문자열이기본적으로대소문자를구분하지만같은줄의문자열정의끝부 분에보조 nocase 를추가하여대소문자를구분하지않는모드로설정할수있습니다. rule CaseInsensitveTextExample $text_string = "foobar" nocase $text_string nocase 설정으로문자열 "foobar" 은 "Foobar", "FOOBAR" 및 "foobar" 와일치합니다. 이러한설정은다른설정방식과함께사용할수있습니다. 11

12 3.2.2 Wide-character strings Wide 설정은실행에필요한많은바이너리에서문자당 2 바이트로인코딩된문자열을검 색하는데사용할수있습니다. 위의그림은문자열 Borland 에서각문자당 1 바이트로인코딩되어나타납니다. 그러므로 다음규칙이일치합니다. rule WideCharTextExample $wide_string = "Borland" wide $wide_string 그러나이설정은단지 0 과문자열에있는문자의 ASCII 코드를볼수있지만영어가아닌 문자가포함된 UTF-16 문자열은지원하지않습니다. 만약 wide 와 ASCII 형태둘다검색하 길원한다면, 순서상관없이 wide 와함께 ASCII 를사용합니다. rule WideCharTextExample $wide_and_ascii_string = "Borland" wide ascii $wide_and_ascii_string 12

13 Wide 설정없이 ASCII 설정같이나타낼수있지만, wide 에사용되는다양한문자열은기 본적으로 ASCII 로간주되기때문에사용하지않아도됩니다 Searching for full words 텍스트문자열에적용할수있는또다른설정에는 fullword가있습니다. 이설정은숫자가아닌문자로일치되는문자열이있는경우에만구분하여나타내도록약속하는것입니다. 예를들어문자열 domain 이있고, fullword로정의했다면 " 은일치하지않지만, " 이나 " 은일치합니다. 3.3 Regular expressions 정규표현식은 YARA 의가장강력한기능중하나입니다. 이것은텍스트문자열과같은방식 으로정의하지만, 펄프로그래밍언어와같이더블쿼터대신백슬러시로둘러쌉니다. 정규 표현식문법또한펄과호환됩니다. rule RegExpExample1 $re1 = /md5: [0-9a-zA-Z]32/ $re2 = /state: (on off)/ $re1 and $re2 정규표현식은텍스트문자열과같이뒤에 nocase, ascii, wide, 그리고 fullword 와같은수 식어가붙을수있습니다. 이수식어들의의미는이전에텍스트문자열에서설명했던것과 같습니다. 펄정규표현에대한좀더자세한내용은아래에방문하시기바랍니다. D 13

14 4. Conditions Conditions는모든프로그래밍언어에서찾을수있는 ( 예를들어 if 구문에서사용하는..) 부울연산식에불과합니다. 일반적인부울연산자 and, or 그리고 not 및관계연산자 >=, <=, <, >, == 그리고!= 를포함할수있습니다. 또한숫자표현은산술연산자 (+,-,*,\) 및비트연산자 (&,, <<, >>, ~) 를사용할수있습니다. 문자열식별자또한 Condition 내에서부울변수로동작할수있으며, 그값은파일내부 에관련된문자열의존재여부에따라달라집니다. 아래예제를보면, condition 에사용된 $a 는파일 ( 또는프로세스 ) 내에 text1 이라는문자열 이존재하면 True 가되고, 그렇지않으면 False 가됩니다. rule Example $a = "text1" $b = "text2" $c = "text3" $d = "text4" ($a or $b) and ($c or $d) 4.1 Counting strings 때때로우리는특정문자열의존재여부에대해알필요가있지만, 얼마나많은문자열이파일또는프로세스메모리에나타날지는모릅니다. 각일치하는문자열항목의수는변수로표현한문자열식별자이름이지만 $ 문자대신에 # 문자로사용합니다. 예제 : rule CountExample 14

15 $a = "dummy1" $b = "dummy2" #a == 6 and #b > 10 이규칙은정확히문자열 $a 를 6 번포함하고문자열 $b 를 10 번보다많이포함하는파일이 나프로세스를검사합니다. 4.2 String offsets or virtual addresses 대부분의경우에, 문자열식별자를조건에서사용하는경우는관련문자열이어떤파일이나프로세스메모리내에있어그것을알고자하는경우지만, 때때로문자열이파일이나일부가상주소에포함되어있는경우프로세스주소공간의특정오프셋을알필요가있습니다. 이러한상황에서연산자 at이필요합니다. 이연산자는다음예제와같이사용됩니다. rule AtExample $a = "dummy1" $b = "dummy2" $a at 100 and $b at 200 위예에서 $a at 100 표현은만약문자열 $a가파일안의오프셋 100에서 ( 또는실행중인프로세스의가상주소 100에서 ) 발견되는경우에만해당합니다. 문자열 $b는오프셋 200에서나타납니다. 두오프셋이 10진수임을참고합니다. 16진수숫자는 C언어에서처럼숫자앞에접두사로 0x를추가하여사용하며, 이는가상주소를작성할때매우유용하게사용할수있습니다. 추가로참고할것은 at이 and보다연산자우선순위가높습니다. at 명령어는프로세스메모리영역을포함하는가상주소또는파일의고정된오프셋에서 문자열을탐색할수있고, in 명령은오프셋또는주소의범위안에서문자열을탐색하는데 사용할수있습니다. rule InExample 15

16 $a = "dummy1" $b = "dummy2" $a in (0..100) and $b in (100..filesize) 위의예제에서는문자열 $a 를오프셋 0 과 100 사이에서찾을것이고, 문자열 $b 는오프셋 100 과파일의끝사이에서찾을수있습니다. 다시말하지만, 숫자는기본적으로 10 진수입 니다. 또한오프셋또는가상주소의 i번째에발생하는문자열 로사용하여가져올수있습니다. 등등색인기반입니다. 만약문자열이나타낸수보다더큰색인값을정의하는경우, 그결과값은 NaN (Not A Number) 값이될것입니다. 4.3 File size 문자열식별자는변수상태뿐만아니라사용할수있는다른특별한변수들이있습니다. ( 실제로밑에서볼수있는것처럼어떤문자열을정의하지않고규칙을정의할수있습니다.) 이러한특별한변수중하나로 filesize가있는데이는이름그대로파일크기로분석합니다. 크기는바이트로표시됩니다. rule FileSizeExample filesize > 200KB 앞의예는 KB 접미사의사용을보여줍니다. 이접미사는숫자상수에이어사용하면자동으 로 1024 의상수값을곱합니다. MB 접미사를사용하면 2 20 값을곱하게됩니다. 두접미사 는십진수상수에서만사용할수있습니다. filesize 를사용한규칙을파일에적용할수있지만, 만일실행중인프로세스에적용할경우 filesize 는이해할수없는맥락이되기때문에절대검사하지않습니다. 16

17 4.4 Executable entry point 규칙에서사용할수있는다른특별한변수는 entrypoint입니다. 만약파일이 Portable Executable (PE) 또는 Executable and Linkable Format (ELF), 실행가능한진입점의오프셋을가지고있는경우이변수로인해파일을스캐닝할수있습니다. 만약실행중인프로세스의 entrypoint를스캐닝할경우메인가상주소의실행가능한진입점을가져옵니다. 이변수의일반적인사용은간단한파일감염또는 packers의진입점을감지할수있는일부패턴을찾는것입니다. rule EntryPointExample1 $a = E $a at entrypoint rule EntryPointExample2 $a = 9C A1?????? A9???? 58 0F 85 $a in (entrypoint..entrypoint + 10) 규칙에 entrypoint 변수의존재는오직 PE 또는 ELF 파일만이규칙을충족할수있다는것 을의미합니다. 만약 PE 또는 ELF 가아닌파일에이규칙을사용한다면이변수는 false 로 평가됩니다. 4.5 Accessing data at a given position 파일또는실행중인프로세스를검사하는경우에따라특정파일의오프셋이나메모리의가 상주소에저장된데이터의조건을쓸수있는경우가있습니다. 이러한상황에서는파일로 17

18 부터읽은오프셋을다음기능들중하나를사용할수있습니다. int8(<offset or virtual address>) int16(<offset or virtual address>) int32(<offset or virtual address>) uint8(<offset or virtual address>) uint16(<offset or virtual address>) uint32(<offset or virtual address>) intxx 기능은 <offset or virtual address> 에쓰인 8, 16, 32 비트의부호가있는정수를읽는것이고, uintxx 기능은부호가없는정수를읽습니다. 16 과 32비트의정수는 little-endian으로간주됩니다. 기본적으로 <offset or virtual address> 파라미터는 uintxx 기능의리턴값을포함하여부호가없는정수를반환하는표현이될수있습니다. 다음예제에서는 PE 파일을구별할수있는규칙을볼수있습니다. rule IsPE // MZ signature at offset 0 and... uint16(0) == 0x5A4D and //... PE signature at offset stored in MZ header at 0x3C uint32(uint32(0x3c)) == 0x Sets of strings 파일은지정된설정에서숫자를사용하여특정문자열을포함해야한다는것을표현할필 요가있습니다. 설정하는문자열은모두존재할필요는없지만, 적어도일부는있어야한다 고가정하면, 이러한상황에서연산자 of 가필요합니다. rule OfExample1 $a = "dummy1" $b = "dummy2" 18

19 $c = "dummy3" 2 of ($a,$b,$c) 위규칙은설정한 ($a,$b,$c) 의문자열에서적어도두문자열이어떤문제도없이파일에존 재해야합니다. 물론, 이명령을사용하려면 of 키워드앞의숫자가설정한문자열의개수보 다작거나같아야합니다. 설정의요소는명시적으로앞의예와같이열거하여사용하거나 wild-cards 를사용할수있 습니다. 예를들면다음과같습니다. rule OfExample2 $foo1 = "foo1" $foo2 = "foo2" $foo3 = "foo3" /* ($foo*) is equivalent to ($foo1,$foo2,$foo3) */ 2 of ($foo*) rule OfExample3 $foo1 = "foo1" $foo2 = "foo2" $bar1 = "bar1" $bar2 = "bar2" 3 of ($foo*,$bar1,$bar2) 19

20 ($*) 대신에 them 를사용하여규칙에있는모든문자열을참조하거나더가독성을높일수 있습니다. rule OfExample4 $a = "dummy1" $b = "dummy2" $c = "dummy3" 1 of them /* equivalent to 1 of ($*) */ 위의모든예제에서는문자열의번호는숫자상수로지정되었지만, 숫자값을반환하는식 으로사용할수도있습니다. 키워드 any 와 all 가함께사용할수있습니다. all of them /* all strings in the rule */ any of them /* any string in the rule */ all of ($a*) /* all strings whose identifier starts by $a */ any of ($a,$b,$c) /* any of $a, $b or $c */ 1 of ($*) /* same that "any of them" */ 4.7 Applying the same condition to many strings of 명령어와매우유사하지만좀더강력한 for..of 명령어가있습니다. 구문은다음과같습 니다. for expression of string_set : ( boolean_expression ) 그의미는다음과같습니다. string_set 의문자열로부터적어도 expression 는 boolean_expression 을만족해야합니다. 즉 boolean_expression 는 string_set 의모든문자열을평가하여적어도반환값이 true 가되 는 expression 이어야합니다. 20

21 물론, boolean_expression의중요한세부사항을제외하고, 규칙의조건섹션에서부울식을표현하여사용할수있습니다. 여기에는평가되는문자열에대한달러기호 ($) 를사용할수있습니다. 다음식을살펴보십시오. for any of ($a,$b,$c) : ( $ at entrypoint ) 부울식의 $ 기호는특정문자열에연결하지않고, $a 다음 $b 다음 $c 의연속하는세가지 표현을평가합니다. 이미알겠지만 of 명령어는 for..of 의특별한형태입니다. 다음표현식은동일합니다. any of ($a,$b,$c) for any of ($a,$b,$c) : ( $ ) 또한 # 를사용한사건의횟수에대한참조를만들어각각의첫번째문자열의오프셋 을구합니다. for all of them : ( # > 3 ) for all of ($a*) : ) 4.8 Using anonymous strings with "of" and "for..of" of 와 for..of 연산자다음에 them을사용할경우, 각문자열에할당된식별자는일반적으로불필요한것입니다. 개별적으로모든문자열을참조하지않음으로써각각의고유한식별자를제공할필요가없습니다. 이러한상황에서는다음예에서와같이 $ 문자로만구성된익명의식별자를이용하여문자열을선언할수있습니다. rule AnonymousStrings $ = "dummy1" $ = "dummy2" 1 of them 21

22 4.9 Iterating over string occurrences 4.2 절에서와같이특정문자열이있는파일또는프로세스주소공간내에서나타나는오 에서 i 가나타내는 지수는 $a 에서발생하는문자열로말할수있습니다. 때때로이러한반복구문과오프셋의일부를이용하여주어진조건을만족시켜야합니다. 예 를들면다음과같습니다. rule Ocurrences $a = "dummy1" $b = "dummy2" for all i in (1,2,3) : (@a[i] + 10 위규칙을말하자면 $b 의첫세가지사건은 $a 의첫세가지사건에서 10 바이트차이로 있어야알려줍니다. 다음은위와같은형태로사용한것입니다. for all i in (1..3) : (@a[i] + 10 인덱스값범위를 (1,2,3) 대신 (1..3) 으로사용한것을확인할수있습니다. 물론, 범위를지 정하는데있어상수를사용하도록강요하지만, 다음예에서보는것과같이표현식을사용 할수있습니다. for all i in (1..#a) : (@a[i] < 100) 이경우 $a 의모든사건을통한반복을하고있습니다. (#a 는 $a 의일치하는발생의수를 나타낸다는것을기억하면됩니다.) 이규칙은 $a 의모든사건이파일의시작에서부터 100 바이트내에존재한다는것을말하고있습니다. 문자열의일부발생조건이만족해야하는것을표현하려는경우, 동일한논리로 for..of 연산 22

23 자를사용하여적용할수있습니다. for any i in (1..#a): < 100 ) for 2 i in (1..#a): < 100 ) 이연산자는반복구문입니다. for expression identifier in indexes : ( boolean_expression ) 4.10 Referencing other rules 규칙에대한조건을작성할때기존프로그래밍언어의함수호출과유사한방식으로이전 에정의된규칙에대한참조를만들수있습니다. 이방법을통해다른함수를참조하는 규칙을만들수있습니다. 다음예에서볼수있습니다. rule Rule1 $a = "dummy1" $a rule Rule2 $a = "dummy2" $a and Rule1 위의예에서볼수있듯이, 오직파일의문자열 dummy2 와 Rule1 을만족하는경우에만 Rule2 를만족할수있습니다. 참고로호출을하기전에호출되는규칙을정의하는것을엄 격하게관리할필요성이있습니다. 23

24 5. More about rules 이것들은지금까지적용하지않은 YARA 규칙의일부측면들이지만, 중요합니다. 이는 global rules, private rules, tags 그리고 metadata 입니다. 5.1 Global rules Global rules 는한번에모든규칙에제한을부여할수있습니다. 예를들어, 특정크기에제 한을두어초과하면해당파일을무시한다고가정합니다. 그러면규칙을통해자신의조건 에필요한규칙으로수정하거나, 다음과같이 global rules 로작성할수있습니다. global rule SizeLimit filesize < 2MB 많은 global rules 를정의하려면, 다른규칙을적용하기전에원하는만큼사용하여 global rules 를적용할수있습니다. 5.2 Private rules Private rules는매우단순한개념입니다. 이것은단순히규칙이특정파일과일치할때 YARA에이해보고되지않는규칙입니다. 전혀보고되지않는규칙은처음에는아무것도아닌것처럼보일수있으나, YARA에서제공하는다른규칙과혼합하여 (4.5 섹션을참조 ) 매우유용하게사용될수있습니다. Private rules는다른규칙에대한블록을구축하는역할을하고, 동시에관련이없는정보를 YARA를통해복잡하지않게출력하도록할수있습니다. Private 규칙은 private키워드를추가하여선언할수있습니다. private rule PrivateRuleExample... 24

25 private 와 global 둘다사용하여만든규칙은 YARA 에이해보고되지는않지만글로벌규칙 을모두만족해야만합니다. 5.3 Rule tags YARA의또다른유용한기능으로는규칙에태그를추가할수있습니다. 이러한태그는나중에 YARA의출력을필터링하고오직흥미로운룰만을보여주는데사용할수있습니다. 룰에많은태그들을추가하길원하는경우, 아래에서보여주는것과같이규칙식별자이후에선언하여사용할수있습니다. rule TagsExample1 : Foo Bar Baz... rule TagsExample2 : Bar... 태그는규칙식별자의동일한어휘규칙을준수해야하기때문에영문자와숫자및밑줄을 사용할수있으며, 숫자로시작할수없습니다. 또한대소문자를구분합니다. YARA 를사용할때사용자가설정한태그나태그된태그를사용한규칙을출력할수있 습니다. 5.4 Metadata 규칙은문자열정의및조건섹션외에도, metadata 섹션을이용하여사용자의규칙에대한 추가정보를넣을수있습니다. metadata 섹션은다음예외같이 meta 키워드와식별자 / 값 을쌍으로포함하여정의할수있습니다. rule MetadataExample meta: my_identifier_1 = "Some string data" 25

26 my_identifier_2 = 24 my_identifier_3 = true $my_text_string = "text here" $my_hex_string = E2 34 A1 C8 23 FB $my_text_string or $my_hex_string 예제에서볼수있듯이 metadata 식별자는등호뒤에항상다음과같은값이할당됩니다. 할당된값은문자열, 정수또는부울값중에하나인 true 또는 false가될수있습니다. 참고할것은 metadata 섹션에정의된식별자 / 값쌍은상태섹션에서는사용할수없고, 규칙에대한추가정보를저장하는목적으로만사용할수있습니다. 5.5 External variables External variables 는외부에서제공되는값에따라규칙을정의할수있습니다. 예를들어 다음과같은규칙으로작성할수있습니다. rule ExternalVariableExample1 ext_var == 10 이경우에는 ext_var의값은실행시간에할당된외부변수입니다. (command-line 툴의옵션 d와 yara-python의메소드인 match와 compile의 externals 파라매터에서볼수있습니다.) 외부변수의유형은할당된값에따라 integer, string 또는부울이될수있습니다. 정수변수는상태와논리변수, 부울표현의자리를차지할수를상수로대체할수있습니다. 다음은이예제입니다. rule ExternalVariableExample2 bool_ext_var or filesize < int_ext_var 26

27 형식문자열의외부변수는연산자 contains 와 matches 와함께사용할수있습니다. 문자열 은지정한하위문자열을포함하는경우 contains 연산자는 true 를반환합니다. 만약문자열 이주어진정규표현식과일치하는경우 matches 연산자는 true 를반환합니다. rule ExternalVariableExample3 string_ext_var contains "text" rule ExternalVariableExample4 string_ext_var matches /[a-z]+/ 규칙에사용되는모든외부변수는 command-line 도구의 d 옵션을사용하여실행시간에 정의되거나, 또는 yara-python 에서적절한방법으로외부파라미터를제공하여사용합니다. 6. Includes 좀더유연한규칙을만들수있도록하기위해, YARA에서는 include 지시어를제공합니다. 이지시자는 C 프로그램에서 #include 사전지시자와비슷하게컴파일하는동안현재파일에서지정한소스파일의내용을삽입하는방식으로작동합니다. 다음예제는현재파일이 other.yar 를포함합니다. include "other.yar" include 지시문에서파일을검색하는기본경로는현재파일이상주하는디렉터리입니다. 이러한이유에서, 앞의예제의 other.yar 파일은현재파일과같은디렉터리에위치해야합 니다. 하지만상대경로를지정하여이러한문제점을해결할수있습니다. include "./includes/other.yar" include "../includes/other.yar" 27

28 또한절대경로를사용할수있습니다. include "/home/plusvic/yara/includes/other.yar" Windows 에서는드라이브문자를작성하는것을잊으면안되며, 슬래시및백슬래시모두 사용할수있습니다. include "c:/yara/includes/other.yar" include "c:\\yara\\includes\\other.yar" 7. Using YARA from command-line YARA를호출하기위해서는다음두가지가필요합니다 : 적용할규칙집합, 파일에대한정보와경로, 폴더또는스캔할프로세스의 PID. 규칙은규칙을포함하는하나이상의일반텍스트파일을통해 YARA에게제공하거나또는표준입력을통해어떤규칙파일을지정하지않고제공할수있습니다. usage: yara [OPTION]... [RULEFILE]... FILE PID options: -t <tag> print rules tagged as <tag> and ignore the rest. -i <identifier> print rules named <identifier> and ignore the rest. -n print only not satisfied rules (negate). -g print tags. -m print metadata. -s print matching strings. -l <number> abort scanning after a <number> of rules matched. -d <identifier>=<value> define external variable. -r recursively search directories. -f fast matching mode. -v show version information. 규칙은 YARA의마지막인자로지정된객체에적용되는데, 이것은현재의디렉터리의경로에있다면, 그안에포함된모든파일을검사할수있습니다. 기본적으로 YARA는재귀적으로디렉터리를검색하도록시도하지않지만 r 옵션을사용하여이를해결할수있습니다. -t 옵션은 YARA의출력필터역할을하지만하나이상의태그를지정할수없습니다. 이옵션을사용하는경우, 지정된태그만규칙에표시됩니다. -i 옵션은비슷한동작을하는데, 주어진식별자를갖는하나를제외한모든규칙을필터링합니다. 또한 n을이용하여만족스럽지못한규칙을출력하는데변형하여사용할수있습니다. -l 옵션은주어진번호와일치하면규칙을중지할수있습니다. 28

29 -d 옵션은외부변수를정의하는데사용합니다. 다음과같습니다. -d flag=true -d beast=666 -d name= James Bond 8. Using YARA from Python YARA 는파이썬스크립트에서호출할수있습니다. yara-python 확장은파이썬사용자에게 YARA 기능을사용할수있도록하기위해제공됩니다. 한번 yara-python 을설치하고나면 아래와같이사용할수있습니다. import yara import yara 를한다음데이터를적용하기전에 YARA 규칙을컴파일하고, 컴파일은규칙 의파일경로를설정하여할수있습니다. rules = yara.compile(filepath='/foo/bar/myrules') 기본 argument 는 filepath 이므로, 따로이름을지정할필요가없습니다. rules = yara.compile('/foo/bar/myrules') 또한규칙의파일개체화를통해컴파일할수있습니다. fh = open('/foo/bar/myrules') rules = yara.compile(file=fh) fh.close() 또는파이썬문자열에서직접컴파일할수있습니다. rules = yara.compile(source='rule dummy true ') 동일한시간에파일이나문자열의그룹을컴파일하려한다면 filepaths 또는 sources 인수 이름을사용할수있습니다. rules = yara.compile(filepaths= 'namespace1':'/my/path/rules1', 'namespace2':'/my/path/rules2' 29

30 ) rules = yara.compile(sources= 'namespace1':'rule dummy true ', 'namespace2':'rule dummy false ' ) 참고로 filepaths 와 sources는문자열유형의키가존재하는 dictionary형태가있는것을확인할수있습니다. dictionary키는네임스페이스의식별자로사용됩니다. 이는두번째예에서 dummy 라는이름으로발생하는것과같이, 다른소스에서같은이름으로사용되는규칙을구별할수있도록해줍니다. 또한컴파일방법은 includes 라는이름의선택적부울파라미터를갖고있습니다. 그변수는 소스파일에접근하는지시자 include directive 를제어할수있는지없는지를선택해주는 파라미터입니다. 해당예는다음과같습니다. rules = yara.compile('/foo/bar/myrules', includes=false) 만약소스파일에 include 지시어가포함되어있는경우이전라인은예외를일으킬것입니 다. 만약개인적인규칙속의외부변수를사용한다면해당외부변수를컴파일하거나혹은다른파일에그규칙을적용하는동안, 해당외부규칙을정의해야할것입니다. 그리고컴파일하는순간에변수를정의하기위해서는컴파일메서드에외부파라미터를보내야합니다. 이것은다음예와같습니다. rules = yara.compile( '/foo/rules', externals= 'var1 : 'some string, 'var2 : 4, 'var3 : True ) 외부파라미터는키와같은변수이름의사전이어야하고, 정수또는부울유형의두문자 열의연관값이어야합니다. 컴파일의모든경우는결과적으로일치하는방식을가지고있는클래스 Rules 의인스턴스를 반환합니다. 30

31 matches = rules.match('/foo/bar/myfile') 그러나또한파이썬문자열로규칙을적용할수있습니다. f = fopen('/foo/bar/myfile', 'rb') matches = rules.match(data=f.read()) 아니면프로세스를실행합니다. matches = rules.match(pid=1234) 컴파일의경우와마찬가지로, 탐색방법은외부파라미터안에외부변수에대한정의를받 을수있습니다. matches = rules.match( '/foo/bar/myfile', externals= 'var1': 'some other string', 'var4': 100, ) 컴파일하는시간동안정의된외부변수는 match 함수에서재차정의될필요는없습니다. 그 러나필요에따라어떤변수를재정의하거나, 컴파일하는동안제공되지않은정의를추가 제공할수있습니다. 일치하는방법을호출할때콜백함수를지정할수있습니다. 제공되는기능은매칭여부와상관없이모든규칙에대한호출이이루어집니다. 콜백기능은하나의사전타입파라미터를결정하며, 차기규칙이나혹은데이터에규칙을적용하는것을중지하는 CALLBACK_ABORT를수행하여 CALLBACK_CONTINUE을리턴합니다. 여기예제를보십시오. import yara def mycallback(data): print data yara.callback_continue matches = rules.match('/foo/bar/myfile', callback=mycallback) 31

32 전달된 dictionary 형태는다음과같이될것입니다. 'tags': ['foo', 'bar'], 'matches': True, 'namespace': 'default', 'rule': 'my_rule', 'meta':, 'strings': [(81, '$a', 'abc'), (141, '$b', 'def')] 규칙데이터여부와일치하는경우일치하는필드를나타냅니다. 문자열필드형식의벡터로, 검색문자열의목록입니다. (<offset>, <string identifier>, <string data>) 탐색방법은 Match 클래스의인스턴스의목록을반환합니다. 이클래스의인스턴스는일치 하는규칙의이름을포함하여텍스트문자열로간주될수있습니다. 다음예는이목록을 프린트합니다. for m in matches: print "%s" % m 일부환경에서는명시적으로 Match 문자열의인스턴스를변환해야할수있습니다. 다른 문자열과비교했을때의예를들면다음과같습니다. if str(matches[0]) == 'SomeRuleName':... Match 클래스는콜백함수에전달된 dictionary 와같은속성이있습니다. rule namespace meta tags strings 32

33 9. PerformanceGuidelines YARA 의규칙을만들때최상의성능을위해다음가이드라인을유지하길바랍니다. 첫번째두바이트의문자열에는 wild-cards 또는 jumps의사용을피해야합니다. YARA는가장효과적으로수행하기위해서는빠른속도로파일을검색해야하는데, 이러한목적을위해서해시테이블에선언된문자열을저장합니다. 이해시테이블에저장되는해시키는첫번째두바이트의문자열입니다. 엄격하게정의된첫두바이트가없는문자열은해시테이블에저장될수없어검색과정에서속도가느려집니다. $a = EB?? F /* bad, wild-card on second byte */ $a = EB 00?? F /* ok */ $a = /.*ab/ /* bad, regular expression starting with wild-card */ $a = /ab.*/ /* ok, regular expression have the first two chars well defined */ jumps 를사용할때가장짧은길이의범위를유지하여사용합니다. YARA 가 의길이 로 jumps 를한다는것은좋지않고, 더나은 jumps 를위해범위를짧게유지하는것이좋 습니다. $a = FF [0-200] FF 25 /* bad, range from 0 to 200 too wide */ $a = FF [0-8] FF 25 /* ok */ $a = FF [ ] FF 25 /* ok */ 하지만너무짧은문자열을정의하지는마십시오. 5~6 바이트들보다짧은문자열은너무 많은파일들을탐색할것입니다. 또한필요한경우에만정규표현식을사용합니다. 정규표현식을이용한평가는본질적으로 느리지만, 사용해야한다면 hex 문자열과함께 jumps 와 wild-cards 를사용하지않는것으로 이문제를완화시킬수있습니다. 10. YARA Editor! 33

34 YARA 는악성코드샘플을식별하고분류하여악성코드연구자들을돕는목적으로만들어진 도구입니다. 그리고 Yara-editor 는이러한 YARA 툴에사용되는규칙을쉽게빌드하도록도와 줍니다. 즉, 규칙을만들고바이너리에적용하기위한편집기입니다 YARA-Editor Install on Linux ~# apt-get install python-sip ~# apt-get install python-gt4 ~# wget ~# tar xfz yara-editor tar.gz ~# cd yara-editor ~yara-editor-0.1.5# python setup.py install python-sip : C와 C++ 의라이브러리와인터페이스를파이썬에서작성하기위해사용하는모듈입니다. 아래의 python-qt4를사용하기위해설치합니다. python-qt4 : qt4는데스크탑, 임베디드및모바일플랫폼에대한응용프로그램및사용자인터페이스의생성을간소화하여사용할수있도록만들어진프레임워크입니다. 이는 C++, CSS, Javascript와같은 API를제공합니다. python-qt4는이러한 qt4를 python에서사용할수있도록합니다. 실행하면다음과같은에러가발생합니다. ~yara-editor-0.1.5# yara-editor Traceback (most recent call last): File "/usr/local/bin/yara-editor", line 112, in <module> main(sys.argv) File "/usr/local/bin/yara-editor", line 109, in main mapp = app(args) File "/usr/local/bin/yara-editor", line 101, in init config=config) File "/usr/local/lib/python2.6/dist-packages/yaraeditor/core/controlleur.py", line 78, in init self.path_yara=config.get(conf_preference, CONF_PATH_YARA) File "/usr/lib/python2.6/configparser.py", line 531, in get raise NoSectionError(section) ConfigParser.NoSectionError: No section: 'preference ~yara-editor-0.1.5# 34

35 하지만다시실행하게되면정상적으로동작하게되지만, 프로그램을종료하면다음과같은메시지를보여줍니다. ~yara-editor-0.1.5# yara-editor QWidget::setWindowModified: The window title does not contain a '[*]' placeholder ~yara-editor-0.1.5# 10.2 UI Yara Browser! 왼쪽측면은 YARA Browser 입니다. 이두부분은두가지요소들로구성되어있습니다. Ÿ Ÿ 경로 경로로지정된디렉토리의내용 파일의경우사용자가더블클릭을할때, 파일이중앙부분에서열립니다 UI Malware Browser! 35

36 오른쪽측면은 Malware Browser 입니다. 이두부분은두가지요소들로구성되어있습니 다. Ÿ Ÿ 경로 경로로지정된디렉토리의내용 여기에폴더와파일을선택할수있습니다. 선택한파일은강조되어표시됩니다. 사용자가 규칙을테스트하려할경우, 각각의악성코드를선택하거나각각의폴더를선택하면됩니 다.( 폴더는재귀적으로검사합니다.) 10.4 Editor 중앙부분은규칙을작성할수있습니다. 각각의키워드는강조되어표시됩니다 Config File 구성파일이없는경우, 응용프로그램이파일을만듭니다. ~/.yara/yara-editor/conf 36

37 이파일에는많은요소가들어있지않습니다.( 임시 ) [preference] lang = /home/user/.yara/yara-editor/i18n/i18n_en.qm path_yara_rules = /home/user/yara path_malwares = /home/user/ lang : 언어는다음버전에대한것입니다. path_yara_rules : 응용프로그램탐색을위한 YARA 규칙의저장소의경로 path_malware : 악성코드탐색을위한편집기의경로 10.6 Key Bindings 이에디터에서모든키바인딩은구성하지않습니다 File Menu Ctrl+N Ctrl+O Ctrl+S Ctrl+Shift+S Ctrl+P Ctrl+Shift+P Ctrl+D Ctrl+Q 새문서 YARA 룰열기저장다른이름으로저장출력미리보기 PDF로내보내기종료 10.8 Edit Menu Ctrl+Z Ctrl+Shift+Z Ctrl+X Ctrl+C Ctrl+V 실행취소다시실행잘라내기복사하기붙여넣기 10.9 Yara Menu F5 선택한악성코드에룰적용하기 37

38 10.10 Editor Ctrl+E 가능한모든완료들을표시 38

슬라이드 1

슬라이드 1 Detecting Malicious code using Yara in Python Saint Security Dev Team 박건 0 소개 Introduction 박건 (Chris Park) 세인트시큐리티시스템개발팀 namegpark@gmail.com C#, C++, Python malwares.com 서비스개발 PULLer 서비스개발 (EXF) 1 목차 CONTENTS

More information

Windows 8에서 BioStar 1 설치하기

Windows 8에서 BioStar 1 설치하기 / 콘텐츠 테이블... PC에 BioStar 1 설치 방법... Microsoft SQL Server 2012 Express 설치하기... Running SQL 2012 Express Studio... DBSetup.exe 설정하기... BioStar 서버와 클라이언트 시작하기... 1 1 2 2 6 7 1/11 BioStar 1, Windows 8 BioStar

More information

Tcl의 문법

Tcl의 문법 월, 01/28/2008-20:50 admin 은 상당히 단순하고, 커맨드의 인자를 스페이스(공백)로 단락을 짓고 나열하는 정도입니다. command arg1 arg2 arg3... 한행에 여러개의 커맨드를 나열할때는, 세미콜론( ; )으로 구분을 짓습니다. command arg1 arg2 arg3... ; command arg1 arg2 arg3... 한행이

More information

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx #include int main(void) { int num; printf( Please enter an integer "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); return 0; } 1 학습목표 을 작성하면서 C 프로그램의

More information

Poison null byte Excuse the ads! We need some help to keep our site up. List 1 Conditions 2 Exploit plan 2.1 chunksize(p)!= prev_size (next_chunk(p) 3

Poison null byte Excuse the ads! We need some help to keep our site up. List 1 Conditions 2 Exploit plan 2.1 chunksize(p)!= prev_size (next_chunk(p) 3 Poison null byte Excuse the ads! We need some help to keep our site up. List 1 Conditions 2 Exploit plan 2.1 chunksize(p)!= prev_size (next_chunk(p) 3 Example 3.1 Files 3.2 Source code 3.3 Exploit flow

More information

슬라이드 1

슬라이드 1 Pairwise Tool & Pairwise Test NuSRS 200511305 김성규 200511306 김성훈 200614164 김효석 200611124 유성배 200518036 곡진화 2 PICT Pairwise Tool - PICT Microsoft 의 Command-line 기반의 Free Software www.pairwise.org 에서다운로드후설치

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 실습 1 배효철 th1g@nate.com 1 목차 조건문 반복문 System.out 구구단 모양만들기 Up & Down 2 조건문 조건문의종류 If, switch If 문 조건식결과따라중괄호 { 블록을실행할지여부결정할때사용 조건식 true 또는 false값을산출할수있는연산식 boolean 변수 조건식이 true이면블록실행하고 false 이면블록실행하지않음 3

More information

<322EBCF8C8AF28BFACBDC0B9AEC1A6292E687770>

<322EBCF8C8AF28BFACBDC0B9AEC1A6292E687770> 연습문제해답 5 4 3 2 1 0 함수의반환값 =15 5 4 3 2 1 0 함수의반환값 =95 10 7 4 1-2 함수의반환값 =3 1 2 3 4 5 연습문제해답 1. C 언어에서의배열에대하여다음중맞는것은? (1) 3차원이상의배열은불가능하다. (2) 배열의이름은포인터와같은역할을한다. (3) 배열의인덱스는 1에서부터시작한다. (4) 선언한다음, 실행도중에배열의크기를변경하는것이가능하다.

More information

금오공대 컴퓨터공학전공 강의자료

금오공대 컴퓨터공학전공 강의자료 C 프로그래밍프로젝트 Chap 14. 포인터와함수에대한이해 2013.10.09. 오병우 컴퓨터공학과 14-1 함수의인자로배열전달 기본적인인자의전달방식 값의복사에의한전달 val 10 a 10 11 Department of Computer Engineering 2 14-1 함수의인자로배열전달 배열의함수인자전달방식 배열이름 ( 배열주소, 포인터 ) 에의한전달 #include

More information

Secure Programming Lecture1 : Introduction

Secure Programming Lecture1 : Introduction Malware and Vulnerability Analysis Lecture1 Malware Analysis #1 Agenda 악성코드정적분석 악성코드분석 악성코드정적분석 정적분석 임의의코드또는응용프로그램을실행하지않고분석 ASCII 문자열 (ex. URL) API 리스트 Packing VT 기타등등 정적분석 : 파일식별 악성으로의심되는파일의형태식별 file

More information

17장 클래스와 메소드

17장 클래스와 메소드 17 장클래스와메소드 박창이 서울시립대학교통계학과 박창이 ( 서울시립대학교통계학과 ) 17 장클래스와메소드 1 / 18 학습내용 객체지향특징들객체출력 init 메소드 str 메소드연산자재정의타입기반의버전다형성 (polymorphism) 박창이 ( 서울시립대학교통계학과 ) 17 장클래스와메소드 2 / 18 객체지향특징들 객체지향프로그래밍의특징 프로그램은객체와함수정의로구성되며대부분의계산은객체에대한연산으로표현됨객체의정의는

More information

C# Programming Guide - Types

C# Programming Guide - Types C# Programming Guide - Types 최도경 lifeisforu@wemade.com 이문서는 MSDN 의 Types 를요약하고보충한것입니다. http://msdn.microsoft.com/enus/library/ms173104(v=vs.100).aspx Types, Variables, and Values C# 은 type 에민감한언어이다. 모든

More information

Microsoft PowerPoint 웹 연동 기술.pptx

Microsoft PowerPoint 웹 연동 기술.pptx 웹프로그래밍및실습 ( g & Practice) 문양세강원대학교 IT 대학컴퓨터과학전공 URL 분석 (1/2) URL (Uniform Resource Locator) 프로토콜, 호스트, 포트, 경로, 비밀번호, User 등의정보를포함 예. http://kim:3759@www.hostname.com:80/doc/index.html URL 을속성별로분리하고자할경우

More information

OCW_C언어 기초

OCW_C언어 기초 초보프로그래머를위한 C 언어기초 4 장 : 연산자 2012 년 이은주 학습목표 수식의개념과연산자및피연산자에대한학습 C 의알아보기 연산자의우선순위와결합방향에대하여알아보기 2 목차 연산자의기본개념 수식 연산자와피연산자 산술연산자 / 증감연산자 관계연산자 / 논리연산자 비트연산자 / 대입연산자연산자의우선순위와결합방향 조건연산자 / 형변환연산자 연산자의우선순위 연산자의결합방향

More information

<4D F736F F F696E74202D20B8AEB4AABDBA20BFC0B7F920C3B3B8AEC7CFB1E22E BC8A3C8AF20B8F0B5E55D>

<4D F736F F F696E74202D20B8AEB4AABDBA20BFC0B7F920C3B3B8AEC7CFB1E22E BC8A3C8AF20B8F0B5E55D> 리눅스 오류처리하기 2007. 11. 28 안효창 라이브러리함수의오류번호얻기 errno 변수기능오류번호를저장한다. 기본형 extern int errno; 헤더파일 라이브러리함수호출에실패했을때함수예 정수값을반환하는함수 -1 반환 open 함수 포인터를반환하는함수 NULL 반환 fopen 함수 2 유닉스 / 리눅스 라이브러리함수의오류번호얻기 19-1

More information

Microsoft PowerPoint - chap06-2pointer.ppt

Microsoft PowerPoint - chap06-2pointer.ppt 2010-1 학기프로그래밍입문 (1) chapter 06-2 참고자료 포인터 박종혁 Tel: 970-6702 Email: jhpark1@snut.ac.kr 한빛미디어 출처 : 뇌를자극하는 C프로그래밍, 한빛미디어 -1- 포인터의정의와사용 변수를선언하는것은메모리에기억공간을할당하는것이며할당된이후에는변수명으로그기억공간을사용한다. 할당된기억공간을사용하는방법에는변수명외에메모리의실제주소값을사용하는것이다.

More information

10 강. 쉘스크립트 l 쉘스크립트 Ÿ 쉘은명령어들을연속적으로실행하는인터프리터환경을제공 Ÿ 쉘스크립트는제어문과변수선언등이가능하며프로그래밍언어와유사 Ÿ 프로그래밍언어와스크립트언어 -프로그래밍언어를사용하는경우소스코드를컴파일하여실행가능한파일로만들어야함 -일반적으로실행파일은다

10 강. 쉘스크립트 l 쉘스크립트 Ÿ 쉘은명령어들을연속적으로실행하는인터프리터환경을제공 Ÿ 쉘스크립트는제어문과변수선언등이가능하며프로그래밍언어와유사 Ÿ 프로그래밍언어와스크립트언어 -프로그래밍언어를사용하는경우소스코드를컴파일하여실행가능한파일로만들어야함 -일반적으로실행파일은다 10 강. 쉘스크립트 쉘스크립트 쉘은명령어들을연속적으로실행하는인터프리터환경을제공 쉘스크립트는제어문과변수선언등이가능하며프로그래밍언어와유사 프로그래밍언어와스크립트언어 -프로그래밍언어를사용하는경우소스코드를컴파일하여실행가능한파일로만들어야함 -일반적으로실행파일은다른운영체제로이식되지않음 -스크립트언어를사용하면컴파일과정이없고인터프리터가소스파일에서명령문을판독하여각각의명령을수행

More information

ISP and CodeVisionAVR C Compiler.hwp

ISP and CodeVisionAVR C Compiler.hwp USBISP V3.0 & P-AVRISP V1.0 with CodeVisionAVR C Compiler http://www.avrmall.com/ November 12, 2007 Copyright (c) 2003-2008 All Rights Reserved. USBISP V3.0 & P-AVRISP V1.0 with CodeVisionAVR C Compiler

More information

아이콘의 정의 본 사용자 설명서에서는 다음 아이콘을 사용합니다. 참고 참고는 발생할 수 있는 상황에 대처하는 방법을 알려 주거나 다른 기능과 함께 작동하는 방법에 대한 요령을 제공합니다. 상표 Brother 로고는 Brother Industries, Ltd.의 등록 상

아이콘의 정의 본 사용자 설명서에서는 다음 아이콘을 사용합니다. 참고 참고는 발생할 수 있는 상황에 대처하는 방법을 알려 주거나 다른 기능과 함께 작동하는 방법에 대한 요령을 제공합니다. 상표 Brother 로고는 Brother Industries, Ltd.의 등록 상 Android 용 Brother Image Viewer 설명서 버전 0 KOR 아이콘의 정의 본 사용자 설명서에서는 다음 아이콘을 사용합니다. 참고 참고는 발생할 수 있는 상황에 대처하는 방법을 알려 주거나 다른 기능과 함께 작동하는 방법에 대한 요령을 제공합니다. 상표 Brother 로고는 Brother Industries, Ltd.의 등록 상표입니다. Android는

More information

MySQL-.. 1

MySQL-.. 1 MySQL- 기초 1 Jinseog Kim Dongguk University jinseog.kim@gmail.com 2017-08-25 Jinseog Kim Dongguk University jinseog.kim@gmail.com MySQL-기초 1 2017-08-25 1 / 18 SQL의 기초 SQL은 아래의 용도로 구성됨 데이터정의 언어(Data definition

More information

IRISCard Anywhere 5

IRISCard Anywhere 5 이 빠른 사용자 가이드는 IRISCard Anywhere 5 및 IRISCard Corporate 5 스캐너의 설치와 시작을 도와 드립니다. 이 스캐너와 함께 제공되는 소프트웨어는: - Cardiris Pro 5 및 Cardiris Corporate 5 for CRM (Windows 용) - Cardiris Pro 4 (Mac OS 용) Cardiris 의

More information

Microsoft PowerPoint 자바-기본문법(Ch2).pptx

Microsoft PowerPoint 자바-기본문법(Ch2).pptx 자바기본문법 1. 기본사항 2. 자료형 3. 변수와상수 4. 연산자 1 주석 (Comments) 이해를돕기위한설명문 종류 // /* */ /** */ 활용예 javadoc HelloApplication.java 2 주석 (Comments) /* File name: HelloApplication.java Created by: Jung Created on: March

More information

Microsoft PowerPoint - chap03-변수와데이터형.pptx

Microsoft PowerPoint - chap03-변수와데이터형.pptx #include int main(void) { int num; printf( Please enter an integer: "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num %d\n", num); return 0; } 1 학습목표 의 개념에 대해 알아본다.

More information

PowerPoint Presentation

PowerPoint Presentation 객체지향프로그래밍 클래스, 객체, 메소드 ( 실습 ) 손시운 ssw5176@kangwon.ac.kr 예제 1. 필드만있는클래스 텔레비젼 2 예제 1. 필드만있는클래스 3 예제 2. 여러개의객체생성하기 4 5 예제 3. 메소드가추가된클래스 public class Television { int channel; // 채널번호 int volume; // 볼륨 boolean

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 Lecture 02 프로그램구조및문법 Kwang-Man Ko kkmam@sangji.ac.kr, compiler.sangji.ac.kr Department of Computer Engineering Sang Ji University 2018 자바프로그램기본구조 Hello 프로그램구조 sec01/hello.java 2/40 자바프로그램기본구조 Hello 프로그램구조

More information

슬라이드 1

슬라이드 1 -Part3- 제 4 장동적메모리할당과가변인 자 학습목차 4.1 동적메모리할당 4.1 동적메모리할당 4.1 동적메모리할당 배울내용 1 프로세스의메모리공간 2 동적메모리할당의필요성 4.1 동적메모리할당 (1/6) 프로세스의메모리구조 코드영역 : 프로그램실행코드, 함수들이저장되는영역 스택영역 : 매개변수, 지역변수, 중괄호 ( 블록 ) 내부에정의된변수들이저장되는영역

More information

#WI YARA 를이용한악성코드시그니처확인방법

#WI YARA 를이용한악성코드시그니처확인방법 #WI-13-024 2013-07-12 1 내용요약 - YARA 는악성파일또는프로세스를시그니처기반으로판별및분류할수 있게하는툴로현재 VirusTotal, FireEye 등에서사용 - Linux, Mac OS X, Windows 시스템에서모두사용가능 - 소스코드컴파일, Python 모듈, 실행파일실행방식등다양한방법으로 YARA 설치및실행가능 - 소스코드컴파일방식의경우,

More information

@ p a g e c o n te n tt y p e = " te x t/ h tm l;c h a rs e t= u tf- 8 " fo r (in t i= 0 ; i< = 1 0 ; i+ + ) { o u t.p rin tln (" H e llo W o rld " + i + " < b r/> " ); = re s u lt + re s u lts u m ()

More information

Microsoft PowerPoint - 3ÀÏ°_º¯¼ö¿Í »ó¼ö.ppt

Microsoft PowerPoint - 3ÀÏ°_º¯¼ö¿Í »ó¼ö.ppt 변수와상수 1 변수란무엇인가? 변수 : 정보 (data) 를저장하는컴퓨터내의특정위치 ( 임시저장공간 ) 메모리, register 메모리주소 101 번지 102 번지 변수의크기에따라 주로 byte 단위 메모리 2 기본적인변수형및변수의크기 변수의크기 해당컴퓨터에서는항상일정 컴퓨터마다다를수있음 short

More information

<4D F736F F F696E74202D203137C0E55FBFACBDC0B9AEC1A6BCD6B7E7BCC72E707074>

<4D F736F F F696E74202D203137C0E55FBFACBDC0B9AEC1A6BCD6B7E7BCC72E707074> SIMATIC S7 Siemens AG 2004. All rights reserved. Date: 22.03.2006 File: PRO1_17E.1 차례... 2 심벌리스트... 3 Ch3 Ex2: 프로젝트생성...... 4 Ch3 Ex3: S7 프로그램삽입... 5 Ch3 Ex4: 표준라이브러리에서블록복사... 6 Ch4 Ex1: 실제구성을 PG 로업로드하고이름변경......

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 BOOTLOADER Jo, Heeseung 부트로더컴파일 부트로더소스복사및압축해제 부트로더소스는웹페이지에서다운로드 /working 디렉터리로이동한후, wget으로다운로드 이후작업은모두 /working 디렉터리에서진행 root@ubuntu:# cp /media/sm5-linux-111031/source/platform/uboot-s4210.tar.bz2 /working

More information

Microsoft PowerPoint - Perpect C 02.ppt [호환 모드]

Microsoft PowerPoint - Perpect C 02.ppt [호환 모드] 02 C 프로그래밍기초 충남대학교이형주 1 C 프로그램구조 콘솔응용프로그램 2 프로그램실행순서 C 프로그램은여러함수의조합으로구성 함수란정해진규칙에의하여일련의작업을수행하는프로그램의단위 실행순서 main 함수는프로그램이실행되면가장먼저시작되는부분 모든함수내부에서는위에서아래로, 좌에서우로, 문장이위치한순서대로실행 3 전처리기 전처리기 (preprocessor) 미리처리하는프로그램으로,

More information

adfasdfasfdasfasfadf

adfasdfasfdasfasfadf C 4.5 Source code Pt.3 ISL / 강한솔 2019-04-10 Index Tree structure Build.h Tree.h St-thresh.h 2 Tree structure *Concpets : Node, Branch, Leaf, Subtree, Attribute, Attribute Value, Class Play, Don't Play.

More information

Microsoft Word - ntasFrameBuilderInstallGuide2.5.doc

Microsoft Word - ntasFrameBuilderInstallGuide2.5.doc NTAS and FRAME BUILDER Install Guide NTAS and FRAME BUILDER Version 2.5 Copyright 2003 Ari System, Inc. All Rights reserved. NTAS and FRAME BUILDER are trademarks or registered trademarks of Ari System,

More information

Microsoft PowerPoint - e pptx

Microsoft PowerPoint - e pptx Import/Export Data Using VBA Objectives Referencing Excel Cells in VBA Importing Data from Excel to VBA Using VBA to Modify Contents of Cells 새서브프로시저작성하기 프로시저실행하고결과확인하기 VBA 코드이해하기 Referencing Excel Cells

More information

Microsoft PowerPoint - additional01.ppt [호환 모드]

Microsoft PowerPoint - additional01.ppt [호환 모드] 1.C 기반의 C++ part 1 함수 오버로딩 (overloading) 디폴트매개변수 (default parameter) 인-라인함수 (in-line function) 이름공간 (namespace) Jong Hyuk Park 함수 Jong Hyuk Park 함수오버로딩 (overloading) 함수오버로딩 (function overloading) C++ 언어에서는같은이름을가진여러개의함수를정의가능

More information

Microsoft PowerPoint - C프로그래밍-chap03.ppt [호환 모드]

Microsoft PowerPoint - C프로그래밍-chap03.ppt [호환 모드] Chapter 03 변수와자료형 2009 한국항공대학교항공우주기계공학부 (http://mercury.kau.ac.kr/sjkwon) 1 변수와자료유형 변수 프로그램에서자료값을임시로기억할수있는저장공간을변수 (variables) 변수 (Variables) 는컴퓨터의메모리인 RAM(Random Access Memory) 에저장 물건을담는박스라고생각한다면박스의크기에따라담을물건이제한됨

More information

DIY 챗봇 - LangCon

DIY 챗봇 - LangCon without Chatbot Builder & Deep Learning bage79@gmail.com Chatbot Builder (=Dialogue Manager),. We need different chatbot builders for various chatbot services. Chatbot builders can t call some external

More information

임베디드시스템설계강의자료 6 system call 2/2 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과

임베디드시스템설계강의자료 6 system call 2/2 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과 임베디드시스템설계강의자료 6 system call 2/2 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과 System call table and linkage v Ref. http://www.ibm.com/developerworks/linux/library/l-system-calls/ - 2 - Young-Jin Kim SYSCALL_DEFINE 함수

More information

Microsoft PowerPoint - ch07 - 포인터 pm0415

Microsoft PowerPoint - ch07 - 포인터 pm0415 2015-1 프로그래밍언어 7. 포인터 (Pointer), 동적메모리할당 2015 년 4 월 4 일 교수김영탁 영남대학교공과대학정보통신공학과 (Tel : +82-53-810-2497; Fax : +82-53-810-4742 http://antl.yu.ac.kr/; E-mail : ytkim@yu.ac.kr) Outline 포인터 (pointer) 란? 간접참조연산자

More information

View Licenses and Services (customer)

View Licenses and Services (customer) 빠른 빠른 시작: 시작: 라이선스, 라이선스, 서비스 서비스 및 주문 주문 이력 이력 보기 보기 고객 가이드 Microsoft 비즈니스 센터의 라이선스, 서비스 및 혜택 섹션을 통해 라이선스, 온라인 서비스, 구매 기록 (주문 기록)을 볼 수 있습니다. 시작하려면, 비즈니스 센터에 로그인하여 상단 메뉴에서 재고를 선택한 후 내 재고 관리를 선택하십시오. 목차

More information

학습목차 2.1 다차원배열이란 차원배열의주소와값의참조

학습목차 2.1 다차원배열이란 차원배열의주소와값의참조 - Part2- 제 2 장다차원배열이란무엇인가 학습목차 2.1 다차원배열이란 2. 2 2 차원배열의주소와값의참조 2.1 다차원배열이란 2.1 다차원배열이란 (1/14) 다차원배열 : 2 차원이상의배열을의미 1 차원배열과다차원배열의비교 1 차원배열 int array [12] 행 2 차원배열 int array [4][3] 행 열 3 차원배열 int array [2][2][3]

More information

Microsoft PowerPoint - chap01-C언어개요.pptx

Microsoft PowerPoint - chap01-C언어개요.pptx #include int main(void) { int num; printf( Please enter an integer: "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); return 0; } 1 학습목표 프로그래밍의 기본 개념을

More information

PowerPoint Presentation

PowerPoint Presentation 자바프로그래밍 1 배열 손시운 ssw5176@kangwon.ac.kr 배열이필요한이유 예를들어서학생이 10 명이있고성적의평균을계산한다고가정하자. 학생 이 10 명이므로 10 개의변수가필요하다. int s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; 하지만만약학생이 100 명이라면어떻게해야하는가? int s0, s1, s2, s3, s4,

More information

비트와바이트 비트와바이트 비트 (Bit) : 2진수값하나 (0 또는 1) 를저장할수있는최소메모리공간 1비트 2비트 3비트... n비트 2^1 = 2개 2^2 = 4개 2^3 = 8개... 2^n 개 1 바이트는 8 비트 2 2

비트와바이트 비트와바이트 비트 (Bit) : 2진수값하나 (0 또는 1) 를저장할수있는최소메모리공간 1비트 2비트 3비트... n비트 2^1 = 2개 2^2 = 4개 2^3 = 8개... 2^n 개 1 바이트는 8 비트 2 2 비트연산자 1 1 비트와바이트 비트와바이트 비트 (Bit) : 2진수값하나 (0 또는 1) 를저장할수있는최소메모리공간 1비트 2비트 3비트... n비트 2^1 = 2개 2^2 = 4개 2^3 = 8개... 2^n 개 1 바이트는 8 비트 2 2 진수법! 2, 10, 16, 8! 2 : 0~1 ( )! 10 : 0~9 ( )! 16 : 0~9, 9 a, b,

More information

untitled

untitled 시스템소프트웨어 : 운영체제, 컴파일러, 어셈블러, 링커, 로더, 프로그래밍도구등 소프트웨어 응용소프트웨어 : 워드프로세서, 스프레드쉬트, 그래픽프로그램, 미디어재생기등 1 n ( x + x +... + ) 1 2 x n 00001111 10111111 01000101 11111000 00001111 10111111 01001101 11111000

More information

4. #include <stdio.h> #include <stdlib.h> int main() { functiona(); } void functiona() { printf("hihi\n"); } warning: conflicting types for functiona

4. #include <stdio.h> #include <stdlib.h> int main() { functiona(); } void functiona() { printf(hihi\n); } warning: conflicting types for functiona 이름 : 학번 : A. True or False: 각각항목마다 True 인지 False 인지적으세요. 1. (Python:) randint 함수를사용하려면, random 모듈을 import 해야한다. 2. (Python:) '' (single quote) 는한글자를표현할때, (double quote) 는문자열을표현할때사용한다. B. 다음에러를수정하는방법을적으세요.

More information

PowerPoint Template

PowerPoint Template JavaScript 회원정보 입력양식만들기 HTML & JavaScript Contents 1. Form 객체 2. 일반적인입력양식 3. 선택입력양식 4. 회원정보입력양식만들기 2 Form 객체 Form 객체 입력양식의틀이되는 태그에접근할수있도록지원 Document 객체의하위에위치 속성들은모두 태그의속성들의정보에관련된것

More information

Microsoft Word - Armjtag_문서1.doc

Microsoft Word - Armjtag_문서1.doc ARM JTAG (wiggler 호환 ) 사용방법 ( IAR EWARM 에서 ARM-JTAG 로 Debugging 하기 ) Test Board : AT91SAM7S256 IAR EWARM : Kickstart for ARM ARM-JTAG : ver 1.0 ( 씨링크테크 ) 1. IAR EWARM (Kickstart for ARM) 설치 2. Macraigor

More information

강의 개요

강의 개요 DDL TABLE 을만들자 웹데이터베이스 TABLE 자료가저장되는공간 문자자료의경우 DB 생성시지정한 Character Set 대로저장 Table 생성시 Table 의구조를결정짓는열속성지정 열 (Clumn, Attribute) 은이름과자료형을갖는다. 자료형 : http://dev.mysql.cm/dc/refman/5.1/en/data-types.html TABLE

More information

Multi-pass Sieve를 이용한 한국어 상호참조해결 반-자동 태깅 도구

Multi-pass Sieve를 이용한 한국어 상호참조해결 반-자동 태깅 도구 Python: 파이썬프로그래밍의기초, 함수 Kangwon Natl. University Department of Computer Science Cheoneum Park Intelligent software Lab. 함수 Intelligent software Lab. 2 함수란무엇인가? Intelligent software Lab. 3 함수를사용하는이유는? 프로그래밍을하다보면똑같은내용을반복해서작성하는경우다반사

More information

C++ Programming

C++ Programming C++ Programming 연산자다중정의 Seo, Doo-okok clickseo@gmail.com http://www.clickseo.com 목 차 연산자다중정의 C++ 스타일의문자열 2 연산자다중정의 연산자다중정의 단항연산자다중정의 이항연산자다중정의 cin, cout 그리고 endl C++ 스타일의문자열 3 연산자다중정의 연산자다중정의 (Operator

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 System Software Experiment 1 Lecture 5 - Array Spring 2019 Hwansoo Han (hhan@skku.edu) Advanced Research on Compilers and Systems, ARCS LAB Sungkyunkwan University http://arcs.skku.edu/ 1 배열 (Array) 동일한타입의데이터가여러개저장되어있는저장장소

More information

6. 설치가시작되는동안 USB 드라이버가자동으로로드됩니다. USB 드라이버가성공적으로로드되면 Setup is starting( 설치가시작되는중 )... 화면이표시됩니다. 7. 화면지침에따라 Windows 7 설치를완료합니다. 방법 2: 수정된 Windows 7 ISO

6. 설치가시작되는동안 USB 드라이버가자동으로로드됩니다. USB 드라이버가성공적으로로드되면 Setup is starting( 설치가시작되는중 )... 화면이표시됩니다. 7. 화면지침에따라 Windows 7 설치를완료합니다. 방법 2: 수정된 Windows 7 ISO Windows 7 설치및 PCIE RAID 설정정보 DK173 초판 11월 2016 A. Windows 7 및 USB 드라이버설치 칩셋사양에따라 Windows 7 설치중에 USB 키보드 / 마우스를사용하려면시스템에서 USB 드라이버를사전로드해야합니다. 이절에서는 USB 드라이버사전로드방법과 Windows 7 설치방법에대해서설명합니다. 방법 1: SATA ODD

More information

4S 1차년도 평가 발표자료

4S 1차년도 평가 발표자료 모바일 S/W 프로그래밍 안드로이드개발환경설치 2012.09.05. 오병우 모바일공학과 JDK (Java Development Kit) SE (Standard Edition) 설치순서 Eclipse ADT (Android Development Tool) Plug-in Android SDK (Software Development Kit) SDK Components

More information

자연언어처리

자연언어처리 제 7 장파싱 파싱의개요 파싱 (Parsing) 입력문장의구조를분석하는과정 문법 (grammar) 언어에서허용되는문장의구조를정의하는체계 파싱기법 (parsing techniques) 문장의구조를문법에따라분석하는과정 차트파싱 (Chart Parsing) 2 문장의구조와트리 문장 : John ate the apple. Tree Representation List

More information

C 프로그램의 기본

C 프로그램의 기본 C 프로그램의기본 목차 C 프로그램의구성요소 주석 main 함수 출력 C 언어의입력과출력 변수 printf 함수 scanf 함수 2 예제 2-1 : 첫번째 C 프로그램 3 2.1.1 주석 주석의용도 프로그램에대한설명 프로그램전체에대한대략적인정보를제공 프로그램수행에영향을미치지않는요소 4 2.1.1 주석 주석사용방법 /* 과 */ 을이용한여러줄주석 // 을이용한한줄주석

More information

Windows Server 2012

Windows Server  2012 Windows Server 2012 Shared Nothing Live Migration Shared Nothing Live Migration 은 SMB Live Migration 방식과다른점은 VM 데이터파일의위치입니다. Shared Nothing Live Migration 방식은 Hyper-V 호스트의로컬디스크에 VM 데이터파일이위치합니다. 반면에, SMB

More information

학습목표 함수프로시저, 서브프로시저의의미를안다. 매개변수전달방식을학습한다. 함수를이용한프로그래밍한다. 2

학습목표 함수프로시저, 서브프로시저의의미를안다. 매개변수전달방식을학습한다. 함수를이용한프로그래밍한다. 2 학습목표 함수프로시저, 서브프로시저의의미를안다. 매개변수전달방식을학습한다. 함수를이용한프로그래밍한다. 2 6.1 함수프로시저 6.2 서브프로시저 6.3 매개변수의전달방식 6.4 함수를이용한프로그래밍 3 프로시저 (Procedure) 프로시저 (Procedure) 란무엇인가? 논리적으로묶여있는하나의처리단위 내장프로시저 이벤트프로시저, 속성프로시저, 메서드, 비주얼베이직내장함수등

More information

OCW_C언어 기초

OCW_C언어 기초 초보프로그래머를위한 C 언어기초 2 장 : C 프로그램시작하기 2012 년 이은주 학습목표 을작성하면서 C 프로그램의구성요소 주석 (comment) 이란무엇인지알아보고, 주석을만드는방법 함수란무엇인지알아보고, C 프로그램에반드시필요한 main 함수 C 프로그램에서출력에사용되는 printf 함수 변수의개념과변수의값을입력받는데사용되는 scanf 함수 2 목차 프로그램코드

More information

The Pocket Guide to TCP/IP Sockets: C Version

The Pocket Guide to  TCP/IP Sockets: C Version 인터넷프로토콜 5 장 데이터송수신 (3) 1 파일전송메시지구성예제 ( 고정크기메시지 ) 전송방식 : 고정크기 ( 바이너리전송 ) 필요한전송정보 파일이름 ( 최대 255 자 => 255byte 의메모리공간필요 ) 파일크기 (4byte 의경우최대 4GB 크기의파일처리가능 ) 파일내용 ( 가변길이, 0~4GB 크기 ) 메시지구성 FileName (255bytes)

More information

Microsoft PowerPoint - chap-03.pptx

Microsoft PowerPoint - chap-03.pptx 쉽게풀어쓴 C 언어 Express 제 3 장 C 프로그램구성요소 컴퓨터프로그래밍기초 이번장에서학습할내용 * 주석 * 변수, 상수 * 함수 * 문장 * 출력함수 printf() * 입력함수 scanf() * 산술연산 * 대입연산 이번장에서는 C프로그램을이루는구성요소들을살펴봅니다. 컴퓨터프로그래밍기초 2 일반적인프로그램의형태 데이터를받아서 ( 입력단계 ), 데이터를처리한후에

More information

JVM 메모리구조

JVM 메모리구조 조명이정도면괜찮조! 주제 JVM 메모리구조 설미라자료조사, 자료작성, PPT 작성, 보고서작성. 발표. 조장. 최지성자료조사, 자료작성, PPT 작성, 보고서작성. 발표. 조원 이용열자료조사, 자료작성, PPT 작성, 보고서작성. 이윤경 자료조사, 자료작성, PPT작성, 보고서작성. 이수은 자료조사, 자료작성, PPT작성, 보고서작성. 발표일 2013. 05.

More information

<4D F736F F F696E74202D C61645FB3EDB8AEC7D5BCBA20B9D720C5F8BBE7BFEBB9FD2E BC8A3C8AF20B8F0B5E55D>

<4D F736F F F696E74202D C61645FB3EDB8AEC7D5BCBA20B9D720C5F8BBE7BFEBB9FD2E BC8A3C8AF20B8F0B5E55D> VHDL 프로그래밍 D. 논리합성및 Xilinx ISE 툴사용법 학습목표 Xilinx ISE Tool 을이용하여 Xilinx 사에서지원하는해당 FPGA Board 에맞는논리합성과정을숙지 논리합성이가능한코드와그렇지않은코드를구분 Xilinx Block Memory Generator를이용한 RAM/ ROM 생성하는과정을숙지 2/31 Content Xilinx ISE

More information

HLS(HTTP Live Streaming) 이용가이드 1. HLS 소개 Apple iphone, ipad, ipod의운영체제인 ios에서사용하는표준 HTTP 기반스트리밍프로토콜입니다. 2. HLS 지원대상 - 디바이스 : iphone/ipad/ipod - 운영체제 :

HLS(HTTP Live Streaming) 이용가이드 1. HLS 소개 Apple iphone, ipad, ipod의운영체제인 ios에서사용하는표준 HTTP 기반스트리밍프로토콜입니다. 2. HLS 지원대상 - 디바이스 : iphone/ipad/ipod - 운영체제 : HLS(HTTP Live Streaming) 이용가이드 1. HLS 소개 Apple iphone, ipad, ipod의운영체제인 ios에서사용하는표준 HTTP 기반스트리밍프로토콜입니다. 2. HLS 지원대상 - 디바이스 : iphone/ipad/ipod - 운영체제 : ios 3.0 이상 - 콘텐츠형식 : MP4 (H264,AAC ), MP3 * 디바이스별해상도,

More information

JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 ( ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각

JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 (   ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각 JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 ( http://java.sun.com/javase/6/docs/api ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각선의길이를계산하는메소드들을작성하라. 직사각형의가로와세로의길이는주어진다. 대각선의길이는 Math클래스의적절한메소드를이용하여구하라.

More information

<41736D6C6F D20B9AEBCADBEE7BDC42E687770>

<41736D6C6F D20B9AEBCADBEE7BDC42E687770> IDA Remote Debugging 2007. 01. 이강석 / certlab@gmail.com http://www.asmlove.co.kr - 1 - Intro IDA Remote debugging에대해알아봅시다. 이런기능이있다는것을잘모르시는분들을위해문서를만들었습니다. IDA 기능중에분석할파일을원격에서디버깅할수있는기능이있는데먼저그림과함께예를들어설명해보도록하겠습니다.

More information

PowerPoint Presentation

PowerPoint Presentation #include int main(void) { int num; printf( Please enter an integer: "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); return 0; } 1 학습목표 을작성하면서 C 프로그램의구성요소에대하여알아본다.

More information

JAVA PROGRAMMING 실습 02. 표준 입출력

JAVA PROGRAMMING 실습 02. 표준 입출력 자바의기본구조? class HelloJava{ public static void main(string argv[]){ system.out.println( hello,java ~ ){ } } # 하나하나뜯어살펴봅시다! public class HelloJava{ 클래스정의 public static void main(string[] args){ System.out.println(

More information

문서의 제목 나눔고딕B, 54pt

문서의 제목 나눔고딕B, 54pt 산업공학과를위한 프로그래밍입문 (w/ 파이썬 ) PART II : Python 활용 가천대학교 산업경영공학과 최성철교수 간단한파일다루기 [ 생각해보기 ] 우리는어떻게프로그램을시작하나? 보통은이렇게생긴아이콘을누른다! 그러나실제로는아이콘이아닌 실행파일 을실행시키는것아이콘을클릭하고오른쪽마우스클릭 속성 을선택해볼것 [ 생각해보기 ] 옆과같은화면이나올것이다대상에있는

More information

A Dynamic Grid Services Deployment Mechanism for On-Demand Resource Provisioning

A Dynamic Grid Services Deployment Mechanism for On-Demand Resource Provisioning C Programming Practice (II) Contents 배열 문자와문자열 구조체 포인터와메모리관리 구조체 2/17 배열 (Array) (1/2) 배열 동일한자료형을가지고있으며같은이름으로참조되는변수들의집합 배열의크기는반드시상수이어야한다. type var_name[size]; 예 ) int myarray[5] 배열의원소는원소의번호를 0 부터시작하는색인을사용

More information

1

1 1 2 3 4 5 6 b b t P A S M T U s 7 m P P 8 t P A S M T U s 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 Chapter 1 29 1 2 3 4 18 17 16 15 5 6 7 8 9 14 13 12 11 10 1 2 3 4 5 9 10 11 12 13 14 15

More information

DE1-SoC Board

DE1-SoC Board 실습 1 개발환경 DE1-SoC Board Design Tools - Installation Download & Install Quartus Prime Lite Edition http://www.altera.com/ Quartus Prime (includes Nios II EDS) Nios II Embedded Design Suite (EDS) is automatically

More information

Orcad Capture 9.x

Orcad Capture 9.x OrCAD Capture Workbook (Ver 10.xx) 0 Capture 1 2 3 Capture for window 4.opj ( OrCAD Project file) Design file Programe link file..dsn (OrCAD Design file) Design file..olb (OrCAD Library file) file..upd

More information

API 매뉴얼

API 매뉴얼 PCI-DIO12 API Programming (Rev 1.0) Windows, Windows2000, Windows NT and Windows XP are trademarks of Microsoft. We acknowledge that the trademarks or service names of all other organizations mentioned

More information

<342EBAAFBCF620B9D720B9D9C0CEB5F92E687770>

<342EBAAFBCF620B9D720B9D9C0CEB5F92E687770> 예약어(reserved word) : 프로그래밍 언어에서 특별한 용도로 사용하고자 미리 지정한 단어 - 프로그램의 구성요소를 구별하게 해주는 역할 => 라벨, 서브 프로그램 이름, 변수에 연관되어 다른 변수나 서브 프로그램 등과 구별 - 식별자의 최대길이는 언어마다 각각 다르며 허용길이를 넘어서면 나머지 문자열은 무시됨 - FORTRAN, COBOL, HTML

More information

지난시간에... 우리는 kernel compile을위하여 cross compile 환경을구축했음. UBUNTU 12.04에서 arm-2009q3를사용하여 간단한 c source를빌드함. 한번은 intel CPU를위한 gcc로, 한번은 ARM CPU를위한 gcc로. AR

지난시간에... 우리는 kernel compile을위하여 cross compile 환경을구축했음. UBUNTU 12.04에서 arm-2009q3를사용하여 간단한 c source를빌드함. 한번은 intel CPU를위한 gcc로, 한번은 ARM CPU를위한 gcc로. AR Configure Kernel Build Environment And kernel & root file system Build 2018-09-27 VLSI Design Lab 1 지난시간에... 우리는 kernel compile을위하여 cross compile 환경을구축했음. UBUNTU 12.04에서 arm-2009q3를사용하여 간단한 c source를빌드함.

More information

Microsoft Word - Crackme 15 from Simples 문제 풀이_by JohnGang.docx

Microsoft Word - Crackme 15 from Simples 문제 풀이_by JohnGang.docx CrackMe 15.exe (in Simples) 문제풀이 동명대학교정보보호동아리 THINK www.mainthink.net 강동현 Blog: johnghb.tistory.com e-mail: cari2052@gmail.com 1 목차 : 1. 문제설명및기본분석 --------------------------- P. 03 2 상세분석 ---------------------------

More information

Microsoft PowerPoint - Lesson2.pptx

Microsoft PowerPoint - Lesson2.pptx Computer Engineering g Programming g 2 제 3 장 C 프로그래밍구성요소 Lecturer: JUNBEOM YOO jbyoo@konkuk.ac.kr 본강의자료는생능출판사의 PPT 강의자료 를기반으로제작되었습니다. 이번장에서학습할내용 * 주석 * 변수, 상수 * 함수 * 문장 * 출력함수 printf() * 입력함수 scanf() *

More information

버퍼오버플로우-왕기초편 10. 메모리를 Hex dump 뜨기 앞서우리는버퍼오버플로우로인해리턴어드레스 (return address) 가변조될수있음을알았습니다. 이제곧리턴어드레스를원하는값으로변경하는실습을해볼것인데요, 그전에앞서, 메모리에저장된값들을살펴보는방법에대해배워보겠습

버퍼오버플로우-왕기초편 10. 메모리를 Hex dump 뜨기 앞서우리는버퍼오버플로우로인해리턴어드레스 (return address) 가변조될수있음을알았습니다. 이제곧리턴어드레스를원하는값으로변경하는실습을해볼것인데요, 그전에앞서, 메모리에저장된값들을살펴보는방법에대해배워보겠습 앞서우리는버퍼오버플로우로인해리턴어드레스 (return address) 가변조될수있음을알았습니다. 이제곧리턴어드레스를원하는값으로변경하는실습을해볼것인데요, 그전에앞서, 메모리에저장된값들을살펴보는방법에대해배워보겠습니다. 여러분모두 Windows 에서 hex editor(hex dump, hex viewer) 라는것을사용해보셨을겁니다. 바로바이너리파일을 16 진수

More information

< E20C6DFBFFEBEEE20C0DBBCBAC0BB20C0A7C7D12043BEF0BEEE20492E707074>

< E20C6DFBFFEBEEE20C0DBBCBAC0BB20C0A7C7D12043BEF0BEEE20492E707074> Chap #2 펌웨어작성을위한 C 언어 I http://www.smartdisplay.co.kr 강의계획 Chap1. 강의계획및디지털논리이론 Chap2. 펌웨어작성을위한 C 언어 I Chap3. 펌웨어작성을위한 C 언어 II Chap4. AT89S52 메모리구조 Chap5. SD-52 보드구성과코드메모리프로그래밍방법 Chap6. 어드레스디코딩 ( 매핑 ) 과어셈블리어코딩방법

More information

Microsoft PowerPoint - Java7.pptx

Microsoft PowerPoint - Java7.pptx HPC & OT Lab. 1 HPC & OT Lab. 2 실습 7 주차 Jin-Ho, Jang M.S. Hanyang Univ. HPC&OT Lab. jinhoyo@nate.com HPC & OT Lab. 3 Component Structure 객체 (object) 생성개념을이해한다. 외부클래스에대한접근방법을이해한다. 접근제어자 (public & private)

More information

JAVA PROGRAMMING 실습 08.다형성

JAVA PROGRAMMING 실습 08.다형성 2015 학년도 2 학기 1. 추상메소드 선언은되어있으나코드구현되어있지않은메소드 abstract 키워드사용 메소드타입, 이름, 매개변수리스트만선언 public abstract String getname(); public abstract void setname(string s); 2. 추상클래스 abstract 키워드로선언한클래스 종류 추상메소드를포함하는클래스

More information

강의10

강의10 Computer Programming gdb and awk 12 th Lecture 김현철컴퓨터공학부서울대학교 순서 C Compiler and Linker 보충 Static vs Shared Libraries ( 계속 ) gdb awk Q&A Shared vs Static Libraries ( 계속 ) Advantage of Using Libraries Reduced

More information

다른 JSP 페이지호출 forward() 메서드 - 하나의 JSP 페이지실행이끝나고다른 JSP 페이지를호출할때사용한다. 예 ) <% RequestDispatcher dispatcher = request.getrequestdispatcher(" 실행할페이지.jsp");

다른 JSP 페이지호출 forward() 메서드 - 하나의 JSP 페이지실행이끝나고다른 JSP 페이지를호출할때사용한다. 예 ) <% RequestDispatcher dispatcher = request.getrequestdispatcher( 실행할페이지.jsp); 다른 JSP 페이지호출 forward() 메서드 - 하나의 JSP 페이지실행이끝나고다른 JSP 페이지를호출할때사용한다. 예 ) RequestDispatcher dispatcher = request.getrequestdispatcher(" 실행할페이지.jsp"); dispatcher.forward(request, response); - 위의예에서와같이 RequestDispatcher

More information

Microsoft PowerPoint - chap04-연산자.pptx

Microsoft PowerPoint - chap04-연산자.pptx int num; printf( Please enter an integer: "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); } 1 학습목표 수식의 개념과 연산자, 피연산자에 대해서 알아본다. C의 를 알아본다. 연산자의 우선 순위와 결합 방향에

More information

iii. Design Tab 을 Click 하여 WindowBuilder 가자동으로생성한 GUI 프로그래밍환경을확인한다.

iii. Design Tab 을 Click 하여 WindowBuilder 가자동으로생성한 GUI 프로그래밍환경을확인한다. Eclipse 개발환경에서 WindowBuilder 를이용한 Java 프로그램개발 이예는 Java 프로그램의기초를이해하고있는사람을대상으로 Embedded Microcomputer 를이용한제어시스템을 PC 에서 Serial 통신으로제어 (Graphical User Interface (GUI) 환경에서 ) 하는프로그램개발예를설명한다. WindowBuilder:

More information

작성자 : 기술지원부 김 삼 수

작성자 : 기술지원부 김 삼 수 작성자 : 기술지원부김삼수 qpopper 설치 qpopper란무엇인가? 메일수신을하기위해필요한프로그램으로 qpopper는가장인기있는 email 클라이언트에의해사용되는인터넷 email 다운로딩을위한 POP3프로토콜을사용합니다. 그러나 qpopper는 sendmail이나 smail과같이 SMTP프로토콜은포함하고있지않습니다. (

More information

소프트웨어공학 Tutorial #2: StarUML Eun Man Choi

소프트웨어공학 Tutorial #2: StarUML Eun Man Choi 소프트웨어공학 Tutorial #2: StarUML Eun Man Choi emchoi@dgu.ac.kr Contents l StarUML 개요 l StarUML 소개및특징 l 주요기능 l StarUML 화면소개 l StarUML 설치 l StarUML 다운 & 설치하기 l 연습 l 사용사례다이어그램그리기 l 클래스다이어그램그리기 l 순서다이어그램그리기 2

More information

쉽게 풀어쓴 C 프로그래밍

쉽게 풀어쓴 C 프로그래밍 두근두근 파이썬수업 4 장자료의종류에는어떤것들이있나요? 이번장에서만들프로그램 (1) 터틀그래픽의거북이와인사하는프로그램을작성해보자. Run Python (2) 여러개의색상을리스트에저장하였다가하나씩꺼내서원들을그려보자 Run Python 파이썬에서사용할수있는자료의종류 파이썬과자료형 변수에어떤종류의자료도저장할수있다 x = 10 print("x =", x) x = 3.14

More information

BY-FDP-4-70.hwp

BY-FDP-4-70.hwp RS-232, RS485 FND Display Module BY-FDP-4-70-XX (Rev 1.0) - 1 - 1. 개요. 본 Display Module은 RS-232, RS-485 겸용입니다. Power : DC24V, DC12V( 주문사양). Max Current : 0.6A 숫자크기 : 58mm(FND Size : 70x47mm 4 개) RS-232,

More information

Microsoft PowerPoint - chap08-1 [호환 모드]

Microsoft PowerPoint - chap08-1 [호환 모드] 2011-1 학기프로그래밍입문 (1) 참고자료 : chapter 8-1. 전처리 박종혁 Tel: 970-6702 Email: jhpark1@seoultech.ac.kr h k 한빛미디어 출처 : 뇌를자극하는 C프로그래밍, 한빛미디어 -1- ehanbit.net 전처리명령어 컴파일과정에는전처리 (preprocessing) 단계가있다. - 컴파일러는목적파일을만들기전에전처리라고하는특별한작업을

More information

Microsoft PowerPoint Android-SDK설치.HelloAndroid(1.0h).pptx

Microsoft PowerPoint Android-SDK설치.HelloAndroid(1.0h).pptx To be an Android Expert 문양세강원대학교 IT 대학컴퓨터학부 Eclipse (IDE) JDK Android SDK with ADT IDE: Integrated Development Environment JDK: Java Development Kit (Java SDK) ADT: Android Development Tools 2 JDK 설치 Eclipse

More information

Research & Technique Apache Tomcat RCE 취약점 (CVE ) 취약점개요 지난 4월 15일전세계적으로가장많이사용되는웹애플리케이션서버인 Apache Tomcat에서 RCE 취약점이공개되었다. CVE 취약점은 W

Research & Technique Apache Tomcat RCE 취약점 (CVE ) 취약점개요 지난 4월 15일전세계적으로가장많이사용되는웹애플리케이션서버인 Apache Tomcat에서 RCE 취약점이공개되었다. CVE 취약점은 W Research & Technique Apache Tomcat RCE 취약점 (CVE-2019-0232) 취약점개요 지난 4월 15일전세계적으로가장많이사용되는웹애플리케이션서버인 Apache Tomcat에서 RCE 취약점이공개되었다. CVE-2019-0232 취약점은 Windows 시스템의 Apache Tomcat 서버에서 enablecmdlinearguments

More information

Snort Install Manual Ad2m VMware libnet tar.gz DebianOS libpcap tar.gz Putty snort tar.gz WinSCP snort rules 1. 첫번째로네트워크설정 1) ifconf

Snort Install Manual Ad2m VMware libnet tar.gz DebianOS libpcap tar.gz Putty snort tar.gz WinSCP snort rules 1. 첫번째로네트워크설정 1) ifconf Snort Install Manual Ad2m VMware libnet-1.1.5.tar.gz DebianOS libpcap-1.1.1.tar.gz Putty snort-2.8.6.tar.gz WinSCP snort rules 1. 첫번째로네트워크설정 1) ifconfig 명령어로현재 IP를확인해본다. 2) vi /etc/network/interfaces 네트워크설정파일에아래와같이설정을해준다.

More information

C++ Programming

C++ Programming C++ Programming 예외처리 Seo, Doo-okok clickseo@gmail.com http://www.clickseo.com 목 차 예외처리 2 예외처리 예외처리 C++ 의예외처리 예외클래스와객체 3 예외처리 예외를처리하지않는프로그램 int main() int a, b; cout > a >> b; cout

More information

1. 안드로이드개발환경설정 안드로이드개발을위해선툴체인을비롯한다양한소프트웨어패키지가필요합니다 툴체인 (Cross-Compiler) 설치 안드로이드 2.2 프로요부터는소스에기본툴체인이 prebuilt 라는이름으로포함되어있지만, 리눅스 나부트로더 (U-boot)

1. 안드로이드개발환경설정 안드로이드개발을위해선툴체인을비롯한다양한소프트웨어패키지가필요합니다 툴체인 (Cross-Compiler) 설치 안드로이드 2.2 프로요부터는소스에기본툴체인이 prebuilt 라는이름으로포함되어있지만, 리눅스 나부트로더 (U-boot) 1. 안드로이드개발환경설정 안드로이드개발을위해선툴체인을비롯한다양한소프트웨어패키지가필요합니다. 1.1. 툴체인 (Cross-Compiler) 설치 안드로이드 2.2 프로요부터는소스에기본툴체인이 prebuilt 라는이름으로포함되어있지만, 리눅스 나부트로더 (U-boot) 만별도로필요한경우도있어툴체인설치및설정에대해알아봅니다. 1.1.1. 툴체인설치 다음링크에서다운받을수있습니다.

More information

슬라이드 1

슬라이드 1 핚국산업기술대학교 제 14 강 GUI (III) 이대현교수 학습안내 학습목표 CEGUI 라이브러리를이용하여, 게임메뉴 UI 를구현해본다. 학습내용 CEGUI 레이아웃의로딩및렌더링. OIS 와 CEGUI 의연결. CEGUI 위젯과이벤트의연동. UI 구현 : 하드코딩방식 C++ 코드를이용하여, 코드내에서직접위젯들을생성및설정 CEGUI::PushButton* resumebutton

More information

제4장 기본 의미구조 (Basic Semantics)

제4장  기본 의미구조 (Basic Semantics) 제 4 장블록및유효범위 Reading Chap. 5 숙대창병모 1 4.1 변수선언및유효범위 숙대창병모 2 변수선언과유효범위 변수선언 Declaration before Use! 대부분의언어에서변수는사용전에먼저선언해야한다. 변수의유효범위 (scope) 선언된변수가유효한 ( 사용될수있는 ) 프로그램내의범위 / 영역 변수이름뿐아니라함수등다른이름도생각해야한다. 정적유효범위

More information

Microsoft PowerPoint - chap06-1Array.ppt

Microsoft PowerPoint - chap06-1Array.ppt 2010-1 학기프로그래밍입문 (1) chapter 06-1 참고자료 배열 박종혁 Tel: 970-6702 Email: jhpark1@snut.ac.kr 한빛미디어 출처 : 뇌를자극하는 C프로그래밍, 한빛미디어 -1- 배열의선언과사용 같은형태의자료형이많이필요할때배열을사용하면효과적이다. 배열의선언 배열의사용 배열과반복문 배열의초기화 유연성있게배열다루기 한빛미디어

More information