전체 글 195

Javascript의 객체와 prototype inheritance(프로토타입 기반 상속)

들어가며javascript 는 프로토타입 기반 객체지향 프로그래밍 언어이다.프로토타입이 뭘까? Prototype의 의미중복으로 사용되는 곳이 너무 많아 정리한다1. 일반 공학에서의 prototype : 최종 제품을 만들기 전에 만든 초기 시험 모델(시제품)2. C언어에서의 함수 prototype : 함수를 정의하기 전에 컴파일러에게 함수의 이름, 반환형, 매개변수 타입을 미리 알려주는 선언 3. javascript의 prototype : 객체가 다른 객체의 속성과 메서드를 상속받기 위해 연결하는 상위 객체 참조 이 글에서는 3번만 얘기할거니까 헷갈리지 말자표현을 정리하자면, 프로토타입 패턴이라는 것은 객체를 생성하는 방법을 다루는 디자인 패턴을 뜻한다. Javascript의 객체객체라 함은 메모리에 저장..

공부/JUN STUDY 2026.03.05

JavaScript Object Property Lookup이란 (자바 스크립트 객체가 property를 찾는 순서)

Javascript를 보면 위와 같은 충격적인 상황을 마주할 수 있다. 이것이 가능한 이유는 JavaScript는 모든 것이 객체이고 객체의 property를 찾을때 자바스크립트 엔진은 spec에 근거한 lookup 과정을 거치기 때문이다. 배열의 arr[index] 접근도 일반 객체의 property lookup과 같은 규칙을 따르기 때문이다. property lookup이라 함은 특정한 객체의 property를 찾는 과정을 의미하는데, 자바스크립트의 특정 객체 인스턴스의 property를 탐색하는 순서가 있다. 1. obj 자체에 property 있는지 확인2. 없으면 obj.[[Prototype]] 로 이동3. 거기서 property 찾기4. 계속 반복5. 끝까지 없으면 undefined이게 pr..

공부/JUN STUDY 2026.03.04

리눅스 권한 이제는 좀 이해하기 (Owner, Group, Other과 프로세스 권한 ruid, euid, suid 까지)

리눅스 권한을 이해할때 크게0. 권한은 파일(리눅스에서는 디렉터리도 파일이다)에 부여된다 1. 어떤 권한이 있는가 (rwx)2. 누구에게 그 권한이 있는가 (owner, group, other)개념을 이해하면 된다. 1번 rwx는 표현법만 익히면 되는거니 그냥 넘어가고owner, group, other 개념을 확실히 익혀보자. 바로 예제아래와 같이 파일들이 있다고 했을때 (ls -l로 확인가능하다)-r-------- 1 pwned pwned 69 flag-4a366de5f9250ee00973d579cd8a9e87-r-sr-x--- 1 pwned pwn 17552 flag_reader-2b6cfa9d53f87254b7c90bbd12d17ab6-rwxr-xr-x 1 root root 3..

공부/이모저모 2026.03.04

Type Casting과 Type Punning의 차이

Cast (형변환): "데이터의 의미를 유지하며 형태를 바꿈"Cast는 데이터를 다른 타입으로 바꾸되, 그 값(Value)의 의미가 유지되도록 비트를 재구성하는 과정동작: 컴퓨터가 CPU 연산을 통해 비트 패턴을 새로 만듬예시: 정수 1을 실수 1.0으로 캐스팅할 때.정수 1: 0x00000001실수 1.0: 0x3f800000 (IEEE 754 방식)=> 비트 패턴이 완전히 달라졌지만, 인간이 읽는 '값'은 여전히 1Punning (타입 퍼닝): "비트는 그대로 두고 해석만 바꿈"Punning은 메모리에 저장된 비트 패턴을 단 1비트도 건드리지 않고, 그것을 바라보는 타입만 바꿔서 읽는 기법동작: 추가적인 CPU 연산(번역) 없이, 메모리 주소에 있는 값을 그대로 가져와 다른 타입으로 우깁니다.예시: ..

VMware 에서 Ubuntu 디스크 용량 늘린 후에 적용하는법

Vmware나 Naver Cloud 등에서 Disk 크기를 조정한다Ubuntu Disk 용량 늘리기 -> Ubuntu 내부 Disk Setting 이용하면 가능!https://kysf.tistory.com/20 Ubuntu 디스크 용량 늘리는 방법STEP 1. VMware 설정에서 용량 확장1) 수정하고자 하는 machine의 설정 페이지에 들어간다."Edit virtual machine settings" 2) 현재 할당된 Hard Disk의 용량을 확인후, Expand 버튼을 클릭한다. 3) 늘리고자 하는 크kysf.tistory.com

공부/이모저모 2026.02.24

V8(d8) 빌드 및 gdb를 이용한 디버깅 방법

타겟 빌드V8 빌드 도구(depot_tools) 다운ninja나 관련된 모든 빌드 도구들이 depot_tools에 들어있다.git clone https://chromium.googlesource.com/chromium/tools/depot_tools.gitexport PATH=$PATH:$(pwd)/depot_toolsV8 소스코드 다운fetch v8cd v8# 특정 CVE가 수정되기 전의 특정 커밋으로 이동 (예: 2024년 3월 중순)git checkout 28877c5520gclient sync V8 빌드 (d8 쉘 생성)./tools/dev/gm.py x64.debug./tools/dev/gm.py x64.release V8 실행./out.gn/x64.release/d8 *.js# 혹은./out..

Configuration 2026.02.23

2026 다시 쓰는 컴파일러 vs 인터프리터 (인터프리터의 동작 원리에 대해)

https://juntheworld.tistory.com/26 컴파일 VS 인터프리터 (Compile VS Interpreter)프로그램을 해독하는 방식 (소스코드를 기계어로 변환하는 방식)에는 컴파일과 인터프리터 방식 두가지가 있다. 대부분의 프로그래밍 언어가 컴파일 방식을 택하기 때문에 프로그램의 해독(소juntheworld.tistory.com예전에 이런 글을 썼었는데... 최근 JIT, 바이트 코드와 같은 개념이 현대 언어에 등장하면서컴파일러와 인터프리팅을 굉장히 헷갈리게 만들고 있다. 이에 다시 정리한다.컴파일러과 인터프리터의 구분은단순히 통역, 번역 같은 추상적인 단어로는 이해할 수가 없다. 우선 컴파일러와 인터프리터는 고수준의 소스코드를 '어떻게' 저수준의 기계어로 바꿀까에 대한 방식의 차이..

공부/JUN STUDY 2026.02.11

[MCP] IDA pro MCP with Github copilot using VScode Setting

https://github.com/mrexodia/ida-pro-mcp GitHub - mrexodia/ida-pro-mcp: AI-powered reverse engineering assistant that bridges IDA Pro with language models through MCP.AI-powered reverse engineering assistant that bridges IDA Pro with language models through MCP. - mrexodia/ida-pro-mcpgithub.com중요반드시 Python 3.11 이상 버전을 사용해야한다ida-pro-mcp 설치 후 파이썬 연결 잘 되어야 ida pro Edit->Plugins->MCP에 뜬다(IDA Pro 재부팅 ..