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

Similar documents
=

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

hlogin2

<BEEEBCC0BAEDB8AEBEEEC1A4B8AE2E687770>

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

Microsoft PowerPoint - hy2-12.pptx

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

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

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

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

PowerPoint 프레젠테이션

Deok9_Exploit Technique

Microsoft Word - 1. ARM Assembly 실습_xp2.doc

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

(1) 주소지정방식 Address Mode 메모리접근 분기주소 명령어 직접번지 Reg. 지정 Reg. 간접 Base Index 간접 Immediate 상대번지 절대번지 Long 주소 Reg. 간접 Byte Access Bit Access 내부 Data M

untitled

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

9

No Slide Title

Microsoft PowerPoint - CHAP-03 [호환 모드]

T100MD+

Microsoft Word - Heap_Spray.doc

< E20C6DFBFFEBEEE20C0DBBCBAC0BB20C0A7C7D12043BEF0BEEE20492E707074>

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

IDA 5.x Manual hwp

학습목차 r 컴퓨터본체에서 CPU 의위치살펴보기 r CPU 의성능 r CPU 의기능 r CPU 의조직 r 레지스터의조직 r 명령어사이클 r 명령어파이프라이닝 컴퓨터구조 2 9. CPU 조직과기능

hwp

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

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

OCW_C언어 기초

온라인 IT 교육최강 ( 강의정보처리필기강사조대호 차시명 [CA-06 강 ] 프로세서와명령어차시 6 차시 학습내용 프로세서와명령어 학습목표 컴퓨터의구조와프로세서에대해이해할수있다 컴퓨터의명령어에대해이해할수있다 학습내용 1. 컴퓨터의구성 - 1

<4D F736F F F696E74202D20BBB7BBB7C7D15F FBEDFB0A3B1B3C0B05FC1A638C0CFC2F72E BC8A3C8AF20B8F0B5E55D>

예제 1.1 ( 관계연산자 ) >> A=1:9, B=9-A A = B = >> tf = A>4 % 4 보다큰 A 의원소들을찾을경우 tf = >> tf = (A==B) % A

Microsoft PowerPoint - chap04-연산자.pptx

OCW_C언어 기초

CKKeyPro 적용가이드

Microsoft PowerPoint - chap05-제어문.pptx

시스템 프로그래밍.hwp

Microsoft PowerPoint - chap-06.pptx

chap x: G입력

PowerPoint 프레젠테이션

ARM Reverse Engineering

프로그램을 학교 등지에서 조금이라도 배운 사람들을 위한 프로그래밍 노트 입니다. 저 역시 그 사람들 중 하나 입니다. 중고등학교 시절 학교 도서관, 새로 생긴 시립 도서관 등을 다니며 책을 보 고 정리하며 어느정도 독학으르 공부하긴 했지만, 자주 안하다 보면 금방 잊어

프로그래밍개론및실습 2015 년 2 학기프로그래밍개론및실습과목으로본내용은강의교재인생능출판사, 두근두근 C 언어수업, 천인국지음을발췌수정하였음

MicrocontrollerAcademy_Lab_ST_040709

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

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

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

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

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

PowerPoint 프레젠테이션

Microsoft PowerPoint 명령어.pptx

ºÎ·ÏB

Computer Architecture

슬라이드 1

PowerPoint 프레젠테이션

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

C 프로그래밊 개요

歯설명서_020925_.PDF

<C0FCC0DAB0E8BBEAB1E2B1B8C1B6347E36B0AD20B9AEC1A62BC1A4B4E42E687770>

학습목표 2/33 마이크로프로세서와마이크로컨트롤러의차이를알수있다. 마이크로프로세서에서프로그램이수행되기위한명령어형식과명령어실행절차를알수있다. 프로그램을수행하려면어떤종류의명령어가필요한지알수있다. 현대컴퓨터의기본모델인저장형프로그램컴퓨터의한계점과그한계를완화하려는방법을알수있다.

2 Mitsubishi FX Series Computer Link MITSUBISHI FX SERIES COMPUTER LINK 시스템구성 시스템설정 사용예 사용예 사용예

MR-3000A-MAN.hwp

쉽게 풀어쓴 C 프로그래밍

프로그램카운터 (Program Counter) 명령레지스터 (Instruction Register) 누산기 (AC: Accumulator) 상태레지스터 (Status Register) PSWR(Program Status Word Register) 메모리주소레지스터 (M

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

PowerPoint Presentation

Microsoft PowerPoint - 1-2장 디지털_데이터 .ppt

hlogin7

목차 포인터의개요 배열과포인터 포인터의구조 실무응용예제 C 2

Introduction to LMC

Microsoft PowerPoint - hy2-12.pptx

K&R2 Reference Manual 번역본

<BDC3B8AEBEF320B9F8C8A320C0DBBCBA20B7E7C6BEC0BB20BBCCBEC6B3BBBCAD D466F E687770>

Microsoft PowerPoint - o8.pptx

한국기술교육대학교장영조 한국기술교육대학교전기전자통신공학부 1

PowerPoint 프레젠테이션

The_IDA_Pro_Book

bn2019_2

2 장수의체계 1. 10진수 2. 2진수 3. 8진수와 16진수 4. 진법변환 5. 2진정수연산과보수 6. 2진부동소수점수의표현 한국기술교육대학교전기전자통신공학부전자전공 1

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

/* */

Microsoft PowerPoint - ch07 - 포인터 pm0415

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

Microsoft Word - building the win32 shellcode 01.doc

<4D F736F F F696E74202D20C1A63036C0E520BCB1C5C3B0FA20B9DDBAB928B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

Microsoft PowerPoint - Chapter_04.pptx

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

4장.문장

텀블러514

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

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

Microsoft Word doc

<443A5C4C C4B48555C B3E25C32C7D0B1E25CBCB3B0E8C7C1B7CEC1A7C6AE425CBED0C3E0C7C1B7CEB1D7B7A55C D616E2E637070>

0x00 Contents 0x About Nickster 0x Analaysis 0x Exploit

1.4.3 증감연산자 후치증가 a++: 프로그램의한명령줄이끝나고 1을증가시킨값을다시 a에저장. 후치감소 a--: 프로그램의한명령줄이끝나고 1을감소시킨값을다시 a에저장. 전치증가 ++a: 1을증가시킨값을미리 a에저장하고프로그램을수행. 전치감소 --a: 1을감소시킨값을미리

PowerPoint Template

Microsoft Word - AntiCrackingTechnique.doc

<3130C0E5>

Microsoft PowerPoint - 강의자료8_Chap9 [호환 모드]

Transcription:

이장의내용 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 dst src: source operand dst: destination operand Status Flags - 복습 CPU Status Flags Flags ZF (zero) 동작 결과가 0 이면 set SF (sign) 음수이면 set (MSB와같음 ) CF (carry) unsigned 결과가표현범위벗어나면 set OF (overflow) signed 결과가표현범위벗어나면 set PF (parity) 결과의 1값을갖는 bit수가짝수이면 set AF (auxiliary) 하위 4 비트에대한 carry 발생하면 set 비트단위 (bitwise) 부울연산 operand rule: MOV, 산술연산과같음 컴퓨터정보통신 어셈블리언어 3 컴퓨터정보통신 어셈블리언어 4

AND 명령어 OR 명령어 AND selective clear (mask operation) AND OR selective set OR 0 0 1 1 1 0 1 1 AND 00001111 0 0 0 1 1 1 0 0 1 1 1 0 1 1 OR 00001111 0 0 0 1 1 1 cleared 0 0 0 0 1 0 1 1 unchanged unchanged 0 0 1 1 1 1 1 1 set ( 예 ) 소문자를대문자로변환 ASCII code: 01000001 ~ 01011010 A ~ Z 01100001 ~ 01111010 a ~ z 소문자 대문자변환 : bit 5 를 0 으로바꿈 ( 예 ) 대문자를소문자로변환 대문자 소문자변환 : bit 5를 1로바꿈 mov al,'a' ; AL = 01000001b or al,00100000b ; AL = 01100001b mov al,'a' and al,11011111b ; AL = 01100001b ; AL = 01000001b 컴퓨터정보통신 어셈블리언어 5 컴퓨터정보통신 어셈블리언어 6 XOR 명령어 NOT 명령어 XOR selective complement (invert) XOR NOT 1's 1s complement NOT unchanged XOR 0 0 1 1 1 0 1 1 0 0 0 0 1 1 1 1 0 0 1 1 0 1 0 0 inverted NOT 0 0 1 1 1 0 1 1 1 1 0 0 0 1 0 0 inverted ( 예 ) Parity Flag 검사 (even parity 일때 PF=1) 어떤값을 0과 XOR 연산수행시결과는변하지않으며 flag만설정됨 mov al, 10110101b ; 5 1's xor al, 0 ; PF=0 (odd parity) mov al, 11001100b ; 4 1's xor al, 0 ; PF=1 (even parity) 16-bit parity - 두바이트간에 XOR 연산수행 mov ax, 64C1h ;0110 1000 1100 0001 xor ah, al ;PF=1 (even e parity) 컴퓨터정보통신 어셈블리언어 7 컴퓨터정보통신 어셈블리언어 8

예제 TEST 와 CMP 명령어 비트맵집합 비트값이 1 이면집합원소를표시 (32 비트 : 최대 32 개의원소표시 ) 여집합 - NOT 명령어사용 교집합 - AND 명령어사용 합집합 - OR 명령어사용 ( 예 ) SetX = 80000007h SetY = 81500763h mov eax, SetX ; 10000000 00000000 00000000 00000111 not eax ; eax=x의여집합 mov eax, SetX and eax, SetY ;eax=x 와 Y 의교집합 mov eax, SetX or eax, SetY ; eax=x와 Y의합집합 TEST dst, src dst src 연산 (AND 연산 ) 수행 ( 결과를저장하지않음 ) 비트검사에사용됨 CMP dst, src dst src 연산수행 ( 결과를저장하지않음 ) 크기비교에사용됨 TEST 와 CMP instruction 의공통점 연산결과를저장하지않고 flag 에만영향을줌 dst 는변하지않음 주로 conditional jump 와함께사용 컴퓨터정보통신 어셈블리언어 9 컴퓨터정보통신 어셈블리언어 10 CPU 개별플래그설정 6.3 조건부점프 ZF 설정 test al, 0 ;ZF = 1 and al, 0 ; ZF = 1 (AL 수정 ) or al, 1 ; ZF = 1 (AL 수정 ) SF 설정 or al, 80h ; SF = 1 and al, 7Fh ;SF= 0 CF 설정 stc ; CF = 1 clc ; CF = 0 OF 설정 mov al, 7F inc al ; OF = 1 or eax, 0 ; OF = 0 ( 논리연산 ) 컴퓨터정보통신 어셈블리언어 11 Jcond 명령어 형식 : Jcond label 이전의연산결과가주어진조건을만족하면 label 위치의 instruction 으로 jump ( 이전의연산결과는주로 flag 상태를참조함 ) Condition 종류와조건부점프 Condition 종류 특정 Flag상태 equality Instructions JZ, JNZ, JC, JNC, JO, JNO, JS, JNS, JP, JNP JE, JNE, JCXZ, JECXZ signed 비교 JG, JGE, JL, JLE (Greater, Less) JNLE, JNL, JNGE, JNG unsigned 비교 JA, JAE, JB, JBE (Above, Below) JNBE, JNB, JNAE, JNA JZ 와 JE, JNZ 와 JNE 는같은명령어 컴퓨터정보통신 어셈블리언어 12

특정플래그값에의한점프 동등비교점프 컴퓨터정보통신 어셈블리언어 13 컴퓨터정보통신 어셈블리언어 14 부호없는비교점프 부호있는비교점프 컴퓨터정보통신 어셈블리언어 15 컴퓨터정보통신 어셈블리언어 16

예제 크기비교 동등비교 cmp eax,ebx ; eax - ebx je L1 크기비교 unsigned 비교 cmp eax,ebx ja Larger signed 비교 cmp eax,ebx jg Larger if (eax==ebx) goto L1 if (eax>ebx) goto Larger 예제 비트검사 비트검사 AL 의 bit 0 또는 bit 1 이 1 이면 jump test al,00000011b jnz L1 AL 의 bit 0 과 bit 1 이모두 0 이면 jump test al,00000011b jz L1 AL 의 bit 0 과 bit 1 이모두 1 이면 jump (AL 내용변경 ) and al,00000011b ; clear unwanted bits cmp al,00000011b ; check remaining bits je L1 ; all set? jump to L1 컴퓨터정보통신 어셈블리언어 17 컴퓨터정보통신 어셈블리언어 18 예제 짝수, Zero 검사 짝수검사 if (wordval is even) goto L1 mov ax,wordval test ax,1 ; bit 0 set? jz L1 ; jump if ZF set Zero/Nonzero 검사 if (AL 0) goto L1 or al,al ; AL unchanged, Flag 영향 jnz L1 ; jump if not zero if (AL = 0) goto L1 or al,al ; AL unchanged jz L1 ; jump if zero 예제 최대값찾기 v1, v2, v3 에있는 unsigned 값의최대값을 max 에저장.data v1 word 10 v2 word 50 v3 word 30 max word?.code mov ax,v1 ; ax=v1 (assume v1 is larger) cmp ax,v2 jae L1 mov ax,v2 ; if (ax<v2)ax = v2 L1: cmp ax,v3 jae L2 mov ax,v3 ; if (ax<v3)ax = v3 L2: mov max,ax ; max = ax 컴퓨터정보통신 어셈블리언어 19 컴퓨터정보통신 어셈블리언어 20

배열검색 조건을만족하는원소찾기 0 이아닌원소를찾으면배열검색종료.data array SWORD 0,0,0,1,20,0,-1.code mov ebx, OFFSET array mov ecx, LENGTHOF array L1:cmp WORD PTR [ebx], 0 jnz found add ebx, 2 loop L1 jmp notfound found:... jmp quit notfound:... quit: ; array address ; loop counter 컴퓨터정보통신 어셈블리언어 21 문자열암호화 XOR의성질 : (X Y) Y = X 암호화및해독 암호화 : S = X K 암호해독 : S K = (X K) K = X KEY = 239 ; can be any byte value BUFMAX = 128.data buffer BYTE BUFMAX+1 DUP(0) bufsize DWORD BUFMAX.code mov ecx,bufsize ; loop counter mov esi,0 ; index 0 in buffer L1: xor buffer[esi],key ; translate a byte inc esi ; point to next byte loop L1 컴퓨터정보통신 어셈블리언어 22 6.4 조건부루프명령어 LOOPZ (LOOPE) 명령어 형식 : LOOPZ dest 동작 : ECX ECX 1 if ECX > 0 and ZF=1, jump to destination 용도 : 주어진값과일치하지않은첫배열원소를찾음 (ECX가 0이거나비교결과가같지않을때루프종료 ) LOOPNZ (LOOPNE) 명령어 형식 : LOOPNZ dest 동작 : ECX ECX 1 if ECX > 0 and ZF=0, jump to destination 용도 : 주어진값과일치하는첫배열원소를찾음 (ECX가 0이거나비교결과가같을때루프종료 ) 예제 양수를찾을때까지배열검색.data array SWORD -3,-6,-1,-10,10,30,40,4 sentinel SWORD 0.code mov esi,offset array mov ecx,lengthof array next: test WORD PTR [esi],8000h ; test sign bit pushfd ; push flags on stack flag add esi,2 popfd ; pop flags from stack loopnz next ; continue loop jnz quit ; none found sub esi,2 ; ESI points to value quit: 컴퓨터정보통신 어셈블리언어 23 컴퓨터정보통신 어셈블리언어 24

6.5 조건부구조 블록구조 IF 문 AND 복합수식 OR 복합수식 WHILE 루프 블록구조 IF 문 C 언어 어셈블리언어 if( op1 == op2 ){ 반대 mov eax,op1 cmp eax,op2 jne L1 Y = 2; mov X,1 } else { mov Y,2 then block X = 2; jmp L2 Y = 1; L1: mov X,2 } mov Y,1 else block L2: 컴퓨터정보통신 어셈블리언어 25 컴퓨터정보통신 어셈블리언어 26 블록구조 IF 문 - 다른방법 C 언어 어셈블리언어 if( op1 == op2 ){ mov eax,op1 cmp eax,op2 je L1 Y = 2; mov X,2 } else { mov Y,1 else block X = 2; jmp L2 Y = 1; L1: mov X,1 } mov Y,2 then block L2: AND 복합수식 AND 의 Short-circuit 평가 if ( 비교식1&& 비교식2&& 비교식 3) 앞의비교식이거짓이면뒤의비교식을실행하지않음 if (AL>BL && BL>CL) cmp al,bl ; 비교식1 ja L1 jmp next L1: cmp bl,cl ; 비교식2 ja L2 jmp next L2: mov X,1 ; then block next: 컴퓨터정보통신 어셈블리언어 27 컴퓨터정보통신 어셈블리언어 28

AND 복합수식 - 다른방법 OR 복합수식 C 언어 if (AL>BL && BL>CL) 어셈블리언어 반대 cmp al,bl ; 비교식1 jbe next L1: cmp bl,cl ; 비교식2 jbe next L2: mov X,1 ; then block next: OR 의 short-circuit 평가 if ( 비교식 1 비교식2 비교식 3) 앞의비교식이참이면뒤의비교식을실행하지않음 if (AL>BL BL>CL) cmp al,bl ; 비교식1 ja L1 cmp bl,cl ; 비교식2 jbe next L1: mov X,1 next: 컴퓨터정보통신 어셈블리언어 29 컴퓨터정보통신 어셈블리언어 30 WHILE 루프 C언어 while( a < b) { a++; b--; 반대 어셈블리언어 mov eax,a while: cmp eax,b jnl endwhile inc eax dec b jmp while endwhile: mov a,eax 컴퓨터정보통신 어셈블리언어 31