# assembly
[Memo] Epilogue
안보면 까먹어버려서 함수의 에필로그를 적어두려한다❗️함수의 에필로그는 2가지 어셈블리어로 구성되어있다.또한 추가로 pop 어셈블리어에 대해 알아보자.Off-by-one or Stack pivoting을 이해하기 위해 필요한 지식이다.. 끝👋 ※ 참고👉 https&#
Quiz: x86 Assembly 1
end로 점프하면 프로그램이 종료된다고 가정하자.프로그램이 종료됐을 때, 0x400000 부터 0x400019까지의 데이터를 대응되는 아스키 문자로 변환하면?1\. mov dl, BYTE PTR\[rsi+rcx]rsi + rcx =0 + 0x4000000x400000이
Assembly - 명령어 스터디 정리
|이름|유형|명령어|예시|텍스트 |---|:---:|---|---| |mov|데이터 이동|메모리나 레지스터의 값을 옮길때 사용|mov eax, ebx |lea|데이터 이동|mov와 다르게 메모리나 레지스터의 유효주소를 이동시킴|lea eax, ebx |lnc|산술 연산
Assembly - 스택, 프로시저 명령어
참고! 매우 어려움A를 스택 최상단에 쌓음스택 최상단의 값을 꺼내서 A에 대입특정 기능을 수행하는 코드 조각. (= C언어의 함수)프로시저를 사용하면 반복되는 연산을 프로시저 호출로 대체할수 있어서 전체 코드의 크기를 줄이고, 기능별로 코드 조각에 이름을 붙일수 있어서
Assembly - 논리 연산, 비교, 분기 명령어
and, or, xor, not 등의 논리연산이 있음. 논리연산은 비트 단위로 이루어짐 => 2진수로 변환에서 0이나 1 따져야함!!!A와 B의 비트가 모두 1이면 1, 아니면 0비트 단위로 분석한 후 A의 값이 바뀜A와 B의 비트중 하나라도 1이면 1, 아니면 0비
Assembly - 데이터 이동, 산술연산 명령어
명령어(연산코드) + 피연산자(오퍼랜드)어셈블리어에서는 메모리에 접근할때 주소를 계산해야한다!!!상수 (Immediate Value)레지스터 (Register)메모리 (Memory)그중에서도 메모리 오퍼랜드는 \~\~~로 둘러싸인 것으로 표현오퍼랜드 앞에 크기 지정자가
[Assembly] Assembly - 1
컴퓨터(CPU)의 기계어와 치환되는 언어 ⚠️ CPU가 달라지면 어셈블리어도 달라진다!\\ 배경지식CPU에 사용되는 명령어 집합 구조는 다양하다 📌 명령어 집합 구조 : ISA Instruction Set Architecture → 다양한 만큼 어셈블리어도

[System Hacking][DreamHack][Stage2] x86 Assembly: Essential Part(1)
Introduce 시스템 해커는 어셈블리어어로 작성된 소프트웨어에서 취약점을 발견해야한다 Assembly Language Assembler 개발자들이 작성한 어셈블리어 -> 컴퓨터가 이해 할 수 있는 기계어로 치환하는 통역사 Disassembler 기계어 -> 어셈블리
패미컴 게임을 만들어보자! 4번째 6502 addressing modes
어셈블리를 처음부터 하려니 정말 어려운거 같다 심지어 자료가 영어로 돼 있어서 해석먼저 하는게 고역이다.오늘 배운 내용은 6502 프로세서의 어드레싱 모드다immediate: 말그대로 즉각적으로 값을 넣는 모드다 주소 형식으로 값을 보내는 것이 아니라 매우 직관적이고

[Reversing] 어셈블리어 기초
우리가 평소에 이용하는 C언어나 파이썬으로 코딩한 파일은 그대로 실행할 수 없고, 컴퓨터가 이해할 수 있는 기계어로 바꿔줘야 한다. 이러한 기계어를 사람이 알아보기 쉬운 니모닉 기호를 통해 표현한 언어를 어셈블리어라고 한다. 이런 어셈블리어는 Intel과 AT&T
OS 개발 - 2
개발 환경 구축 설치할것은 딱 3가지이다 nasm, Vmware, 자신에게 맞는 IDE NASM 설치 nasm stable버전으로 받을것이다 클릭해 들어가면 nasm의 index of가 나오게 된다 여기서 win64에 들어가 exe파일을 받아 관리자 권한으로
OS 개발 - 1
OS 만들기는 어셈블리, c에 능숙하거나 리눅스 커널을 빠삭하게 이해하고 있는 이들에게 추천한다저 세 가지는 굳이 이해하고 있지 않아도 된다, 앞으로 작성할 코드는 필자가 열심히 설명할 것이다하지만 이해하고 있으면 조금 더 쉽고 깊게 이해할 수 있으므로 공부하는 것을
Linux System Programming(1) - System Call
시스템 프로그래밍은 시스템 콜에서 시작해서 시스템 콜로 끝난다.시스템 콜이란 운영체제에 리소스나 서비스를 요청하려고 사용자 영역(텍스트 편집기나 게임...)에서 시작해서 커널 내부로 들어가는 함수 호출이다. 시스템 콜에는 read(), write() 같은 익숙한 함수부
Linux System Programming(0) - What is System Programming
시스템 프로그래밍 시스템 프로그래밍이란 커널 및 핵심 시스템 라이브러리를 직접 사용하면서 하위 레벨에서 동작하는 시스템 소프트웨어를 작성하는 기술을 일컫는다. 셸, 텍스트 편집기, 컴파일러, 디버거, 시스템 유틸리티 및 시스템 데몬은 모두 시스템 소프트웨어이다. 네트워