일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- C알고리즘
- 신경망구현
- c언어
- 스트림암호
- FTZlevel10
- 파이썬신경망
- 신경망파이썬
- 머신러닝
- 8086CPU레지스터
- 인공지능
- 백준알고리즘
- 활성화함수파이썬
- 보안
- 달고나bof
- 소프트맥스함수
- 알고리즘
- 신경망 학습
- C언어 알고리즘
- 신경망
- BOF
- 파이썬
- 밑바닥부터시작하는딥러닝
- 정보보안
- 딥러닝파이썬
- 백준
- C언어알고리즘
- 버퍼오버플로우
- 항등함수
- 딥러닝
- BOJ
- Today
- Total
목록전체 글 (235)
HeeJ's
문제 화면 아무 값이나 입력하고 실행파일을 설치한 후, 실행시켜주면 register가 등록되지 않았다는 문자열이 출력된다. 메인 화면에서 [?] - [Register]에 들어가면 키를 등록할 수 있으며, 설치 시 등록한 키 그대로 OK를 누르면 오류 문자열과 함께 팝업이 뜨게 된다. 올리디버거로 파일을 바로 열어보았다. 우선, UNREGISTERED! REGISTER NOW!라는 문자열을 없애 주려고 한다. 문자열 검색을 통해 위치로 이동해주었다. 바로 위에 분기문을 찾을 수 있었다. 실행을 시키며 FLAG를 보게되면 조건이 맞지 않기 때문에 분기가 진행되지 않는다. 조건을 따지지 않고 점프를 하기 위해 JNZ를 JMP로 고쳐준다. 실행 결과 그리고 아까 확인했던 register key를 register..
리스트 내에 데이터를 매우 빠르게 탐색할 수 있음 순차 탐색(Sequential Search) : 리스트 안에 있는 특정한 데이터를 찾기 위해 앞에서부터 데이터를 하나씩 차례대로 확인하는 방법 리스트의 데이터에 하나씩 방문하며 특정한 문자열과 같은지 검사하므로 구현도 간단함 리스트에 특정 값의 원소가 있는지 체크할 때도 순차 탐색으로 원소를 확인하고, 리스트 자료형에서 특정한 값을 가지는 원소의 개수를 세는 count() 메서드를 이용할 때도 내부에선 순차 탐색 진행 순차 탐색 소스코드 def seq_search(n, target, array): # 각 원소를 하나씩 확인 for i in range(n): # 현재의 원소가 찾고자 하는 원소와 동일한 경우 if array[i] == target: retu..
1. 기초 정적 분석 1.1 VirusTotal 1.2 PEView 컴파일된 시간 확인 Address Table의 KERNEL32.dll 확인 대부분의 프로그램에 사용되는 dll API들로 어떤 동작이 있었는지 확인 가능 CreateMutexA : 이름이 있거나 이름이 없는 Mutex 오브젝트 생성 -> 동기화 진행 -> 다른 프로그램이 침범할 수 없게끔 -> 중복 실행 방지 CreateThread : 스레드 생성 -> 부가적인 스레드를 만들어냄 -> 동기화를 위해 Sleep, WaitForObject 실행 GetStartUpInfoA : StartUpInfo 구조체 생성 -> CreateProcess에 필요함(Process를 만드는 함수) TerminateProcess : 프로세스 종료 GetCurre..
소스코드에 별 다른 것은 없었다. script를 입력 칸에 바로 넣어주었더니 no hack이라는 문자열을 확인할 수 있었다. 한 글자 혹은 숫자는 그냥 있는대로 출력해준다. 문자 길이 필터링을 우회해서 문제를 풀어주면 된다. 그래서 NULL을 뜻하는 %00을 넣어 문자들을 출력해보았다. 의 문자들 사이에 일일이 %00을 넣어 실행시켜주었다. 문제 해결
문제 exe 상태 표시줄에 Unregistered가 뜬 것을 보아 레지스터의 라이센스 등록 우회를 진행해야한다. 이메일과 레지스터 키를 입력하는 곳도 찾을 수 있었다. 이 곳에서 이메일을 입력해주면, 레지스터는 알고리즘을 통해 가공하고, 키를 생성한다. 라이센스 넘버는 키와 같은지 확인하게 된다. 아무 값이나 입력해주었고, Wrong 문자열을 찾을 수 있었다. ollydbg로 프로그램을 바로 열어주었다. strings 검색을 통해 Wrong 문자열을 찾아주었다. 이 곳으로 들어가 바로 BP를 걸어주었다. 그 아래에선 성공 문자열처럼 보이는 문자열도 확인할 수 있었다. 바로 위의 JNZ 문에서 분기가 이루어지는 것 같아 BP를 걸어주었다. 바로 위의 TEST 구문을 통해 값이 셋팅되는걸 확인할 수 있다. ..
레나 3번 문제를 풀기 위해서는 nags를 제거하라는 문자열을 확인했다. nag를 제거하기 전에, PE 구조를 먼저 살펴본다. 레나 튜토리얼 3번 문제 RegisterMe.exe를 PEView를 이용해 열어주었다. PEView는 왼쪽에 PE 파일의 구조와 오른쪽에 파일들을 Byte로 표시한 것을 확인할 수 있다. 레지스터의 헤더 먼저 살펴보았다. 가장 위에는 윈도우 exe 파일의 헤더 시그니쳐인 MZ를 확인할 수 있다. MS-DOS Stub Program은 이 프로그램을 DOS 모드에서도 사용할 수 있는지 알려준다. 문자열을 보면 This program cannot be run in DOS mode 라고 적혀있다. 즉, 이 파일은 도스 모드에서 실행되지 않는다. 다시 IMAGE_DOS_HEADER에서 마..
악성코드 고급 정적 분석 : 아이다 활용 - PE, COFF, ELF 지원 - x86/ x64 지원 - 함수 발견, 스택 분석, 지역 변수 확인 등 수 많은 기능 제공 - 과정의 모든 부분을 수정, 조 작, 재배피, 재정의 - 분석 진행 상황 저장 기능(주석 작성, 라벨링, 함수 이름 붙이기) - 막강한 플러그인 지원(C Decompiler) 그래프 모드 - 그래프 형태로 출력 - 화살표 색깔과 방향 이용 ( 빨강 : 조건 점프 거짓 초록 : 조건 점프 참 파랑 : 무조건 점프 ) 텍스트 모드 - 기존의 보기 방식 - 메모리 주소, 옵코드, 섹션명 등 출력 ( 실선 : 무조건 점프 점선 : 조건 점프 ) 분석에 유용한 윈도우 - 함수 윈도우 : 실행 파일 내의 모든 함수를 목록화 - 이름 윈도우 : 함수..
정렬(Sorting) 데이터를 특정한 기준에 따라서 순서대로 나열하는 것 정렬 알고리즘으로 데이터를 정렬하면 이진 탐색(Binary Search)이 가능해진다. 1. 선택 정렬 (Selection Sort) 가장 작은 데이터를 선택해 맨 앞에 있는 데이터와 바꾸고, 그 다음 작은 데이터를 선택해 앞에서 두 번째 데이터와 바꾸는 과정을 반복 가장 작은 것을 선택해서 앞으로 보내는 과정을 반복하면 전체 데이터의 정렬이 이루어짐. [ 7, 5, 9, 0, 3, 1, 6, 2, 4, 8 ] 에서 가장 작은 데이터인 0을 1번째 인덱스인 7과 자리를 바꾼다. [ 0, 5, 9, 7, 3, 1, 6, 2, 4, 8 ] 두 번째로 가장 작은 데이터인 1과 2번째 인덱스인 5와 자리를 바꾼다. [ 0, 1, 9, 7,..