-
JavaScript Engine Part 2카테고리 없음 2023. 3. 6. 23:03
Optimizing property access Object가 많아질 수록 property에 빠르게 접근하는 것이 중요해졌다. 같은 형태의 Object를 연결하는 Shape과 property를 추가할 때마다 변경되는 Shape을 관리하기 위한 chain, tree 개념, 또 Shape을 사용하는 주된 이유인 Inline Caches(ICs)에 대해 알아본다. 1. Shapes property에 빠르게 접근하기 위한 개념으로 객체간 동일한 key가 존재할 경우 Shape이 같다고 말한다.(V8에서는 Map이라 불린다.) const a = { x: 5, y: 6 }; const b = { x: 7, y: 8 }; // 객체 a와 b는 Shape이 같음 const c = { y: 9, x: 10 }; // 객..
-
V8 Memory Structure카테고리 없음 2023. 2. 22. 22:36
Contents V8 Memory Structure 개요 Heap Stack V8 메모리 사용(Stack, Heap) V8 메모리 관리: Garbage Collection(GC) Minor GC Major GC JavaScript는 단일 스레드이기 때문에 V8은 새로운 작업을 수행할 때마다 새 프로세스를 생성 및 실행한다. 실행중인 프로그램은 V8 프로세스에서 할당된 일정량의 메모리로 표현되고, 이를 Resident set이라 한다. Heap V8의 object 혹은 동적 데이터를 저장하는 곳으로 Resident set의 가장 큰 부분을 차지하고, GC(Garbage Collection)이 일어나는 곳이기도 하다. 전체 공간에서 가비지가 수집되지는 않고, Young, Old Space에서만 수집되어 관리..
-
JavaScript Engine Part 1카테고리 없음 2023. 2. 15. 22:30
JavaScript Engine 개요 JavaScript Engine은 Parser, Interpreter, Optimizing Compiler로 구성되어있다. JavaScript 소스 코드를 받아서 Parser를 통해 파싱을 수행하고, AST(Abstract Syntax Tree)를 만든다. AST를 직역하면 추상 구문 트리로 컴파일러에서 사용되는 자료 구조이고, 사람이 작성한 코드를 컴퓨터가 알아듣기 쉽게 만드는 역할이라고 보면 된다. 이후 Interpreter는 도출된 AST를 기반으로 고급 언어로 작성된 코드를 가상 머신이 이해할 수 있는 bytecode로 변환 및 실행해준다. 코드 실행의 효율을 늘리기 위해 JavaScript Engine은 bytecode를 실행하면서 자주 실행된 코드를 수집하..
-
Windows 10 입력 씹힘(?) 현상tmp/[?] trouble [!] 2020. 8. 4. 05:40
Windows 업데이트 때문인가.. 어느순간부터 입력을 할 때 스페이스바를 누르면 문자 한개가 지워진다..; 메모장이나 다른 텍스트 에디터에서는 잘 되는데, chrome같은 웹브라우저나 typora와 같은 md editor에서 저런 현상이 발생한다. e.g. 내 별명은 살충제 입니다. -> 내 별명 살충 입니 약간 이런식이랄까 한 글자씩 씹어먹는다. 이럴땐 아래와 같이 이전 버전의 Microsoft IME로 변경해주면 된다. 언어 설정으로 들어간 뒤 한국어를 클릭하고 옵션 보면 키보드를 업데이트 전의 키보드로 변경할 수 있다. 이전 버전의 Microsoft IME를 선택하고 재부팅하면 된다.
-
TLSv00 write upSystem hacking training/pwnable.xyz 2020. 5. 4. 17:18
바이너리에 모든 메모리 보호기법이 적용되어있다. TLSv00을 풀이하기 위해서는 각각의 기능에 대해 조금은(?) 자세하게 알고있어야한다. int __cdecl __noreturn main(int argc, const char **argv, const char **envp) { int idx; // eax@2 int size; // ST0C_4@9 setup(); puts("Muahaha you thought I would never make a crypto chal?"); generate_key(63u); while ( 1 ) { while ( 1 ) { while ( 1 ) { print_menu(); printf("> ", argv); idx = read_int32(); if ( idx != 2 ) ..
-
Free Spirit write upSystem hacking training/pwnable.xyz 2020. 4. 4. 19:46
int __cdecl main(int argc, const char **argv, const char **envp) { char *v3; // rdi@2 signed __int64 i; // rcx@2 int idx; // eax@5 int result; // eax@19 __int64 v7; // rdx@19 __int64 v8; // [sp+8h] [bp-60h]@15 void *ptr; // [sp+10h] [bp-58h]@1 char buf; // [sp+18h] [bp-50h]@2 __int64 v11; // [sp+48h] [bp-20h]@1 v11 = *MK_FP(__FS__, 40LL); setup(); ptr = malloc(0x40uLL); while ( 1 ) { while ( 1 )..
-
CVE List : Router Exploit TutorialProject 2020. 2. 18. 12:24
CVE-2016-6277 - Arbitrary Command Injection Description : remote attackers to execute arbitrary commands Ref : https://nvd.nist.gov/vuln/detail/CVE-2016-6277 NVD - CVE-2016-6277 CVE-2016-6277 Detail Modified This vulnerability has been modified since it was last analyzed by the NVD. It is awaiting reanalysis which may result in further changes to the information provided. Current Description NET..