일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 항등함수
- 알고리즘
- 백준
- 신경망파이썬
- BOF
- 신경망 학습
- c언어
- BOJ
- 소프트맥스함수
- C언어알고리즘
- 정보보안
- 활성화함수파이썬
- C알고리즘
- 파이썬신경망
- 파이썬
- 밑바닥부터시작하는딥러닝
- 달고나bof
- 버퍼오버플로우
- FTZlevel10
- 8086CPU레지스터
- 스트림암호
- 딥러닝파이썬
- 보안
- C언어 알고리즘
- 신경망
- 인공지능
- 신경망구현
- 백준알고리즘
- 머신러닝
- 딥러닝
- Today
- Total
목록분류 전체보기 (235)
HeeJ's
2번 reverseMe.exe를 실행시켰는데, 바로 Congratz가 뜨기에 당황했지만, 잘 보면 폴더에 Keyfile이 존재한다. 이 파일을 만드는게 2번 문제의 목적이라고 한다. keyfile을 지워주고 다시 실행시켜보았다. 그러자 라이센스가 만료되었다고 새 라이센스를 구입하라는 창이 떴다. 올리디버거로 열어보았다. [F8]로 실행 시키다가 보니, CreateFileA라는 함수가 나왔다. CreateFileA 함수는 '파일 또는 I/O 장치를 만들거나 여는 것'을 수행한다. 여기서 "Keyfile.dat" 파일을 불러오는 것 같다. 계속하여 실행해주더니 Keyfile이 없어서인지 오류 메세지가 출력되고, 프로세스가 종료되었다. 그렇다면 Keyfile.dat를 생성하고, 이에 라이센스가 들어가 있다면 ..
악성코드 분석의 네 가지 접근 방법 1. 완전 자동화 분석 (Fully-automated analysis) - 정적 분석 및 동적 분석을 통해 악의적인 행위를 판단 - 자동 분석 수행 (파일 생성, 수정 과정의 분석, 레지스트리 분석, 네트워크 분석 등) - 전문가에 의해 분석되는 만큼 상세하거나 정확하지 않을 수 있음 - 악성코드 분석 제공 서비스 2. 정적 속성 분석 (Static properties analysis) - 악성코드의 추가 분석을 위해 필요한 단계 - 문자열 헤더 정보, 해시 값, 리소스 정보, 패킹 여부 등신속하게 정보 획득 - 정보들을 활용해 실행 파일 간의 비교 데이터베이스를 구성 - 바이러스 토탈(VirsuTotal) 서비스 3. 대화형 동적 분석 (Interactive Beha..
탐색(search) 많은 양의 데이터 중에서 원하는 데이터를 찾는 과정 대표적인 탐색 알고리즘 : DFS/BFS 제대로 이해하기 위해 기본적인 자료구조인 스택, 큐에 대한 이해 필요 자료구조(Data Structure) 데이터를 표현하고 관리하고 처리하기 위한 구조 기초 개념 : 스택, 큐 핵심 함수 삽입(push) : 데이터를 삽입한다. 삭제(pop) : 데이터를 삭제한다. * 오버플로우(Overflow) : 특정 자료구조가 수용할 수 있는 데이터의 크기가 가득 찬 상태에서 삽입 연산 수행 시 발생 언더플로우(Underflow) : 특정 자료구조에 데이터가 들어있지 않은 상태에서 삭제 연산 수행 시 발생 스택(stack) 후입선출(Last In First Out) 구조 초기단계 [ , , , , ] p..
구현 머릿속에 있는 알고리즘을 소스코드로 바꾸는 과정 원하는 풀이과정을 원하는 프로그래밍 언어로 정확히 구현해낼 수 있어야 함. 모든 알고리즘 문제를 '구현'해야하기 때문에, 주로 구현 문제로 정의되는 것은 풀이를 떠올리는 것은 쉽지만 소스코드로 옮기기 어려운 문제들을 의미한다. 구현하기 어려운 문제 예시 1. 알고리즘은 간단한데 코드가 길어지는 문제 2. 특정 소수점 자리까지 출력해야하는 문제 3. 문자열이 입력으로 주어졌을 때 한 문자 단위로 끊어서 리스트에 넣어야하는(파싱 하는) 문제 등 => 프로그래밍 문법을 정확하게 숙지하거나, 라이브러리 사용 경험이 충분해야한다. + 완전 탐색(모든 경우의 수를 주저 없이 다 계산하는 해결 방법), 시뮬레이션(문제에서 제시한 알고리즘을 한 단계씩 차례대로 직접..
그리디 알고리즘이란 글로벌 최적을 찾기 위해 각 단계에서 로컬 최적의 선택을 하는 문제 해결 알고리즘이다. 즉, 바로 눈 앞의 이익만을 좇는 알고리즘이다. 대부분의 경우에는 뛰어난 결과를 도출하지 못하지만, 드물게 최적해를 보장하는 경우도 있다. 어떠한 문제가 있을 때, 단순 무식하게 지금 당장 좋은 것을 고리는 방법이다. 매 순간 가장 좋아 보이는 것을 선택하며, 현재의 선택이 나중에 미칠 영향에 대해서는 고려하지 않는다. * 탐욕 선택 속성 : 앞의 선택이 이후 선택에 영향을 주지 않는 것 그리디 알고리즘의 대표 문제들 1. 거스름돈 문제 당신은 음식점의 계산을 도와주는 점원이다. 카운터에는 거스름 돈으로 사용할 500원, 100원, 50원, 10원짜리 동전이 무한히 존재한다. 손님에게 거슬러줘야 할..
PE 파일 - 파일 포멧을 알아야 하는 이유 1. 프로세스 적재를 위한 정보 2. API 호출을 위한 IAT 3. 코드 사이즈와 각 섹션의 위치 4. 언패킹 (exe 파일들을 보호하는 패킹) 5. 바이러스 분석 6. 안티 디버깅 PE 파일 (=Portable Executable File Format) : 파일이 이식 가능한 곳에 옮겨져도 (같은 OS 내에서) 실행 가능하도록 만든 포멧 - 윈도우에서 사용하는(운영체제 종속적) 실행파일, DLL 파일 등을 위한 파일 형식 - 윈도우 로더가 실행가능한 코드를 관리하는데 필요한 정보를 캡슐화한 데이터 구조체 - 링킹을 위한 동적 라이브러리 참조, API 익스포트와 임포트 테이블, 자원 관리 데이터 그리고 TLS 데이터를 포함 실행파일 컴파일 과정 Sourche..
레나 튜토리얼 다운로드 https://github.com/re4lfl0w/lena_reversing lena tutorial 01번 문제 Reverse Me.exe를 실행 시키면 위와 같은 창이 뜬다. Ollydbg로 열어준 후, 우선 프로그램의 흐름을 이해하기 위해 F8로 계속 실행시켜 보았다. 이 부분에서 Jump is NOT taken이라는 것을 보면, 위의 CALL 함수 내부에서 시리얼 값과 입력 값을 비교해 아래 CMP문을 통해 Jump로 구분된다는 것을 유추해볼 수 있다. 그 상태로 프로그램을 그냥 실행시켜 보았더니, 라이센스를 구매하라는 창과 함께 프로세스가 종료되었다. 다시 아까 그 JMP문으로 와서 Zflag를 0으로 바꾸어 JMP가 실행되도록 해주었다. 아래의 ReadFile 내에서도 ..
문제 화면을 보면 nickname, comment, captcha 라는 세 가지 입력 창이 있고, submit 버튼과 reset 버튼을 확인할 수 있다. 우선 세가지 입력 창에 무슨 값이 들어가야하는지 알기 위해 소스코드를 보았다. submit 버튼을 누르면 ck() 함수가 호출되는 것을 확인할 수 있다. ck() 함수를 살펴보면 nickname, comment, captcha 값에 공백이 있다면 바로 return 해주는 것을 확인할 수 있다. 그렇기 때문에 세 칸은 모두 채워져있어야 하며, captcha 값은 특정한 값임을 알 수 있다. captcha에 들어가야할 값이 lv5frm.captcha_.value인 것 같아 개발자도구의 콘솔을 통해 값을 확인해 주었다. captcha의 텍스트 박스 옆에 쓰여..