반응형

공부해요 108

17. 실행 파일에서 .reloc 섹션 제거하기

Reloc 섹션 설명Base Relocation Table은 PE 파일에서 하드코딩된 주소의 위치를 알려주는 정보로, 실행 파일(EXE)에서는 큰 영향을 주지 않음. 따라서 reloc 섹션을 제거해도 EXE는 정상적으로 실행될 수 있음.reloc 섹션은 보통 VC++에서 생성된 PE 파일의 마지막에 위치하며, 이 섹션을 제거하면 파일 크기가 약간 줄어듦PEView나 Hex editor를 사용해 쉽게 제거 가능   Reloc 섹션 제거 작업 단계.reloc 섹션 헤더 정리.reloc 섹션 헤더의 파일 오프셋을 찾아서, Hex editor를 사용해 해당 부분을 0으로 덮어씌움.reloc 섹션 제거.reloc 섹션의 시작 옵셋을 찾아, 해당 부분부터 파일 끝까지 삭제이 단계에서 물리적으로 섹션을 제거할 수 있..

16. Base Relcoation Table

PE 재배치(PE Relocation)PE 재배치란?PE(Portable Executable) 파일이 원래 로딩되기를 기대하는 기본 주소인 ImageBase에 로딩되지 못하고, 다른 주소에 로딩될 때 발생하는 작업을 의미함  DLL/SYS 파일에서의 PE 재배치DLL/SYS 파일: 예를 들어, TEST.EXE 프로세스에 A.DLL이 10000000 주소에 로딩된 상태에서 B.DLL이 동일한 주소로 로딩되려고 할 때, PE 로더는 충돌을 피하기 위해 B.DLL을 다른 비어있는 주소에 로딩함. EXE 파일에서의 PE 재배치EXE 파일: 실행될 때마다 랜덤한 주소에 로딩되며, 이 과정에서 재배치가 발생할 수 있음. 이는 보안을 위한 ASLR(Address Space Layout Randomization)의 일..

15. UPX 실행 압축된 notepad 디버깅

010073B2: GetModuleHandleA() API 호출 후 notepad.exe 프로세스의 ImageBase구함010073B4, 010073C0: MZ와 PE 시그니처 비교    notepad_upx.exe의 EP Code0101533060PUSHAD01015331BE 00100101MOV ESI, 0101100010153368DBE 0000FFFFLEA EDI, DWORD PTR DS: [ESI+FFFF0000]  PUSHAD 명령어: EAX~EDI 레지스터를 스택에 저장ESI/EDI 설정:ESI: 두 번째 섹션 시작 주소 (01011000)EDI: 첫 번째 섹션 시작 주소 (01001000)첫 번째 섹션: 메모리에서만 존재, 압축 해제된 원본 파일의 코드가 저장될 장소예상 동작:ESI가 가리..

14. 실행 압축

데이터 압축어떤 형태의 파일이든 내부는 바이너리로 되어 있음 -> 압축 알고리즘을 사용해 크기를 줄일 수 있음비손실 압축압축 파일 100% 복원 가능보관 및 이동에 용이하도록 하려는 목적으로 사용7-zip, 빵집과 같은 프로그램 이용Run-Length, Lempel-Ziv, Huffman 알고리즘손실 압축압축 파일 100% 복원 불가압축률을 높이는 목적멀티미디어 파일들(jpg, mp3, mp4)에서 대부분 사용   실행 압축실행(PE: Portable Executable) 파일을 대상으로 파일 내부에 압축해제 코드를 포함하고 있어서 실행되는 순간에 메모리에서 압축을 해제시킨 후 실행시키는 기술실행 압축된 파일도 PE파일, 내부에 원본 PE파일과 decoding루틴 존재. EP코드에 decoding루틴이 ..

스레드 병행프로세스 퀴즈

Q1. 프로세스를 실행 단위로 하는 멀티태스킹의 문제점을 해결하기 위해 출현한 프로세스보다 크기가 작은 효율적인 새로운 실행 단위는 무엇인가?더보기A1. 스레드  Q2. 다음 중 스레드의 생명과 프로세스의 생명에 대한 관계 중 올바르지 않은 것을 고르시오.① 스레드로 만든 함수가 종료하면 스레드는 종료된다.② 스레드가 종료하면 TCB 등 스레드 관련정보는 모두 제거된다.③ 프로세스에 속한 첫번째 스레드가 종료될 때, 프로세스가 종료된다.더보기A2. ③.프로세스에 속한 모든 스레드가 종료될 때 프로세스가 종료된다.  Q3. 협력 프로세스와 스레드는 실행 순서에 따라 결과 가 다른 □ □ □ □에 의해 재현이 어려워진다.더보기A3. 비결정성(non-determinism)

