Microsoft Word - AntiCrackingTechnique.doc

Size: px
Start display at page:

Download "Microsoft Word - AntiCrackingTechnique.doc"

Transcription

1 Reverse Engineering Anti-Cracking Techniques 저자 : Nicolaous George (ishtus@astalavista.com) & Charalambous Glafkos (glafkos@astalavista.com) 편역 : Kancho ( kancholove@gmail.com ) 이문서는 [papers] 에 2008년 6월 26일게시되었습니다. 문서의내용을바탕으로공부한내용을정리하였습니다. 오류나질문이있으시면메일보내주시기바랍니다. 역자의주는본문내기울임꼴이나각주로나타내겠습니다. 들어가며 이문서는리버스엔지니어들이목적을달성하기위해따를수있는대부분의방법에대한이해를높이기위한가이드이다. 또한시리얼키검사나인증방법과같은소프트웨어의민감한정보를보호하는더나은방법에대한조언을포함하고있다. 이문서는누군가의이상을바꾸는것에대한것이아니라, 리버스엔지니어링이더안전한세상을만들수있다고믿는사람들을위한것이다. 만약당신이이런생각을하는사람이아니라면, 이문서는당신을위한것이아니다. 이문서는리버스엔지니어들에의해사용되는다양한기술을다루고있지않으므로만약빠진것이있다면망설이지말고메일을보내달라. 할것들 다룰주제들 : - PE packer와암호화툴 - 온라인검사 - 악성코드분석 - x64 리버스엔지니어링 - 취약점발견과 exploiting 다른주제에대한제안도환영한다. 제안하거나도움될것이있다면메일보내달라.

