본문 바로가기

전체 글96

[Reversing] Assembly Language - Instruction Set 명령어 집합 구조(Instruction Set Architacture; ISA)명령어 집합 구조(ISA)는 하드웨어와 소프트웨어 간의 인터페이스 역할을 하며, CPU가 이해하고 실행할 수 있는 명령어들의 집합과 형식, 동작 방식을 정의한다.   명령어 집합 분류에는 CISC와 RISC가 있다. 아래의 표를 참고하자(내가 공부할 부분은 IA-32(x86)이기 때문에 CISC를 해볼 예정이다).  일반적인 명령은 Opcode(operation code)와 하나 이상의 Operand로 구성된다.  Opcode - MOV 같은 명령어Operand - EIP와 같이 명령이 전달되는 인자(Opcode에 따라 Operand가 존재하지 않는 경우도 존재) 주소 지정 체계(Addressing Modes)주소 지정 체계는.. 2025. 3. 31.
[Reversing] Register 리버싱과 관련된 CPU 구조CPU Register: CPU 내부의 임시 저장 공간으로 연산에 필요한 데이터를 임시로 저장하고 처리 속도를 높이기 위해 사용범용 레지스터(general purpose register), segment register, status registerProgram Counter(PC): 다음에 실행할 명령어의 메모리 주소를 저장x86 - EIP(extended instruction pointer) x64 - RIP(register instruction pointer)Condition Codes: 최근 연산에 대한 상태 정보를 저장, 연산 결과에 따라 설정되는 Flag들로 구성된 status register 내의 비트들을 의미한다. status register, flag regis.. 2025. 3. 31.
[Reversing] 데이터 구성 단위, Endian, 보수(Complement) 데이터 구성 단위 일반적으로 모든 디지털 시스템에서는 2진수(binary)를 사용해서 데이터를 저장하고 처리한다. 즉, 2진수는 디지털 데이터의 최소 단위이며 bit 단위를 사용한다.  하지만, 저장 장치(storage)의 용량이 증가하면서 메모리의 데이터 저장 최소 단위인 byte가 주로 사용되게 되었다.  데이터 구성 단위는 다음과 같이 구성되어있다. nibble(1/2 byte, 4bit)과 word(2 byte, 16 bit)는 다소 어색할테니 기억해두자.   16진수(hexadecimal)모든 데이터를 2진수로 표현하면 비효율적이기에 2진수를 nibble(1/2 byte, 4bit) 단위로 묶어서 표현한다.  16진수 구분 기호: 0x, x, $, &H, h 등 Big-Endian(BE) & L.. 2025. 3. 31.
[Reversiong] 리버싱 전에 간단하게 공부하는 컴퓨터 구조 컴퓨터 구조 (Computer Hardware의 내부 구성 요소)중앙처리장치(Central Processing Unit; CPU)주 기억 장치(Main Memory)보조 기억 장치(Secondary Memory)I/O DeviceCommon bus CPU: 산술, 논리, 제어 등을 실행하는 하드웨어 회로CPU Register: CPU 내부의 임시 저장 공간으로 가장 빠른 저장 장치연산 장치: data register, shift register, status register제어 장치: program counter(PC), instruction register(IR), memory address register(MAR), memory buffer register(MBR) 등common register, s.. 2025. 3. 31.
[C] pthread programming tutorial 1. single-threaded program & multi-threaded program일반적인 C 프로그램은 single-threaded program이라고 할 수 있다. 즉, '하나'의 명령어 흐름(one sequence of statements)이 시간이 지나면서 실행되는 것이다. 반면, multi-threaded program은 '여러' 개의 명령어 흐름이 같은 시간 동안 동시에 실행되는 것이다.  multi-threaded program은 parallel execution과 concurrent execution 방식으로 실행될 수 있다. 만약 두 개의 스레드가 위와 같이 동일한 순간에 각각의 명령어 흐름을 실행하고 있다면, 이것은 parallel execution이라고 할 수 있다. 반면 하.. 2025. 3. 10.
[금융 공부하기] 엔 캐리 트레이드의 배경과 청산에 따른 영향 '트럼프 2.0 시대(박종훈)'을 읽던 중, 엔 캐리 트레이드라는 용어를 알게 되었다. 대략적으로 무슨 말인지는 알지만, 엔 캐리 트레이드가 발생하게 된 배경과 현재 일본의 금리 인상과 트럼프 정부의 기본 금리 인하 압박에 따른 금리 격차의 축소가 엔 캐리 트레이드에 어떤 영향을 끼칠 것인지, 그리고 결과적으로 이러한 추세가 한, 미, 일 경제에 끼치는 영향을 공부해 보고자 해당 글을 작성하게 되었다.   1. 엔 캐리 트레이드(Yen Carry Trade)의 정의와 발생 배경 엔 캐리 트레이드는 상대적으로 금리가 낮은 일본의 엔화를 차입하여 달러 자산과 같이 금리가 높은 곳에 투자하여 수익을 올리는 것을 의미한다. 여기서 엔 캐리 트레이드의 주된 원인이 드러나는데, 바로 지속적인 저성장에 따른 일본과 .. 2025. 2. 15.