병행프로세스와 상호배제

병행 프로세스와 상호배제학습 목표프로세스 및 스레드 동기화상호배제 (Mutual Exclusion)멀티스레드 동기화 기법생산자 소비자 문제모니터 오늘은 프로세스 및 스레드 동기화만..병행 프로세스병행 프로세스는 운영체제가 프로세서를 빠르게 전환하여 프로세서의 시간을 나누어 사용함으로써 여러 프로세스가 동시에 실행되는 것처럼 보이게 하는 개념임. 크게 독립 프로세스와 협력 프로세스로 나뉨.독립 프로세스: 다른 프로세스에 영향을 주고받지 않으며 독립적으로 실행됨.협력 프로세스: 다른 프로세스와 상호작용하며 특정 기능을 수행하는 프로세스.협력 프로세스와 스레드협력 프로세스 및 스레드는 다른 프로세스 또는 스레드와 상호작용하는 특성을 가짐. 자원의 공유, 빠른 수행, 모듈화된 시스템 구성을 위해 필요함.특성:자..

프로세스와 스레드(2)

스레드의 개념과 특성스레드는 프로세스 내에서 독립적으로 실행되는 가벼운 실행 단위임. 스레드는 동일한 프로세스 내에서 실행되며, 프로세스 자원을 공유함으로써 자원 사용이 효율적임. CPU 스케줄링에서 프로세스보다 더 가볍게 다뤄지며, 병렬 처리를 가능하게 함. 다수의 스레드가 같은 프로세스 내에서 동작하기 때문에 컨텍스트 전환이 빠르고, 메모리 사용이 절감됨.  스레드의 종류사용자 수준 스레드(User-level thread, n:1 모델): 커널에서 직접 인식되지 않고 사용자 영역에서만 관리됨. 커널 개입이 없으므로 전환이 빠르지만, 하나의 스레드가 블로킹되면 프로세스 전체가 블로킹될 수 있음.커널 수준 스레드(Kernel-level thread, 1:1 모델): 커널이 직접 스레드를 관리하고, 전환도..

13. PE File Format

PE(Portable Executable) 파일은 Windows 운영 체제에서 사용되는 실행 파일 형식을 의미하며, Microsoft에서 기존 UNIX 시스템에서 사용된 COFF(Common Object File Format)를 기반으로 개발됨. 주로 32비트 및 64비트 Windows 시스템에서 실행되는 프로그램 및 라이브러리를 위해 설계됨.32비트 파일은 PE(Portable Executable) 형식을 따르며, 64비트 파일은 PE+ 또는 PE32+로 불림.  PE File Format종류주요 확장자실행 계열EXE, SCR라이브러리 계열DLL, OCX, CPL, DRV드라이버 계열SYS, VXD오브젝트 파일 계열OBJ EXE 파일: 주로 프로그램 실행 파일로 사용되며, 사용자가 직접 실행 가능함.D..

프로세스와 스레드 퀴즈

Q1. 다음 중 옳은 것을 고르시오.① 각 프로세스는 사용자 공간과 커널 공간으로 나뉜다.② 시스템 전체에는 여러 커널 주소 공간이 있다.③ 모든 프로세스는 커널 주소 공간을 독립적으로 사용한다.④ 사용자 공간에서의 명령어는 커널 공간에서도 사용할 수 있다.더보기A1. ① 각 프로세스는 사용자 공간과 커널 공간으로 나뉜다. - 해설② 시스템 전체에는 하나의 커널 주소 공간이 있다.③ 모든 프로세스는 커널 주소 공간을 공유하여 사용한다.④ 사용자 공간에서의 명령어는 커널 공간에서도 사용할 수 없다. Q2. 프로세스 관련 system call에서 자식 프로세스를 생성하는 시스템 호출은 무엇인가?더보기A2. fork() Q3. Process Table이란 시스템의 프로세스 관리를 위한 표이며 한 시스템 내에 ..

반응형