본문 바로가기
728x90

분류 전체보기480

13.다양한 입출력 함수들 리눅스 기반에서의 send & recv 함수를 소개하겠습니다. #include ssize_t send(int sockfd,const void * buf, size_t nbytes,int flags); ->성공 시 전송된 바이트 수, 실패 시 -1 반환 sockfd 데이터 전송 대상과의 연결을 의미하는 소켓의 파일 디스크립터 전달. buf 전송할 데이터를 저장하고 있는 버퍼의 주소 값 전달 nbytes 전송할 바이트 수 전달 flags 전송 시 적용할 옵션 정보 전달 #include ssize_t recv(int sockfd, void * buf, size_t nbytes,int flags); ->성공 시 수신한 바이트 수(단 EOF 는 0), 실패 시 -1 반환 sockfd 데이터 수신 대상과의 연결을 .. 2020. 5. 1.
Base Relocation Table 오늘은 PE 파일의 재배치 (Relocation) 과정에 사용되는 Base Relocation Table의 구조와 동작원리에 대해 알아보겠습니다. -PE 재배치 PE파일(EXE/DLL/SYS) 이 프로세스 가상 메모리에 로딩(loadiong) 될때 PE 헤더의 ImageBase주소에 로딩 됩니다.(ImageBase 주소는 NT Header에 Optional Header 안 에 있습니다.) DLL이나 SYS 같은 경우 ImageBase 위치에 이미 다른 파일이 로딩되어있다면 충돌을 비해 다른 비어있는 주소 공간에 로딩됩니다. 이를 PE Relocation 이라고 합니다. -> PE파일이 ImageBase에 로딩되지 못하고 다른 주소에 로딩될때 수행되는 일련의 작업들 의미. 참고) ImageBase EXE .. 2020. 5. 1.
12. I/O Multiplexing 멀티프로세스 서버는 프로세스마다 별도의 메모리 공간을 유지하기 때문에 상호간에 데이터 교환에 복잡한 방법을 택할 수 밖에 없습니다. 즉 IPC가 좀 복잡한 통신 방법인거죠. 이 대안 법이 'IO 멀티플렉싱' 입니다. IO 멀티플렉싱 서버는 프로세스의 생성을 동반하지 않으면서 다수의 클라이언트에게 서비스를 제공할 수 있습니다. 멀티플렉싱의 단어의 이해가 필요 합니다. '하나의 통신 채널을 통해 둘 이상의 데이터(시그널)를 전송하는데 사용되는 기술' 입니다. 시(time)분할 멀티플렉싱 기술 -> 여러명에서 대화를 오고가는 느낌 주파수(frequency) 분할 멀티플렉싱 기술 -> 여러명이 한번에 이야기 하는데 목소리로 구분 하는 느낌 -select 함수의 이해 Select 함수는 멀티플렉싱 서버 구현에 있.. 2020. 4. 28.
실행 압축 실행 압축(Run-Time Packer)는 소트웨어 역공학의 단골 주제입니다. 오늘은 이에 대해 알아봅시다. 1. 데이터 압축 우리가 일상에서도 자주 쓰고있는 게 데이터 압축입니다. 어떤 형태의 파일이나 데이터라도 내부는 바이너리로 되어 있기 때문에 압축 알고리즘을 사용하여 크기를 줄일 수 있습니다. 이 때 압축 본을 100% 복원 시킬 수 있다면 비손실 압축(Lossless Data Compression) 이라고 하고 복원할 수 없다면 손실압축(Loss Data Compression) 이라고 합니다. -비손실 압축 : 7-zip, 빵집과 같은 압축 프로그램을 이용해서 파일을 압축시키는 경우가 비손실 압축의 예에 해당합니다. 대표적인 예로는 Run-Length,Lempel-Ziv,Huffman 등이 있습.. 2020. 4. 28.
728x90