2 리버스엔지니어링툴 인터넷상에서많은리버스엔지니어링툴들이무료혹은구매를통해사용가능하다. 가장발전된디스어셈블링과디버깅툴은다음과같다. - OllyDBG [ ( 버전 2가곧나올예정 ) - IDA Pro Disassembler and Debugger [ - W32Dasm [ ( 오래되었으나제공하는기능중몇개는놀랄만하다 ) - SoftICE (2006년 4월부터진행중지 ) - WinDbg [ 추가적으로다른툴들도사용된다. 툴이름과간단한설명은다음과같다. - PROTECTiON id [ 윈도우실행파일의 packer/encryptor 시그너처와프로그램컴파일러를알려주는데사용 [ - Import REConstructor [ 실행파일의손상된 import table(iat) 의복구에사용 - System Internals [ FileMon, RegMon 같은프로그램으로대상프로그램의동작을모니터하는데사용될수있다. 다른대안으로는모든프로그램활동정보를제공하는 sandbox가있다. 리버스엔지니어링접근 우리는리버스엔지니어가사용하는접근을볼것이다. 이장에서사용되는디버거는수정된버전의 OllyDBG( 원래버전도잘동작한다 ) 이다. 예제소프트웨어 프로그램이름 : Example.v1.0.exe ( 시리얼검사 ) Md5sum: 4c78179f07c33e0f9ec8f2b0509bd069 컴파일러 : 볼랜드델파이다운로드 1 : 1 원래문서에서는해당프로그램을공개하지않았다. 역자가저자에게메일을보낸결과위의링크를가르쳐주었다. 예제프로그램이버그가좀있어서공개하지않았다고한다. 아무튼역자의메일에친절히답변해준저자 George에게다시한번감사드린다.

3 프로그램분석 먼저우리의접근방법을정하는것과어떻게동작하는지에대한더나은이해를위해프로그램기능을분석할필요가있다. 보다시피프로그램의형태는간단하다. 주된기능은사용자이름과시리얼검사이다. 첫번째로텍스트상자에임의의값을집어넣고, Check 버튼을누르고프로그램반응을살피는것이다. 시리얼검사알고리즘전에주어진길이제한내의시리얼문자열이들어왔는지검사하는함수가있다고추측할수있는결과를보여준다. 그런다음프로그램이동작하는방식에대한더많은정보를알기위해프로그램을디스어셈블링하고디버깅하는단계로가자. 앞으로나올내용은리버스엔지니어가사용할방법들과소프트웨어를방어하는몇가지제안들이다. 접근방법 1 ( 문자열참조 ) 첫번째단계 : 오른쪽클릭 Search for 선택 All referenced text strings 선택

4 두번째단계 : 보다시피메시지문자열은다이얼로그박스와쉽게연결되어있다. 문자열을더블클릭해서다이얼로그함수로직접이동할수있다. 세번째단계 : 시리얼검사가어렵게코딩되어있지만, 약간의경험이있는리버스엔지니어는이함수가어디서호출되는지추적할수있고프로그램흐름을패치할수있다. 네번째단계 : 여기서이함수의시작부분에라벨을설정 ( 쉽게참조하기위해 ) 한다. 오른쪽클릭 Label 선택.

5 Long/Short Error 로라벨설정. 다섯번째단계 : 밑에서볼수있듯이이함수는서로가까이있는세개의다른주소에서호출된다. 여섯번째단계 : 첫번째호출한곳 (004571B7) 으로이동한다. 오른쪽클릭 Go to Call from B7 선택. 성공적으로시리얼검사알고리즘내에도달했다. 만약호출한곳에서시리얼검사와관련된동작을하지않는것으로보인다면다른호출한주소로이동해서살펴보면된다.

6 제안 ( 접근방법 1 에대해 ) 문자열참조를통해민감한프로그램함수가분석당하지않기위해서는프로그래머는다음의과정을따르면된다. - 전역변수나배열에문자열들을저장해서필요할때참조한다. Pseudo 코드예제 : ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ array[] mymsges = {'The Serial number you entered is too short or too long', 'The Serial number you entered is not valid', 'Thank You for registering.'} //Code omitted function registrationcheck(): if(invalid_length) then sendmessage(mymsges[0]) if(invalid_serial) then sendmessage(mymsges[1]) if(valid_serial) then sendmessage(mymsges[2]) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 추가적으로프로그래머는배열내부의문자열을암호화하고필요할때복호화할수있다 ( 좋은암호화기법을쓸필요도없고간단한알고리즘이면된다 ). ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ //This can be done separately. //Let s assume that the result of this code will be: dkg$2 kf2 gkfoaplk string thank_you = Thank You for registering for(each letter in thank_you) do add_5_to_ascii_value(letter) print thank_you //program serial check If(valid_serial) then sendmessage(decrypt( dkg$2 kf2 gkfoaplk )) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

7 - 파일이나레지스트리에문자열을저장한다. 접근방법 2 ( Windows API 에 Breakpoint ) 이접근방법에서는 MessagBoxA API에 breakpoint를설정한다. 어떤프로그램은 MessagBoxW, MessageBoxExA, MessageBoxExW를사용할수있다. 첫번째단계 : ( Ollydbg의 Command Bar plug-in 2 사용. Command Bar plug-in은기본적으로존재한다. ) bp MessageBoxA 를적고엔터를친다. Breakpoints를보면확인가능하다. 또는그냥 Ctrl+G 를누른후 MessageBoxA를치면해당함수의시작부분에위치하게된다. 여기서 F2를눌러 breakpoint를설정해도된다. ( Ollydbg의 Names 창을사용 ) Alt+E 를눌러 Executable Modules 리스트로이동 Executable을선택하고 Ctrl+N 을누름 MessageBoxA 를찾음 오른쪽클릭 Toggle breakpoint on import 선택 2 Ollydbg의 plug-in을이용해서훨씬다양하고편리한기능을사용할수있다. Plug-in은사용자가직접제작할수있는데자세한것은 ollydbg 홈페이지를참고하면된다. 제작된 plug-in은다음사이트에서다운로드받을수있다. - plug-in은보통 DLL형태인데, ollydbg가실행되는같은폴더에위치시켜주기만하면 ollydbg를실행시켰을때메뉴에서 plug-in이추가된것을확인할수있다. 저자의메일에의하면 ollydbg가약간의버그가있기때문에 command bar plug-in을사용했다고한다.

8 이경우앞서 Breakpoints에설정되었던것이사라지게되어두번째단계에서 breakpoint가걸리지않는다. 따라서역자의환경에서는할필요가없었다. 이문제를저자에게문의해본결과 Toggle breakpoint on import 는함수자체가아닌함수를가리키는포인터의주소에 break를설정하는것이며, 프로그램의컴파일러에따라동작여부가달려있다고한다. 두번째단계 : 프로그램실행 임의의데이터입력 Check 누름. User32 라이브러리내의 MessageBoxA API에 break가걸린다. 세번째단계 : Return 까지프로그램실행 ( 함수끝날때까지 Ctrl+F9 또는 F8 누름 ) 네번째단계 : 함수를빠져나옴 ( F8 누름 ).

9 보다시피접근방법 1 에서세번째단계에서와같은위치에도착했다. 제안 ( 접근방법 2 에대해 ) API에대한 Breakpoint 설정을통해프로그램이분석되지않기위해서는프로그래머는 API 사용을제한해야한다. 프로그램을최소한의 API 호출로작성해라. API를사용하는대신자신만의메시지박스를생성해라. 접근방법 3 ( 스택추적 ) 리버스엔지니어가사용할수있는또다른흥미있는접근방법은 스택추적 이다. 스택추적이란스택을통해진행과정을역추적하는기술이다. CPU에의해 CALL < 함수 > 명령이실행되었을때, Instruction Pointer(EIP) 의값더하기다음명령까지의바이트수가스택에저장 (push) 된다 (return address를의미 ). 호출된함수가끝나고 RETN 명령어가실행될때프로세서는스택에서값을빼와서 (pop) 함수를호출한다음곳으로돌아간다. 예를들어 : Call 0xF 가실행되면, offset 3 의값이스택에저장 (push) 된다. RETN 이실행되면, 스택에서 offset 3의값을스택에서가져와서 (pop) EIP 에저장한다. 첫번째단계 : 프로그램실행 임의의값을입력 Check 누름 프로그램중지 두번째단계 : Call stack 창열기. Ollydbg 메뉴의 K를누르거나 Alt+K를누르면된다. Call stack 내용을보면서로호출하는함수들이있다. 등록루틴메인프로그램을추적할수있는함수는 MessageBoxExA 이지만효과적이지는않다. 그함수를어디서호출하는지알아볼필요가있다.

10 세번째단계 : 오른쪽클릭 Follow address in stack 선택 네번째단계 : USER32.MessageBoxExA 에서 USER32.77D3082F 로리턴한다. USER32.77D3082F 는 MessageBoxA 함수이

11 다 ( 왜그런지모르겠다면, user32.dll 내부를살펴보면된다 ). 그러므로우리가찾는함수는 Example_.00456FA7 에존재한다. 제안 ( 접근방법 3 에대해 ) 스택추적을막는것은어려운기술이다. 어떤사람은프로그램내의모든민감한함수의 CALL 과 RETN 명령을 JMP 로바꿈으로써할수있다고주장할수있다. 이는 바이너리코드 obfuscation 이라고불린다. 코드 obfuscation은원래프로그램바이너리코드를변환하는기술이므로코드읽기나정적디스어셈블리에의한분석을어렵게한다. 이방법이리버스엔지니어들을혼란스럽게하지만, 소프트웨어를보호하지는못한다. 단지코드분석을지연시키기만한다. 코드 obfuscation의기본아이디어는데이터와코드섹션을합치는것이다. 또한 obfuscation은디스어셈블리와스택추적을막기위해다음처럼 OPCODE들을바꾼다. - CALL 을 PUSH, POP, RET, JMP 로바꾼다. 그리고 JMP 를 PUSH, RET 로바꾼다. 예를들어, 원래코드 Obfuscate된코드 PUSH 0 PUSH 0 CALL 7E PUSH EIP+< 다음명령어까지의바이트 > JMP 7E MOV EBX, 1 POP EAX RETN JMP EAX JMP 00456F94 PUSH 00456F94 RETN - JMP 분기를항상만족하는조건분기 ( 예, JE, JNZ, JL) 로바꾼다. 또한이방법은리버스엔지니어들을혼란스럽게하고다른코드섹션으로보낼수있다. 원래코드 Obfuscate된코드 JMP 00456F94 MOV EAX, 1

12 CMP EAX, 0 JE <JUNK_CODE> JNE 00456F94 - 도달하지않는부분에명령어를추가한다. - 오프셋에대한직접적인참조사용을피한다 ( 예, JMP 00456F94). 해당오프셋값을혼란스럽게하기위해간단한계산을사용하고나서호출한다. 예를들어, ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ MOV EAX, ; EAX = ADD EAX, 00000F94 ; EAX = 00456F94 JMP EAX ; JMP 00456F94 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 바이너리코드패치 접근방법 1 의여섯번째단계에서볼수있듯이, 이코드는입력된시리얼코드가적합한지여부를판단하고적절하게등록을하기위해사용자의실수를알려주는실제알고리즘이다. 리버스엔지니어가성공적으로코드를패치하고프로그램흐름을조절하기위해사용하는여러방법이존재한다. 이를하기전에실제코드를분석해야하고실제패치목표위치가어디인지이해해야한다. 첫번째단계 : 화면을스크롤해서올려함수시작부분이나근처에 breakpoint를설정한다 (breakpoint를설정하려면해당명령어를선택해서 F2를누르면된다 ). 그리고프로그램을실행시킨다.

13 두번째단계 : 명령어마다한스텝씩따라가면서이코드가어떤동작을하는지이해하도록노력한다. 아래그림에서보듯, 0x F의 CALL 명령어가텍스트상자의 Username: 안에입력한문자열의포인터를리턴한다. 코드섹션 : 현재명령어 : 스택 : 다음 0x F의 CALL 명령어는 Serial: 텍스트상자안에사용자가입력한문자열의포인터를리턴한다. 코드섹션 :

14 현재명령어 : 스택 : 다음코드는 EAX에사용자가입력한시리얼번호를로드하고, 입력이 null인지검사한다. 0x0045E5A8(0x C 오프셋참조 ) 가가리키는값은오프셋 0x004571A4에서 EAX에로드된시리얼아스키값이다. If( EAX == null ) { //do something }

15 레지스터창 : 아래보다시피또하나의길이검사루틴이있다. 이번에는 ESI가사용자가입력한시리얼번호의길이를가지고있으며이는 1과비교된다. 길이가 1이면 Long/Short Error 가호출 ( 접근방법 1의네번째단계참조 ) 된다. 코드섹션 : 레지스터창 : 아래하이라이트된코드는십진수로의시리얼넘버길이의첫번째문자열값 ( 예를들어길이가 28이면 2 ) 과 1 ( 아스키값 0x31) 을비교한다. 어떻게길이가아스키문자열로바뀌는지궁금한사람들을위해 0x4571C3에서의 CALL 명령을따라가면다음루프를볼수있다 D > 31D2 /XOR EDX,EDX

16 F. F7F1 DIV ECX E DEC ESI C2 30 ADD DL, FA 3A CMP DL,3A JB SHORT Example_ D A. 80C2 07 ADD DL, D > 8816 MOV BYTE PTR DS:[ESI],DL F. 09C0 OR EAX,EAX ^75 EA \JNZ SHORT Example_ D 코드섹션 : 현재명령어 : 다음은위의것과비슷하지만두번째숫자를검사한다. 이런경우에두번째숫자는 4, hex 값으로 0x34와같아야한다.

17 그래서지금까지의프로그램코드는다음과같이생겼다. char first = getchar(length,1,?); //Get first character if (first!= 1 ) { char second = getchar(length,2,?); //Get second character } else { } if(second!= 4 ) { //continue with serial check } else { sendlongshorterror(); } sendlongshorterror(); 참고 :? 문자는리턴된값데이터타입의알려지지않은값을의미한다. 대부분은입력한시리얼번호의길이가 14이지않기때문에 F9를눌러서다시시리얼번호를입력한다 ( 이번에는시리얼번호를 abcde 를입력했다 ). 세번째단계 : 0x 의 CALL을따라가보면 (F7을눌러 ) 아래그림과같은코드를볼수있다.

18 네번째단계 : 아래코드를보자 /$ 53 PUSH EBX PUSH ESI A. 57 PUSH EDI B. 55 PUSH EBP C. 83C4 F8 ADD ESP, F. BB MOV EBX, BE ACE54500 MOV ESI,Example_.0045E5AC ; ASCII " abcde" > 8BCE /MOV ECX,ESI B. 8BD3 MOV EDX,EBX D. A1 A8E54500 MOV EAX,DWORD PTR DS:[45E5A8] E8 BDFEFFFF CALL Example_.00456F INC EBX INC ESI FB 0F CMP EBX,0F C.^75 EB \JNZ SHORT Example_ E. A1 A4E54500 MOV EAX,DWORD PTR DS:[45E5A4] MOV DWORD PTR SS:[ESP+4],EAX B MOV EAX,DWORD PTR SS:[ESP+4] B. 85C0 TEST EAX,EAX D JE SHORT Example_ A F. 83E8 04 SUB EAX, A2. 8B00 MOV EAX,DWORD PTR DS:[EAX] A4 > 85C0 TEST EAX,EAX A6. 7E 16 JLE SHORT Example_ BE A8. BB MOV EBX, AD > 8B15 A4E54500 /MOV EDX,DWORD PTR DS:[45E5A4] B3. 0FB6541A FF MOVZX EDX,BYTE PTR DS:[EDX+EBX-1] B8. 03EA ADD EBP,EDX BA. 43 INC EBX BB. 48 DEC EAX BC.^75 EF \JNZ SHORT Example_ AD BE > BB 0E MOV EBX,0E C3. B8 ACE54500 MOV EAX,Example_.0045E5AC ; ASCII " abcde" C8. BA BCE54500 MOV EDX,Example_.0045E5BC CD > 0FB608 /MOVZX ECX,BYTE PTR DS:[EAX] D0. 890A MOV DWORD PTR DS:[EDX],ECX

19 004570D2. 83C2 04 ADD EDX, D5. 40 INC EAX D6. 4B DEC EBX D7.^75 F4 \JNZ SHORT Example_ CD D9 > 803D ACE54500 >/CMP BYTE PTR DS:[45E5AC],7B E JE SHORT Example_ E E2. BF MOV EDI, E7. EB 46 JMP SHORT Example_ F E9 > 8BC5 MOV EAX,EBP EB. B9 0A MOV ECX,0A F0. 99 CDQ F1. F7F9 IDIV ECX F3. 0FB605 ADE5450> MOVZX EAX,BYTE PTR DS:[45E5AD] FA. 3BD0 CMP EDX,EAX FC JNZ SHORT Example_ FE ADD DWORD PTR SS:[ESP], EB 2B JMP SHORT Example_ F > BB 0C MOV EBX,0C BE ADE54500 MOV ESI,Example_.0045E5AD ; ASCII " abcde" E > 0FB606 /MOVZX EAX,BYTE PTR DS:[ESI] B9 0A MOV ECX,0A D2 XOR EDX,EDX F7F1 DIV ECX A. 8BCA MOV ECX,EDX C. 83F9 0E CMP ECX,0E F. 73 0A JNB SHORT Example_ B F9 01 CMP ECX, JBE SHORT Example_ B E8 05FFFFFF CALL Example_ B > 46 INC ESI C. 4B DEC EBX D.^75 DF \JNZ SHORT Example_ E F > 83FF 01 CMP EDI, ^75 A5 \JNZ SHORT Example_ D B0424 MOV EAX,DWORD PTR SS:[ESP] E8 02 SUB EAX, A JNZ SHORT Example_ C. E8 A7FEFFFF CALL Example_.00456FE > 59 POP ECX

20 A POP EDX D POP EBP F POP EDI E POP ESI B POP EBX \. C3 RETN 이코드는실제시리얼번호검사를수행한다. 디버깅시코드를분석할때볼수있듯이, 0x C 에위치한 CALL 명령을실행시키지않도록하는많은 jump 명령을볼수있다. 보통원하는결과가나올수있는여러방법들이존재한다. 이러한방법중에는패치, 분석, 재구성또는코드 ( 어셈블리 ) 복사 (ripping) 들을포함한다. 이프로그램에서는단지몇개의방법들이있다. 보다시피위의코드는시리얼키를검사하고사용자와시리얼키간의일치여부에대해알려준다. 다음방법은실제로는적용될수없을지모르지만어떻게리버스엔지니어들이일해야하는지에대해기본적이고간단한아이디어를제공한다. 접근방법 1 ( 분기패치 ) 프로그램흐름을패치하는하나의방법은조건분기수정을통해서이다. 사용자가입력한시리얼키가올바르지않다는것을결정하는시리얼키검사알고리즘이존재하는곳은많다. 여기는, 첫번째검사 : 위의바이너리분석에서볼수있듯이함수는시리얼키길이를아스키문자열로바꾸고첫번째문자가아스키로 1 이며 hex로는 0x31 인지검사한다. 간단한패치는, 0x004571DC의 opcode를더블클릭하고 JE SHORT E5 를 JMP SHORT E5 로바꾼다. 그러면 0x004571DE에위치한 CALL은절대호출되지않는다.

21 두번째검사 : 0x D의조건분기에서도첫번째검사와동일하게적용한다. 그러므로두번째단계에서의코드를바이너리코드패치는다음과같이바꾼다. char first = getchar(length,1,?); //Get first character if(true) { //This is always true char second = getchar(length,2,?); //Get second character if(true) { //This is always true //continue with serial check } else { sendlongshorterror(); //This is never called } } else { sendlongshorterror(); //This is never called }

22 세번째검사 : 마찬가지로조건분기를무조건분기 (JMP) 로패치한다. 일반적으로이런방식으로하면된다. 약간의버그가있지만기본적인아이디어는이해하리라믿는다. 접근방법 2 ( 함수대체 ) 더간단한방법은아래와같이에러메시지함수를수정하여이를성공할때호출되는함수를가리키도록하는것이다. 먼저코드부분을검색해서 thank you for registering 문자열을출력하는부분을찾아라벨을 thank_you 로등록한다. 그리고나서에러메시지를출력하는부분을찾아시작부분에스페이스바를눌러코드를 JMP thank_you 로바꾼다.

23 참고 : 이는프로그래머가모든것을한함수내에다넣지않을만큼현명하다면제대로동작하지않을것이다. 시리얼생성 ( 키생성 ) 여기서는 크래커 가프로그램코드를분석하고, 입력한시리얼이옳은지를검사하는것이아니라항상올바른시리얼키 ( 외부제약의조건없이 ) 를생성하는방법으로등록알고리즘을재구성한다. 시리얼생성알고리즘재구성에대해아래몇가지방법이사용된다. 코드재구성 리버스엔지니어가저수준어셈블리어를고수준프로그래밍언어 (C, C++,.NET, JAVA 등 ) 로변환하는방법으로함수나함수집합의동작을이해하기위한알고리즘의분석 ( 보통디버깅을통해 ). 예제 : - 저수준 : AD > /MOV EDX,DWORD PTR DS:[45E5A4] ; Load username string in EDX B3 MOVZX EDX,BYTE PTR DS:[EDX+EBX-1] ; Get letter in position EBX-1 (in each ; loop the pointer is incr by 1) B8. ADD EBP,EDX ; Add the hexadecimal ASCII value of the letter in EBP (UserCount) BA. INC EBX ; Increase the pointer (EBX) BB. DEC EAX ; Decrease the loop counter BC.^ \JNZ SHORT Example_ AD ; Stop branching only when the loop ; counter reaches zero(0) BE > MOV EBX,0E

24 004570C3. MOV EAX,Example_.0045E5AC C8. MOV EDX,Example_.0045E5BC CD > /MOVZX ECX,BYTE PTR DS:[EAX] ; Get the ASCII char stored in memory ; at EAX (Serial string pointer) D0. MOV DWORD PTR DS:[EDX],ECX ; Store it an array of integer ; (see next operation)? D2. ADD EDX,4 ; Move 4 bytes to the right => An array of 32bit Integer values D5. INC EAX ; Move memory pointer one(1) byte to the right D6. DEC EBX ; Decrease loop counter D7.^ \JNZ SHORT Example_ CD ; Stop branching when loop ; counter reaches zero(0) D9 > CMP BYTE PTR DS:[45E5AC],7B ; Compare first character ; from the ASCII value with 0x7B ( "{" ) //Code omitted - 고수준 ( 자바 ) String username = getusername(); int sum = 0; for(int i = 0;i < username.length(); i++) { sum += username.charat(i); } String serial = getserial(); int[] array = new int[255]; if(serial.length()<=255) { //Well, Java is safe but we don t need exceptions popping around. for(int i = 0;i < serial.length(); i++) { array[i] = serial.charat(i); } } If(serial.charAt(0) == { ) { //Code omitted 코드복사 ( ripping ) 이는프로그램의바이너리코드를다른프로그램이나직접어셈블리코딩을지원하는상위프로그래밍언어안에복사하는여러방법들을말한다. 코드복사방법은디버깅에드는시간과노력이코드재구성에비해상당히줄어들기때문에코드재구성과는상관없다. 예제 : - 저수준 :

25 004570AD > /MOV EDX,DWORD PTR DS:[45E5A4] ; Load username string in EDX B3 MOVZX EDX,BYTE PTR DS:[EDX+EBX-1] ; Get letter in position EBX-1 (in each ; loop the pointer is incr by 1) B8. ADD EBP,EDX ; Add the hexadecimal ASCII value of the letter in EBP (UserCount) BA. INC EBX ; Increase the pointer (EBX) BB. DEC EAX ; Decrease the loop counter BC.^ \JNZ SHORT Example_ AD ; Stop branching only ; when the loop counter reaches zero(0) BE > MOV EBX,0E C3. MOV EAX,Example_.0045E5AC C8. MOV EDX,Example_.0045E5BC CD > /MOVZX ECX,BYTE PTR DS:[EAX] ; Get the ASCII char stored ; in memory at EAX (Serial string pointer) D0. MOV DWORD PTR DS:[EDX],ECX ; Store it an array of integer ; (see next operation)? D2. ADD EDX,4 ; Move 4 bytes to the right => An array of 32bit Integer values D5. INC EAX ; Move memory pointer one(1) byte to the right D6. DEC EBX ; Decrease loop counter D7.^ \JNZ SHORT Example_ CD ; Stop branching when ; loop counter reaches zero(0) D9 > CMP BYTE PTR DS:[45E5AC],7B ; Compare first character ; from the ASCII value with 0x7B ( "{" ) //Code omitted - 고수준복사 (High Level Rip): //Code omitted getusername(username); getpassword(password); user_length := length(username); pass_length := length(password); MOV EAX,user_length MOV EBX,1 MOV EDX,&username MOVZX EDX,BYTE [EDX+EBX-1] ADD EBP,EDX INC EBX DEC EAX

26 end; //Code omitted 기타 라이센스서비스의사용은리버스엔지니어와키생성의위험을증가시킨다. 나는당신의소프트웨어에다른회사의프로그램컴포넌트와함께구현하는것을반대하지않으며그것이보안상의결점이라고생각하지않는다. 이를보안위험요소라고하는것은구현상의불완전성과소프트웨어를이해하기위해보낸시간이부족해서이다.

hlogin2

hlogin2 0x02. Stack Corruption off-limit Kernel Stack libc Heap BSS Data Code off-limit Kernel Kernel : OS Stack libc Heap BSS Data Code Stack : libc : Heap : BSS, Data : bss Code : off-limit Kernel Kernel : OS

More information

Deok9_Exploit Technique

Deok9_Exploit Technique Exploit Technique CodeEngn Co-Administrator!!! and Team Sur3x5F Member Nick : Deok9 E-mail : DDeok9@gmail.com HomePage : http://deok9.sur3x5f.org Twitter :@DDeok9 > 1. Shell Code 2. Security

More information

INTRO Basic architecture of modern computers Basic and most used assembly instructions on x86 Installing an assembly compiler and RE tools Practice co

INTRO Basic architecture of modern computers Basic and most used assembly instructions on x86 Installing an assembly compiler and RE tools Practice co Basic reverse engineering on x86 This is for those who want to learn about basic reverse engineering on x86 (Feel free to use this, email me if you need a keynote version.) v0.1 SeungJin Beist Lee beist@grayhash.com

More information

CKKeyPro 적용가이드

CKKeyPro 적용가이드 3.20 사이버테러악성코드분석보고서 라온시큐어보안기술연구팀 작성일 : 2013. 03 페이지 : 1/15 Introduction 2013년 3월 20일오후, MBC, KBS, YTN, 농협, 신한은행, 제주은행전산망장애가동시에발생하였다. 피해기관들의호스트약 500여대에오류메시지가화면에나타났으며악성코드에감염된호스트는사용할수없는상태가되었다. 현재까지정확한침투경로가밝혀지지않고있다.

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

Microsoft Word - FunctionCall

Microsoft Word - FunctionCall Function all Mechanism /* Simple Program */ #define get_int() IN KEYOARD #define put_int(val) LD A val \ OUT MONITOR int add_two(int a, int b) { int tmp; tmp = a+b; return tmp; } local auto variable stack

More information

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

Microsoft PowerPoint - a6.ppt [호환 모드] 이장의내용 6 장조건부처리 부울과비교명령어 조건부점프 조건부루프명령어 조건부구조 컴퓨터정보통신 어셈블리언어 2 6.2 부울과비교명령어 부울명령어 Instructions ti 동작 AND dst, src OR dst, src XOR dst, src NOT dst dst dst AND src dst dst OR src dst dst XOR src dst NOT

More information

No Slide Title

No Slide Title Copyright, 2017 Multimedia Lab., UOS 시스템프로그래밍 (Assembly Code and Calling Convention) Seong Jong Choi chois@uos.ac.kr Multimedia Lab. Dept. of Electrical and Computer Eng. University of Seoul Seoul, Korea

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

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

Microsoft PowerPoint - a8a.ppt [호환 모드] 이장의내용 8 장고급프로시저 스택프레임 재귀 (Recursion) Invoke, Addr, Proc, Proto 디렉티브 다중모듈프로그램작성 2 8.2 스택프레임 Stack Frame ( 또는 activation record) procedure 의다음사항을저장한 영역 urn address passed parameter ( 스택매개변수 ) saved register

More information

=

= written by vangelis(vangelis@wowhacker.org) 0 0000 8 1000 1 0001 9 1001 2 0010 10 1010 3 0011 11 1011 4 0100 12 1100 5 0101 13 1101 6 0110 14 1110 7 0111 15 1111 110112 + 100012 = 1011002 110 0000 0101

More information

IDA 5.x Manual 07.02.hwp

IDA 5.x Manual 07.02.hwp IDA 5.x Manual - Manual 01 - 영리를 목적으로 한 곳에서 배포금지 Last Update 2007. 02 이강석 / certlab@gmail.com 어셈블리어 개발자 그룹 :: 어셈러브 http://www.asmlove.co.kr - 1 - IDA Pro 는 Disassembler 프로그램입니다. 기계어로 되어있는 실행파일을 어셈블리언어

More information

chap 5: Trees

chap 5: Trees 5. Threaded Binary Tree 기본개념 n 개의노드를갖는이진트리에는 2n 개의링크가존재 2n 개의링크중에 n + 1 개의링크값은 null Null 링크를다른노드에대한포인터로대체 Threads Thread 의이용 ptr left_child = NULL 일경우, ptr left_child 를 ptr 의 inorder predecessor 를가리키도록변경

More information

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

Microsoft PowerPoint - a10.ppt [호환 모드] Structure Chapter 10: Structures t and Macros Structure 관련된변수들의그룹으로이루어진자료구조 template, pattern field structure를구성하는변수 (cf) C언어의 struct 프로그램의 structure 접근 entire structure 또는 individual fields Structure는

More information

Microsoft Word - building the win32 shellcode 01.doc

Microsoft Word - building the win32 shellcode 01.doc Win32 Attack 1. Local Shellcode 작성방법 By 달고나 (Dalgona@wowhacker.org) Email: zinwon@gmail.com Abstract 이글은 MS Windows 환경에서 shellcode 를작성하는방법에대해서설명하고있다. Win32 는 *nix 환경과는사뭇다른 API 호출방식을사용하기때문에조금복잡하게둘러서 shellcode

More information

Microsoft PowerPoint - 15-MARS

Microsoft PowerPoint - 15-MARS MARS 소개및실행 어셈블리프로그램실행예 순천향대학교컴퓨터공학과이상정 1 MARS 소개및실행 순천향대학교컴퓨터공학과 2 MARS 소개 MARS MIPS Assembler and Runtime Simulator MIPS 어셈블리언어를위한소프트웨어시뮬레이터 미주리대학 (Missouri State Univ.) 의 Ken Vollmar 등이자바로개발한교육용시뮬레이터

More information

Microsoft Word - Static analysis of Shellcode.doc

Microsoft Word - Static analysis of Shellcode.doc Static analysis of Shellcode By By Maarten Van Horenbeeck 2008.09.03 2008.09.03 본문서에서는악성코드에서사용하는난독화되어있는쉘코드 를분석하는방법에대한 Maarten Van Horenbeeck 의글을번역 한것이다. Hacking Group OVERTIME OVERTIME force

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

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

Microsoft PowerPoint - hy2-12.pptx

Microsoft PowerPoint - hy2-12.pptx 2.4 명령어세트 (instruction set) 명령어세트 CPU 가지원하는기계어명령어들의집합 명령어연산의종류 데이터전송 : 레지스터 / 메모리간에데이터이동 산술연산 : 덧셈, 뺄셈, 곱셈및나눗셈 논리연산 : 비트들간의 AND, OR, NOT 및 XOR 연산 입출력 (I/O) : CPU( 레지스터 ) 와외부장치들간의데이터이동 프로그램제어 : 분기, 서브루틴호출

More information

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

Microsoft PowerPoint - a5a.ppt [호환 모드] 5 장프로시저 (1) 책의라이브러리사용 5 장전반부 : 책의링크라이브러리 외부링크라이브러리개요 라이브러리프로시저호출 라이브러리링크 라이브러리프로시저 예제 연세대학교컴퓨터정보통신어셈블리언어 2 저자제공링크라이브러리 라이브러리파일 어셈블된프로시저를포함하고있는 OBJ 파일들을모아놓은파일 ( 확장자.LIB) 각 OBJ file 에는하나이상의 procedure 가들어있음

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

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

Microsoft PowerPoint - a9.ppt [호환 모드] 9.1 이장의내용 9 장. 스트링과배열 스트링프리미티브명령어 2 차원배열 정수배열검색및정렬 컴퓨터정보통신 어셈블리언어 2 9.2 스트링프리미티브명령어 String Primitive Instructions 의동작 String Primitive Instructions Instructions 설명 동작 MOVS(B,W,D) Move string data M[EDI]

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

A Hierarchical Approach to Interactive Motion Editing for Human-like Figures

A Hierarchical Approach to Interactive Motion Editing for Human-like Figures 단일연결리스트 (Singly Linked List) 신찬수 연결리스트 (linked list)? tail 서울부산수원용인 null item next 구조체복습 struct name_card { char name[20]; int date; } struct name_card a; // 구조체변수 a 선언 a.name 또는 a.date // 구조체 a의멤버접근 struct

More information

<BDC3B8AEBEF320B9F8C8A320C0DBBCBA20B7E7C6BEC0BB20BBCCBEC6B3BBBCAD D466F E687770>

<BDC3B8AEBEF320B9F8C8A320C0DBBCBA20B7E7C6BEC0BB20BBCCBEC6B3BBBCAD D466F E687770> 시리얼번호작성루틴을뽑아내서 Brute-Force 돌리기.. 작성일 : 2005년가을작성자 : graylynx (graylynx at gmail.com) 크랙미정보 GOAL : Find the correct password No patching allowed Difficulty : 2/10 This is an exercise on brute-attacking.

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

Reusing Dynamic Linker For Exploitation Author : Date : 2012 / 05 / 13 Contact : Facebook : fb.me/kwonpwn

Reusing Dynamic Linker For Exploitation Author :  Date : 2012 / 05 / 13 Contact : Facebook : fb.me/kwonpwn Reusing Dynamic Linker For Exploitation Author : pwn3r @ B10S @WiseGuyz Date : 2012 / 05 / 13 Contact : austinkwon2@gmail.com Facebook : fb.me/kwonpwn3r Abstract 대부분의 Unix 에선공유라이브러리를메모리에로드하고프로그램과 link

More information

Microsoft Word - ExecutionStack

Microsoft Word - ExecutionStack Lecture 15: LM code from high level language /* Simple Program */ external int get_int(); external void put_int(); int sum; clear_sum() { sum=0; int step=2; main() { register int i; static int count; clear_sum();

More information

02.Create a shellcode that executes "/bin/sh" Excuse the ads! We need some help to keep our site up. List Create a shellcode that executes "/bin/sh" C

02.Create a shellcode that executes /bin/sh Excuse the ads! We need some help to keep our site up. List Create a shellcode that executes /bin/sh C 02.Create a shellcode that executes "/bin/sh" Excuse the ads! We need some help to keep our site up. List Create a shellcode that executes "/bin/sh" C language Assembly code Change permissions(seteuid())

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

3.20 테러 악성코드바이너리분석 손충호 (StolenByte) WOWHACKER Group 해당문서는 WOWHACKER Group 의문서이므로, 무단도용및수 정및변조는할수없습니다. 페이지 1 / 20

3.20 테러 악성코드바이너리분석 손충호 (StolenByte) WOWHACKER Group 해당문서는 WOWHACKER Group 의문서이므로, 무단도용및수 정및변조는할수없습니다. 페이지 1 / 20 3.20 테러 악성코드바이너리분석 손충호 (StolenByte) stolenbyte@wowhacker.org WOWHACKER Group 2013-03-20 해당문서는 WOWHACKER Group 의문서이므로, 무단도용및수 정및변조는할수없습니다. 페이지 1 / 20 전체적인공격프로세스 페이지 2 / 20 1. 바이너리가사용할 LoadLibrary 하여함수 Load

More information

슬라이드 1

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

More information

Microsoft PowerPoint - ch09 - 연결형리스트, Stack, Queue와 응용 pm0100

Microsoft PowerPoint - ch09 - 연결형리스트, Stack, Queue와 응용 pm0100 2015-1 프로그래밍언어 9. 연결형리스트, Stack, Queue 2015 년 5 월 4 일 교수김영탁 영남대학교공과대학정보통신공학과 (Tel : +82-53-810-2497; Fax : +82-53-810-4742 http://antl.yu.ac.kr/; E-mail : ytkim@yu.ac.kr) 연결리스트 (Linked List) 연결리스트연산 Stack

More information

Microsoft Word - Reversing Engineering Code with IDA Pro-4-1.doc

Microsoft Word - Reversing Engineering Code with IDA Pro-4-1.doc Reverse Engineering Code with IDA Pro By Dan Kaminsky, Justin Ferguson, Jason Larsen, Luis Miras, Walter Pearce 정리 : vangelis(securityproof@gmail.com) 이글은 Reverse Engineering Code with IDA Pro(2008년출판

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

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 1. data-addressing mode CHAPTER 6 Addressing Modes 2. use of data-address mode to form assembly language statements 3. op of program memory address mode 4. use of program memory address mode to form assembly

More information

11장 포인터

11장 포인터 누구나즐기는 C 언어콘서트 제 9 장포인터 이번장에서학습할내용 포인터이란? 변수의주소 포인터의선언 간접참조연산자 포인터연산 포인터와배열 포인터와함수 이번장에서는포인터의기초적인지식을학습한다. 포인터란? 포인터 (pointer): 주소를가지고있는변수 메모리의구조 변수는메모리에저장된다. 메모리는바이트단위로액세스된다. 첫번째바이트의주소는 0, 두번째바이트는 1, 변수와메모리

More information

vi 사용법

vi 사용법 유닉스프로그래밍및실습 gdb 사용법 fprintf 이용 단순디버깅 확인하고자하는코드부분에 fprintf(stderr, ) 를이용하여그지점까지도달했는지여부와관심있는변수의값을확인 여러유형의단순한문제를확인할수있음 그러나자세히살펴보기위해서는디버깅툴필요 int main(void) { int count; long large_no; double real_no; init_vars();

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 Word - 1. ARM Assembly 실습_xp2.doc

Microsoft Word - 1. ARM Assembly 실습_xp2.doc ARM asm 의구조 ARM Assembly 실습 1. 기본골격 AREA armex,code, READONLY ;Mark first instruction to execute start MOV r0, #10 MOV r1,#3 ADD r0, r0, r1 ; r0 = r0 + r1 stop NOP NOP B stop ; Mark end of file 위의 asm의구조를이해하고실행해보세요.

More information

중간고사

중간고사 중간고사 예제 1 사용자로부터받은두개의숫자 x, y 중에서큰수를찾는알고리즘을의사코드로작성하시오. Step 1: Input x, y Step 2: if (x > y) then MAX

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

목차 1. 소개... 3 가. BOF란?... 3 나. 윈도우 BOF 개발환경및사용툴 Shellcode 작성하기... 4 가. cmd 쉘 ) 소스코드작성 ) 디스어셈블리 ) 어셈블리코드편집 간단

목차 1. 소개... 3 가. BOF란?... 3 나. 윈도우 BOF 개발환경및사용툴 Shellcode 작성하기... 4 가. cmd 쉘 ) 소스코드작성 ) 디스어셈블리 ) 어셈블리코드편집 간단 기술문서 `09. 11. 02. 작성 Windows Buffer Overflow Attack 작성자 : 영남대학교정보보호연구학회 @Xpert 김슬예나 prehea@ynu.ac.kr 1 목차 1. 소개... 3 가. BOF란?... 3 나. 윈도우 BOF... 3 2. 개발환경및사용툴... 3 3. Shellcode 작성하기... 4 가. cmd 쉘... 4

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 @ Lesson 3 if, if else, if else if, switch case for, while, do while break, continue : System.in, args, JOptionPane for (,, ) @ vs. logic data method variable Data Data Flow (Type), ( ) @ Member field

More information

1. 자바프로그램기초 및개발환경 2 장 & 3 장. 자바개발도구 충남대학교 컴퓨터공학과

1. 자바프로그램기초 및개발환경 2 장 & 3 장. 자바개발도구 충남대학교 컴퓨터공학과 1. 자바프로그램기초 및개발환경 2 장 & 3 장. 자바개발도구 충남대학교 컴퓨터공학과 학습내용 1. Java Development Kit(JDK) 2. Java API 3. 자바프로그래밍개발도구 (Eclipse) 4. 자바프로그래밍기초 2 자바를사용하려면무엇이필요한가? 자바프로그래밍개발도구 JDK (Java Development Kit) 다운로드위치 : http://www.oracle.com/technetwork/java/javas

More information

Microsoft Word - PE Infection ? How to Inject a dll.doc

Microsoft Word - PE Infection ? How to Inject a dll.doc Black- out Frenzy [ B] (F) Security Researcher Center B0Frenzy.freehostia.com PE Infection How to Inject a dll www.mihanit.net Thank you to my friends who help me in this research (K053,Heli, L U C I F

More information

예제와 함께 배워보는 OllyDbg사용법

예제와 함께 배워보는 OllyDbg사용법 초보자를위한예제와함께 배워보는 OllyDbg 사용법 -1 부 - By Beist Security Study Group (http://beist.org) 요약 : 이문서는 Ollydbg 프로그램을이용하여 Reverse Engineering을하는방법에대해서다룬다. 초보자를위하여작성된문서이며예제와함께 Ollydbg의각기능에대해서알아본다. 주로기초적인내용을다루고있다.

More information

(Microsoft Word - \270\256\271\366\275\314 \271\370\277\252.doc)

(Microsoft Word - \270\256\271\366\275\314 \271\370\277\252.doc) Smashing the Signature (Korean Translation V.08-01 01) 안티바이러스의시그니쳐탐색기법을우회하기위해 PE 파일의 헤더및속성을수정하여코드섹션을암호화하는기법을소개함. Hacking Group OVERTIME MRB00 2008.09.10 Title:

More information

Microsoft Word - Heap_Spray.doc

Microsoft Word - Heap_Spray.doc Heap Spray 본문서는 최근 웹 브라우저를 이용한 공격에 사용되는 Heap Spray 기법에 대한 내용을 수록하였다. 관련 내용에 대하여 많은 도움이 되기 바란다. 문서 내용은 초보자도 쉽게 이해할 수 있도록 관련 내용에 대한 설명을 포함하였다. Hacking Group OVERTIME force< forceteam01@gmail.com > 2007.05.13

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

<4D F736F F D20B9D9C0CCB7B5B9D9C0CCB7AFBDBA5FBCF6C1A42E646F63>

<4D F736F F D20B9D9C0CCB7B5B9D9C0CCB7AFBDBA5FBCF6C1A42E646F63> Virut 바이러스공격 ASEC 분석 1 팀고흥환선임연구원 해마다접수되는악성코드의통계를보면대부분이인터넷웜또는트로이목마가대부분을차지하며, 파일에기생하는바이러스는그수가적어지는것이추세이다. 그도그럴것이최근의악성코드특징은개인의능력과시가아닌돈과연관되는악성코드작성이대부분이기때문이다. 그렇다면 Virut 바이러스가인터넷웜과트로이목마를제치고국내뿐만아니라해외에서도큰피해를입히고있는이유가무엇인지,

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 Black Falcon 입팀과제 Yoda's Write by FireM@rine INDEX Protector 02 CONTENTS 파일보호기법 (Protector) Protector 사용목적 크래킹 (Crackin) 방지 프로그램이크랙되어서불법적으로사용되는것방지 ( 게임보앆프로그램 ) 코드및리소스보호 PE 파일자체를보호하며파일이실행되었을때프로세스메모리를보호하여덤프를뜨지못하게함

More information

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

금오공대 컴퓨터공학전공 강의자료 C 프로그래밍프로젝트 Chap 13. 포인터와배열! 함께이해하기 2013.10.02. 오병우 컴퓨터공학과 13-1 포인터와배열의관계 Programming in C, 정재은저, 사이텍미디어. 9 장참조 ( 교재의 13-1 은읽지말것 ) 배열이름의정체 배열이름은 Compile 시의 Symbol 로서첫번째요소의주소값을나타낸다. Symbol 로서컴파일시에만유효함 실행시에는메모리에잡히지않음

More information

Microsoft Word - Reverse Engineering Code with IDA Pro-2-1.doc

Microsoft Word - Reverse Engineering Code with IDA Pro-2-1.doc Reverse Engineering Code with IDA Pro By Dan Kaminsky, Justin Ferguson, Jason Larsen, Luis Miras, Walter Pearce 정리 : vangelis(securityproof@gmail.com) 이글은 Reverse Engineering Code with IDA Pro(2008년출판

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

Microsoft PowerPoint - chap06-5 [호환 모드]

Microsoft PowerPoint - chap06-5 [호환 모드] 2011-1 학기프로그래밍입문 (1) chapter 06-5 참고자료 변수의영역과데이터의전달 박종혁 Tel: 970-6702 Email: jhpark1@seoultech.ac.kr h k 한빛미디어 출처 : 뇌를자극하는 C프로그래밍, 한빛미디어 -1- ehanbit.net 자동변수 지금까지하나의함수안에서선언한변수는자동변수이다. 사용범위는하나의함수내부이다. 생존기간은함수가호출되어실행되는동안이다.

More information

제 14 장포인터활용 유준범 (JUNBEOM YOO) Ver 본강의자료는생능출판사의 PPT 강의자료 를기반으로제작되었습니다.

제 14 장포인터활용 유준범 (JUNBEOM YOO) Ver 본강의자료는생능출판사의 PPT 강의자료 를기반으로제작되었습니다. 제 14 장포인터활용 유준범 (JUNBEOM YOO) Ver. 2.0 jbyoo@konkuk.ac.kr http://dslab.konkuk.ac.kr 본강의자료는생능출판사의 PPT 강의자료 를기반으로제작되었습니다. 이번장에서학습할내용 이중포인터란무엇인가? 포인터배열 함수포인터 다차원배열과포인터 void 포인터 포인터는다양한용도로유용하게활용될수있습니다. 2 이중포인터

More information

Chapter ...

Chapter ... Chapter 4 프로세서 (4.9절, 4.12절, 4.13절) Contents 4.1 소개 4.2 논리 설계 기초 4.3 데이터패스 설계 4.4 단순한 구현 방법 4.5 파이프라이닝 개요*** 4.6 파이프라이닝 데이터패스 및 제어*** 4.7 데이터 해저드: 포워딩 vs. 스톨링*** 4.8 제어 해저드*** 4.9 예외 처리*** 4.10 명령어 수준

More information

OCW_C언어 기초

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

More information

PowerPoint Template

PowerPoint Template BoF 원정대서비스 목차 환경구성 http://www.hackerschool.org/hs_boards/zboard.php?id=hs_notice&no=1170881885 전용게시판 http://www.hackerschool.org/hs_boards/zboard.php?id=bof_fellowship Putty War game 2 LOB 란? 해커스쿨에서제공하는

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

임베디드시스템설계강의자료 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

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

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 Chapter 06 반복문 01 반복문의필요성 02 for문 03 while문 04 do~while문 05 기타제어문 반복문의의미와필요성을이해한다. 대표적인반복문인 for 문, while 문, do~while 문의작성법을 알아본다. 1.1 반복문의필요성 반복문 동일한내용을반복하거나일정한규칙으로반복하는일을수행할때사용 프로그램을좀더간결하고실제적으로작성할수있음.

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

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

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

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 - 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

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 Chapter 10 포인터 01 포인터의기본 02 인자전달방법 03 포인터와배열 04 포인터와문자열 변수의주소를저장하는포인터에대해알아본다. 함수의인자를값과주소로전달하는방법을알아본다. 포인터와배열의관계를알아본다. 포인터와문자열의관계를알아본다. 1.1 포인터선언 포인터선언방법 자료형 * 변수명 ; int * ptr; * 연산자가하나이면 1 차원포인터 1 차원포인터는일반변수의주소를값으로가짐

More information

Frama-C/JESSIS 사용법 소개

Frama-C/JESSIS 사용법 소개 Frama-C 프로그램검증시스템소개 박종현 @ POSTECH PL Frama-C? C 프로그램대상정적분석도구 플러그인구조 JESSIE Wp Aorai Frama-C 커널 2 ROSAEC 2011 동계워크샵 @ 통영 JESSIE? Frama-C 연역검증플러그인 프로그램분석 검증조건추출 증명 Hoare 논리에기초한프로그램검증도구 사용법 $ frama-c jessie

More information

chap x: G입력

chap x: G입력 재귀알고리즘 (Recursive Algorithms) 재귀알고리즘의특징 문제자체가재귀적일경우적합 ( 예 : 피보나치수열 ) 이해하기가용이하나, 비효율적일수있음 재귀알고리즘을작성하는방법 재귀호출을종료하는경계조건을설정 각단계마다경계조건에접근하도록알고리즘의재귀호출 재귀알고리즘의두가지예 이진검색 순열 (Permutations) 1 장. 기본개념 (Page 19) 이진검색의재귀알고리즘

More information

T100MD+

T100MD+ User s Manual 100% ) ( x b a a + 1 RX+ TX+ DTR GND TX+ RX+ DTR GND RX+ TX+ DTR GND DSR RX+ TX+ DTR GND DSR [ DCE TYPE ] [ DCE TYPE ] RS232 Format Baud 1 T100MD+

More information

Tcl의 문법

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

More information

<BEEEBCC0BAEDB8AEBEEEC1A4B8AE2E687770>

<BEEEBCC0BAEDB8AEBEEEC1A4B8AE2E687770> Parse and Parse Assembly ( 어셈블리어입문자를위한 어셈블리어자료들의모음 ) ## 목차 ## 0x01. ----------Introduce----------- 0x02. 어셈블리언어란? & 배우는목적 0x03. 어셈블리언어를위한기본지식 0x04. 어셈블리명령어의구성 0x05. 주소지정방식의이해 0x06. 어셈블리명령어정리 0x07. 어셈블리명령어상세

More information

Microsoft PowerPoint - es-arduino-lecture-03

Microsoft PowerPoint - es-arduino-lecture-03 임베디드시스템개론 : Arduino 활용 Lecture #3: Button Input & FND Control 2012. 3. 25 by 김영주 강의목차 디지털입력 Button switch 입력 Button Debounce 7-Segment FND : 직접제어 7-Segment FND : IC 제어 2 디지털입력 : Switch 입력 (1) 실습목표 아두이노디지털입력처리실습

More information

17장 클래스와 메소드

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

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

PowerPoint Presentation

PowerPoint Presentation Package Class 3 Heeseung Jo 목차 section 1 패키지개요와패키지의사용 section 2 java.lang 패키지의개요 section 3 Object 클래스 section 4 포장 (Wrapper) 클래스 section 5 문자열의개요 section 6 String 클래스 section 7 StringBuffer 클래스 section

More information

슬라이드 1

슬라이드 1 CCS v4 사용자안내서 CCSv4 사용자용예제따라하기안내 0. CCS v4.x 사용자 - 준비사항 예제에사용된 CCS 버전은 V4..3 버전이며, CCS 버전에따라메뉴화면이조금다를수있습니다. 예제실습전준비하기 처음시작하기예제모음집 CD 를 PC 의 CD-ROM 드라이브에삽입합니다. 아래안내에따라, 예제소스와헤더파일들을 PC 에설치합니다. CD 드라이브 \SW\TIDCS\TIDCS_DSP80x.exe

More information

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

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

More information

목 차 1. 개요 취약점분석추진배경 취약점요약 취약점정보 취약점대상시스템목록 분석 공격기법및기본개념 시나리오 공격코드

목 차 1. 개요 취약점분석추진배경 취약점요약 취약점정보 취약점대상시스템목록 분석 공격기법및기본개념 시나리오 공격코드 취약점분석보고서 [Aviosoft Digital TV Player Professional 1.x Stack Buffer Overflow] 2012-08-08 RedAlert Team 강동우 목 차 1. 개요... 1 1.1. 취약점분석추진배경... 1 1.2. 취약점요약... 1 1.3. 취약점정보... 1 1.4. 취약점대상시스템목록... 1 2. 분석...

More information

윈도우즈프로그래밍(1)

윈도우즈프로그래밍(1) 제어문 (2) For~Next 문 윈도우즈프로그래밍 (1) ( 신흥대학교컴퓨터정보계열 ) 2/17 Contents 학습목표 프로그램에서주어진특정문장을부분을일정횟수만큼반복해서실행하는문장으로 For~Next 문등의구조를이해하고활용할수있다. 내용 For~Next 문 다중 For 문 3/17 제어문 - FOR 문 반복문 : 프로그램에서주어진특정문장들을일정한횟수만큼반복해서실행하는문장

More information

Chapter 4. LISTS

Chapter 4. LISTS C 언어에서리스트구현 리스트의생성 struct node { int data; struct node *link; ; struct node *ptr = NULL; ptr = (struct node *) malloc(sizeof(struct node)); Self-referential structure NULL: defined in stdio.h(k&r C) or

More information

Microsoft PowerPoint - 부호기와 복호기.PPT

Microsoft PowerPoint - 부호기와 복호기.PPT 논리회로실험부호기와복호기 2005. 5. 3. 부호기와복호기란? 이론실험내용 개요 Encoder & Decoder 서로다른부호간의변환에사용되는것으로디지털신호를압축하거나전송시깨지지않도록바꾸는등여러가지목적에의해부호화라는장치와부호화되어전송되어온신호를다시원래의디지털신호로복호하는장치들을말한다. CODEC(enCOder DECoder) 이라고도한다. 기타 10진 to

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

Microsoft PowerPoint - chap05-제어문.pptx

Microsoft PowerPoint - chap05-제어문.pptx int num; printf( Please enter an integer: "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); 1 학습목표 제어문인,, 분기문에 대해 알아본다. 인 if와 switch의 사용 방법과 사용시 주의사항에 대해 알아본다.

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

Data Structure

Data Structure Function & Pointer C- 언어의활용을위한주요기법 (3) Dong Kyue Kim Hanyang University dqkim@hanyang.ac.kr 함수의인자전달 함수의인자전달 함수의인자전달방식 인자전달의기본방식은복사다. 함수호출시전달되는값을매개변수를통해서전달받는데, 이때에값의복사가일어난다. int main(void) int val = 10;

More information

2007_2_project4

2007_2_project4 Programming Methodology Instructor: Kyuseok Shim Project #4: external sort with template Due Date: 0:0 a.m. between 2007-12-2 & 2007-12-3 Introduction 이프로젝트는 C++ 의 template을이용한 sorting algorithm과정렬해야할데이터의크기가

More information

<4D F736F F F696E74202D204B FC7C1B7CEB1D7B7A55F F6E48616E646C6572B8A6C5EBC7D1BFA1B7AFB0CBC3E2B9D7BCF6C1A

<4D F736F F F696E74202D204B FC7C1B7CEB1D7B7A55F F6E48616E646C6572B8A6C5EBC7D1BFA1B7AFB0CBC3E2B9D7BCF6C1A 강연소개 Exception Handler 를통한에러검출및수정 디버깅을즐겨하십니까..? 에러를만나면반갑습니까..? 전화로버그보고를받았나요..? 잡히지않는버그!!!! 따분한강의 졸아도좋습니다!!!! 강연자소개 테스터 온라인게임클라이언트개발 로컬라이즈및해외지원업무 디버깅, 최적화, 호환성향상에관심 강연대상 x86 환경에서 Windows 프로그래밍 디버깅 / 에러추적은

More information

hlogin7

hlogin7 0x07. Return Oriented Programming ROP? , (DEP, ASLR). ROP (Return Oriented Programming) (excutable memory) rop. plt, got got overwrite RTL RTL Chain DEP, ASLR gadget Basic knowledge plt, got call function

More information

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

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

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 @ Lesson 2... ( ). ( ). @ vs. logic data method variable behavior attribute method field Flow (Type), ( ) member @ () : C program Method A ( ) Method B ( ) Method C () program : Java, C++, C# data @ Program

More information

Microsoft PowerPoint - chap10-함수의활용.pptx

Microsoft PowerPoint - chap10-함수의활용.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

Visual Basic 반복문

Visual Basic 반복문 학습목표 반복문 For Next문, For Each Next문 Do Loop문, While End While문 구구단작성기로익히는반복문 2 5.1 반복문 5.2 구구단작성기로익히는반복문 3 반복문 주어진조건이만족하는동안또는주어진조건이만족할때까지일정구간의실행문을반복하기위해사용 For Next For Each Next Do Loop While Wend 4 For

More information

Microsoft PowerPoint - ch10 - 이진트리, AVL 트리, 트리 응용 pm0600

Microsoft PowerPoint - ch10 - 이진트리, AVL 트리, 트리 응용 pm0600 균형이진탐색트리 -VL Tree delson, Velskii, Landis에의해 1962년에제안됨 VL trees are balanced n VL Tree is a binary search tree such that for every internal node v of T, the heights of the children of v can differ by at

More information

The_IDA_Pro_Book

The_IDA_Pro_Book The IDA Pro Book Hacking Group OVERTIME force (forceteam01@gmail.com) GETTING STARTED WITH IDA IDA New : Go : IDA Previous : IDA File File -> Open Processor type : Loading Segment and Loading Offset x86

More information

SRC PLUS 제어기 MANUAL

SRC PLUS 제어기 MANUAL ,,,, DE FIN E I N T R E A L L O C E N D SU B E N D S U B M O TIO

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