
어셈블리어를 보면 다음과 같이 숫자들이 적혀있는 것을 볼 수 있다. 이런 숫자들을 Operation Code라고 한다. 컴퓨터 명령어란 사람이 만든 프로그램(고수준 언어로 작성한 프로그램)을 번역해 컴퓨터가 알아들을 수 있는 명령어(기계 언어)로 바꿔 놓은 것이다. 컴퓨터가 명령을 처리하기 위해서는 이 opcode와 데이터를 찾는 주소(Operand)를 가지고 있어야 한다. opcode와 operand를 합쳐 명령어(instruction)라고 부른다. 위 사진의 첫번째 명령어를 보자. mov qword ptr ss:[rsp+10],rbx 간단히 rsp+10 주소에 있는 값에 rbx 값을 넣어라. 라는 명령어 이다. mov가 opcode이고 qword ptr ss:[rsp+10],rbx가 operand이다..
랜섬웨어에서 사용하는 암호화 알고리즘 대칭키는 속도가 빠름. 비대칭키는 공개키로 암호화하고 개인키로 복호화해 보안적으로 강력하지만 속도가 느림. 하이브리드형은 파일을 대칭키로 암호화하고 키를 공개키로 암호화해 개인키가 있어야지 대칭키를 얻을 수 있게함. 랜섬웨어에서 사용하는 암호 알고리즘 TEA 128비트 키 사용 64라운드 페이스텔구조 AES https://mike-tyson.tistory.com/6 - AES openssl RC4 MD5 RSA cryptohunt 논문 정리 악의적인 페이로드는 안티멀웨어스캐닝을 지연시키기위해 암호화를 진행하는 경우도 있음. OpenSSL이나 Mircosoft Crpytography API는 다시 사용되는 암호화 함수를 간단한 일로 만든다. -> OpenSSL이나 MS..

OpenSSL을 다음 사이트에 설치를 해준다. https://sourceforge.net/projects/openssl/ OpenSSL Download OpenSSL for free. This project offers OpenSSL for Windows (static as well as shared). It supports: FIPS Object Module 1.2 and CAPI engine. sourceforge.net 1.압축해제 후 생성된 bin 디렉토리 내 파일들을 C:\OpenSSL 디렉토리에 넣어준다.(OpenSSL 디렉토리는 만들어야 한다.) 2.C:\OpenSSL을 시스템 변수에 등록해준다. 3.다음 사항도 하나 만들어 준다. 4.openssl.exe를 실행한다. 5.다음 명령으로 개인..

PIN tool은 동적으로 바이너리를 분석하기 위해 사용하는 도구이다. 이 도구를 활용해 프로그램 run time시에 코드를 삽입해 Recompile과 Relink가 필요없기 때문에 작업의 효율성이 높고, 실행 중에 발생하는 동작이나 코드를 처리할 수 있다. pin은 JIT 컴파일러로 프로그램을 실제 실행하는 시점에 기계어로 번역하는 방법이다. 이 방법은 컴파일과 인터프리트 방법을 혼합해 사용하는 방법이다. pin 실행 pin을 설치하면 다음과 같이 다운로드가 된다. 먼저 보이는 pin.exe는 32비트에서 사용하는 pin 프로그램이고 64비트 환경에서는 intel64\bin 디렉토리 내에 있는 pin.exe를 사용해야 한다. pin 실행 준비 source\tools\ManualExamples 디렉토리를..

PIN에서 사용하는 API들에 대해 정리하려고 한다. 먼저 pin은 jit 컴파일 버전임이 중요하다. 이는 프로그램을 실제 실행하는 시점에 기계어로 번역하는 기법이다. 프로그램 전체를 스캔하여 모두 기계어로 번역하는 컴파일러 방식과 프로그램 실행 시 한번에 한 문장만 기계어로 번역하는 인터프리터 방식의 중간 방식이라고 할 수 있다. 실행 시점에 인터프리터 방식으로 기계어로 번역하고 해당 기계어를 캐싱하여 같은 함수가 여러번 불릴 때 다시 기계어가 생성되는걸 방지한다. pin은 이런 방식을 trace instrumentation이라고 부른다. TRACE란 TRACE란 처음 시작 부분부터 끝날 때까지의 BBL들의 연속된 리스트이다. 예를 들어 main문을 실행하다 다른 함수의 호출을 만나게 되면 pin을 새..

