일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- 리눅스 커널
- 시스템
- 드론
- wargame
- 알고리즘
- 어셈블리어
- 리눅스커널
- 워게임
- 프로그래밍
- 시스템해킹
- C언어
- write up
- 커널
- Pwnable.kr
- kernel
- 시스템 프로그래밍
- 시그널
- pwn.college
- C++
- 취약점
- Bandit
- Leviathan
- 시스템프로그래밍
- radare2
- 리눅스
- 리버싱
- pwncollege
- px4
- css
- 컴퓨터구조
- Today
- Total
목록컴퓨터구조&어셈블리어 (17)
Computer Security
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/yDvEj/btrC9mq88uw/CIr1ucdQFTYU1KiH8VbJiK/img.png)
음수와 양수 -컴퓨터에서 정수 데이터는 부호가 있는(signed) 경우와 부호가 없는(unsigned) 경우로 분류 된다. -부호가 없는 경우 모든 비트가 정수의 데이터 비트로 이용되지만, 부호가 있는 경우 최상위 비트(MSB)가 부호 비트로 이용된다. -음수를 표현하기 위해 2의 보수법을 이용하며, 부호의 유무와 상관없이 덧셈과 뺄셈의 결과로 나오는 비트 데이터는 동일하다. -ADD와 SUB명령어는 데이터의 부호 유무를 구별하지 않고 단순히 비트들을 더하고 뺀다. ex) 다음과 같이 1바이트 정수 덧셈을 하는 경우 249와 2를 더하는 경우와 -7과2를 더하는 경우 모두 결과값이 11111011로 비트 필드가 서로 같다. 이진수 부호 없는 십진수 부호 있는 십진수 1111 1001 249 -7 0000..
프로그램 기본 구조 .MODEL SMALL -메모리 모델을 정의한다. Small의 경우 데이터 세그먼트와 코드 세그먼트가 각각 하나씩 존재하는데, 대부분의 실습용으로 충분하다. .DATA, .CODE -데이터 세그먼트와 코드 세그먼트를 나타내는 어셈블리어 지시어 .PROC -프로시저의 시작을 나타내는 지시어. RPOC 앞에는 프로시저의 이름이 들어간다. .ENDP -프로시저의 끝을 나타내는 지시어. ENDP 앞에 프로시저의 이름이 들어간다. .END -전체 프로그램의 끝을 나타내는 지시어 -END 다음에 들어가는 인수는 옵션이지만, 대부분의 경우 프로그램의 시작지점이 되는 첫 번째 프로시저의 이름(ex. main) 이 들어간다. 프로그램 실행의 종료 -INT(interupt) 21H(0x21) 는 AH로..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/ojPWZ/btrCTGYCqvf/rHKT43zf7vzFmyhXrYyFTk/img.png)
컴퓨터의 데이터 표현 -오늘날 대부분의 컴퓨터는 내부적으로 이진수를 이용하여 데이터를 표현하고 저장한다. -이진 데이터를 사용하는 것이 디지털 회로로 구현하기 쉽고 효율적이기 때문이다. -이진수 한 자리를 1비트(bit, binary digit)라 하며, 0과 1 두 개의 신호를 표현할 수 있다. -8비트 데이터를 바이트(byte)라고 하며, 8086은 16비트 단위로 데이터를 처리하기 때문에 2바이트를 워드(word)라고 부른다. -모든 데이터는 내부적으로 비트열(bitstream)이지만, 이 비트들의 나열(코딩, 즉 부호화)에 따라 특정한 유형들의 데이터를 표현할 수 있다. -이렇게 나타낼 수 있는 정보의 유형들은 단순히 정수 데이터로부터 부동소수점, 문자 코드까지 다양하다. 기수법 -팔진법(Octa..
메모리 모델 -작성되는 프로그램의 코드와 데이터의 크기를 나타내기 위해 사용되며, 사용자는 프로그램 코드와 데이터의 크기에 해당하는 메모리 모델을 어셈블러에게 알려줘야 한다. -어셈블러에게 세그먼트를 사용하는 방법, 목적 코드를 위한 충분한 공간을 제공하는 방법, 최적의 실행 속도를 보장하기 위한 방법 등을 알려준다. -메모리 모델에는 Tiny, Small, Medium, Compact, Large, Huge, Flat 등이 있다. -Tiny는 주로 .com 프로그램에 대해 사용된다. -Flat은 32비트 보호모드에서 사용되는 메모리 모델이다. .MODEL 메모리모델 SMALL : -한 세그먼트에 저장할 수 있는 코드 -한 세그먼트에 저장할 수 있는 데이터 MEDIUM : -한 세그먼트 이상에 저장할 수..