분류 전체보기

    RE:Lenas tutorial #1 Olly + 어셈블러 + 기본 reverseme 패치

    RE:Lenas tutorial #1 Olly + 어셈블러 + 기본 reverseme 패치

    ReverseMe 파일을 실행해보면 평가 기간이 만료되었으니 새 라이센스 구입하라는 메세지 박스가 뜬다. OllyDbg로 열어보자. CreateFileA HANDLE CreateFileA( [in] LPCSTR lpFileName, [in] DWORD dwDesiredAccess, [in] DWORD dwShareMode, [in, optional] LPSECURITY_ATTRIBUTES lpSecurityAttributes, [in] DWORD dwCreationDisposition, [in] DWORD dwFlagsAndAttributes, [in, optional] HANDLE hTemplateFile ); READONLY: 읽기모드 OPEN_EXISTING: 파일이나 장치가 있는 경우에만 엽니다...

    [vision] YOLO Object Detection

    [vision] YOLO Object Detection

    인공지능 비전 시스템은 눈의 역할을 하는 감지 장치와 뇌의 기능을 맡아 이미지 해석과 분류를 맡는 알고리즘 이렇게 두가지 요소로 구성된다. yolo(You Only Look Once) 재학습은 크게 세 단계로 나뉜다. 1. 데이터 확보 labelImg와 같은 툴을 이용하여 직접 이미지와 데이터 파일을 생성 (이미지를 크롤링이나 이런 방식으로 모은 다음 하나하나 수작업으로 데이터 파일 생성) VOC/COCO 데이터셋 형태로 제공되는 이미지 데이터 사용 (convert2YOLO와 같은 tool을 사용해서 데이터 파일을 변환) 2. 데이터를 이용한 재학습 재학습을 하기 위해서는 처음 부터 학습을 하는게 아니라 전이학습을 이용한 pre-trained model 을 이용해야 한다. 이미 학습된 가중치 파일을 이용..

    [Leetcode] 237. Delete Node in a Linked List

    [Leetcode] 237. Delete Node in a Linked List

    Problem 단일 연결 목록 헤드가 있고 그 안의 노드를 삭제하려고 한다. 삭제할 노드가 제공된다. 헤드의 첫 번째 노드에 대한 액세스 권한이 부여되지 않는다. 연결 목록의 모든 값은 고유하며 주어진 노드가 연결 목록의 마지막 노드가 아님이 보장된다. 주어진 노드를 삭제한다. 노드를 삭제한다고 해서 메모리에서 제거하는 것은 아니다. 주어진 노드의 값은 연결 리스트에 존재하지 않아야 한다. 연결 목록의 노드 수는 1씩 감소해야 한다. 이전의 모든 값 node은 같은 순서로 되어 있어야 한다. 이후의 모든 값 node은 같은 순서여야 한다. 입력의 경우 전체 연결 목록 head과 제공할 노드를 제공해야 한다. 목록의 마지막 노드가 아니어야 하며 목록의 실제 노드여야 한다. 연결 목록을 만들고 노드를 함수에..

    scheduler - cron 표현식

    Cron cron은 Unix 계열 운영체제의 작업 스케줄러이다. 소프트웨어 환경을 설정하고 유지 관리하는 사용자는 cron을 사용하여 작업(command or shell script)을 예약하여 cron 작업이라고도 하며 고정된 시간, 날짜, 간격으로 주기적으로 실행한다. 일반적으로 시스템 유지 관리를 자동화하지만 범용 특성으로 인해 인터넷에서 파일을 다운로드하고 정기적으로 이메일을 다운로드하는 것과 같은 작업에 유용하다. 반복작업을 예약하는 데 가장 적합하고 일회성 작업 예약은 at 유틸리티를 사용하여 수행할 수 있다. Syntax # ┌───────────── 분 (0 - 59) # │ ┌───────────── 시(0 - 23) # │ │ ┌─── ────────── 요일(1 - 31) # │ │ ..

    [Leetcode] 976. Largest Perimeter Triangle

    Problem 정수 배열 num이 주어지면 이 길이 중 3개로 구성된 0이 아닌 면적을 가진 삼각형의 가장 큰 둘레를 반환한다. 0이 아닌 면적의 삼각형을 만드는 것이 불가능하면 0을 반환한다. Example 1 Input: nums = [2,1,2] Output: 5 Example 2 Input: nums = [1,2,1] Output: 0 Constraints 3

    [Leetcode] 334. Increasing Triplet Subsequence

    Problem 정수 배열 nums가 주어지면 i < j < k 및 nums[i] < nums[j] < nums[k]와 같은 세 개의 인덱스(i, j, k)가 있으면 true를 반환한다. 그러한 인덱스가 없으면 false를 반환한다. Input: nums = [1,2,3,4,5] Output: true Explanation: Any triplet where i < j < k is valid. Input: nums = [5,4,3,2,1] Output: false Explanation: No triplet exists. Input: nums = [2,1,5,0,4,6] Output: true Explanation: The triplet (3, 4, 5) is valid because nums[3] == 0 ..

    linux task mangement

    linux task mangement

    Task란 task: 자원 소유권의 단위 thread: 수행의 단위 process: 동작중인 프로그램 program: 디스크에 저장되어 있는 실행가능한 형태의 파일 test.c 는 'start' 라는 문자열을 출력한 후 5초 간 잠들었다가 'end' 라는 문자열을 출력한다. // test.c #include #include int main(void) { printf("start\n"); sleep(5); printf("end\n"); return 0; } gcc를 이용하여 test.c 소스를 컴파일하여 test라는 이름의 바이너리 프로그램을 생성한다. test 는 Intel x86 계열의 CPU 에서 수행가능한 ELF(Executable Linking Format)의 실행 파일이다. test를 백그라운드..

    Netty - 동기/비동기, 블로킹/논블로킹#2

    Netty - 동기/비동기, 블로킹/논블로킹#2

    동기/비동기 멀티스레드 프로그래밍에서 동기화는 하나의 데이터에 대한 동시 접근을 하나의 스레드로 한정한다는 의미이다. 비동기 호출을 지원하는 디자인 패턴은 다양하다.(Future, Observer, Callback, Reactor) netty는 비동기 호출을 위한 API들을 프레임워크 레벨에서 제공해서 개발자가 스레드 동기화 이슈를 신경쓰는 대신 구현할 기능에 집중할 수 있다. 블로킹/논블로킹 블로킹은 요청한 작업이 성공하거나 에러가 발생하기 전까지 응답을 돌려주지 않는 것 논블로킹은 요청한 작업의 성공 여부와 상관없이 바로 결과를 돌려주는 것 블로킹 소켓 import java.io.IOException; import java.io.InputStream; import java.io.OutputStream..

    Netty - Discard, Echo Service #1

    Netty - Discard, Echo Service #1

    개발환경 설정 JDK 설치 Apache Maven 설치 IDE 설치 netty dependency 추가 implementation 'io.netty:netty-all:4.1.68.Final' Discard 서버작성 데이터를 받기만하고 보내지 않는 Discard 서버를 만들어보자. 먼저 모든 netty 서버에는 다음이 필요하다. 클라이언트의 입력을 받아들일 포트를 지정하는 메인서버 클라이언트로부터 받아들인 입력 데이터를 처리하는 핸들러 BootStrapping: 서버를 구성하는 시작코드로 최소한 연결 요청을 수신할 포트에 서버를 바인딩한다. Discard Server 서버의 8888번 포트에 클라이언트 접속을 허용하고 클라이언트로부터 받은 데이터를 DiscardServerHandler 클래스가 처리하도록 ..

    리눅스 커널 구조

    리눅스 커널 구조

    리눅스 커널 구조 운영체제가 관리해야 할 자원은 크게 물리적인 자원과 추상적인 자원으로 구분할 수 있다. 물리적인 자원은 CPU, 메모리, 디스크, 터미널, 네트워크 등 시스템을 구성하고 있는 요소들과 주변 장치 등이 있다. 추상적인 자원은 물리적인 자원을 운영체제가 관리하기 위해 추상화 시킨 객체들이다. CPU를 추상화시킨 task 메모리를 추상화시킨 세그먼트와 페이지 디스크를 추상화시킨 파일 네트워크를 추상화시킨 프로토콜, 패킷 물리적인 자원에 대응하지 않으면서 추상적인 객체로만 존재하는 자원도 있다. (보안(security)나 사용자 ID에 따른 접근 제어(access control)등) 리눅스 개념적 구조 Task Manager cpu라는 물리적인 자원을 태스크라는 추상적인 자원으로써 제공 태스크..