RSA 공개키 암호 알고리즘. 전자서명에서 사용함. 1. B가 공개키와 개인키를 만들어 A에게 공개키를 보낸다. 2. A가 B로부터 받은 공개키를 이용해 보낼 정보를 암호화한다. 3. A가 암호화된 정보를 B에게 보낸다. 4. B가 암호화된 정보를 받고 개인키를 이용해 암호를 해독한다. (1) 개인키와 공개키 만들기 공개키는 n,e 두 정수로 구성, 개인키는 n,d로 구성. n구하기 두 소수 p,q를 정하고 n=p*q이다. e구하기 Φ(n) = (p - 1) * (q - 1) 공식을 이용해 Φ(n)를 구한다. e는 1 < e < Φ(n) 이고, Φ(n)와 서로소인 e를 정한다. e는 공개키에 이용된다. d구하기 (e * d) mod Φ(n) = 1 e * d를 Φ(n)로 나눴을 때 나머지가 1인 d를 구..

시스템 콜이란? 응용프로그램에서 운영체제에게 기능을 수행해달라고 하는 수단 사용자 프로세서가 소프트웨어 인터럽트를 통해 커널의 기능을 이용하기 위한 서비스를 요청하는 방법. 시스템 콜 = 소프트웨어 인터럽트 main함수에서 fork()를 호출하고 fork()함수 내에 선언되어 있는 system_call()함수가 호출되면 sys_call_table에서 호출하려는 기능을 찾아 실행함. 시스템 콜과 라이브러리 함수의 차이점 시스템콜의 수행공간은 커널 모드이고 메모리 할당은 별도로 사용자 모드에서 메모리 할당이 필요하다. fd 사용. 라이브러리 함수의 수행공간은 사용자 모드이고 메모리 할당 여부는 라이브러리 함수에서 할당된 메모리를 이용한다. 파일 포인터 사용. 파일 디스크립터 파일을 열면 파일 디스크립터가 반..
arr=[5, 4, 6, 8, 2, 3, 1, 7, 9, 0] 위 배열을 합병 정렬을 사용해 오름차순으로 정렬 해보자. 합병 정렬은 mid값으로 계속해서 분할해 각각을 오름차순으로 정렬한 후 병합하는 방법이다. 일단 전체 배열의 mid값 4를 기준으로 나눈다.(4.5같은 경우엔 버림해 4로 계산한다) [5, 4, 6, 8, 2]와 [ 3, 1, 7, 9, 0]로 나눈다. [5, 4, 6, 8, 2]도 Mid값을 이용해 나눈다. [5, 4, 6]와 [8, 2]로 나눈다. 이 또한 [5, 4],[6]와[8],[2]로 나뉜다. 다시 [5],[4]와[6]와[8],[2]로 나뉘어진다. [5],[4],[6]을 합병하면 [4, 5, 6]이 된다. 또 [8],[2]를 합병해 [2, 8]을 만든 후 [4, 5, 6]과 ..
arr = [5, 4, 6, 8, 2, 3, 1, 7, 9, 0] 위 배열을 퀵 정렬을 통해 오름차순으로 정렬해보자. 퀵 정렬은 pivot과 2개의 비교가 필요하다. arr[0]=5를 pivot으로 설정하고 arr[1]=4부터 뒷방향으로의 비교, arr[9]=0부터 앞방향으로의 비교. arr[1]의 비교를 i라고 하고, arr[9]의 비교를 j라고 하겠다. pivot과 i,j를 비교하면 된다. i는 pivot보다 작을 경우 앞으로 나가고, j는 pivot보다 클 경우 뒤로 간다. i=arr[1]=4 < arr[0]=5 이므로 i=arr[2]=6이 되고, j=arr[9]=0 arr[0]=5 이므로 정지. i와j가 모두 정지했을 때 두 값을 swap한다. arr = [5, 4, 0, 8, 2, 3, 1, 7..
- Total
- Today
- Yesterday
- CAN-FD
- 단순선형회귀
- AVB
- 차량 네트워크
- 머신러닝
- 케라스
- 차량용 이더넷
- 크로스 엔트로피
- SOME/IP
- problem statement
- many-to-many
- 로지스틱회귀
- Ethernet
- automotive ethernet
- 논문 잘 쓰는법
- json2html
- automotive
- PCA
- cuckoo
- 이상탐지
- HTML
- SVM
- 딥러닝
- Python
- AVTP
- many-to-one
- porks
- one-to-many
- AE
- 회귀
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |