공부 29

JNI 사용하기

JNI(Java Native Interface)란? (내가 이해한 바에 따르면) 자바를 사용하면 운영체제 상관없는 개발이 가능하다. 하지만, 운영체제의 모든 기능을 JVM이 담지 못하기 때문에 몇몇 기능은 해결이 되지 않는다. (ex. 하드웨어 제어가 필요한 경우, 프로세스 성능 향상 등) 이러한 경우에는 운영체제가 구현된 언어 (C, C++ 등)을 사용할 필요가 있고, 이 때 JNI가 사용된다. https://re-build.tistory.com/7 [Android] 안드로이드 스튜디오에서 JNI 사용하기 이번 포스팅은 제가 이번에 프로젝트를 진행하면서 JNI를 사용해야 할 상황이 생겨 구현하면서, 알게 된 것들을 기록하는 목적으로 작성합니다. JNI?JNI란 Java Native Interface의 ..

안드로이드 기본

안드로이드 스튜디오를 설치했다. 나는 Kotlin은 쓸 줄 몰라서 자바를 선택했다. 기본으로 Hello World!가 뜨는 것 같다. 빨간색 : 앱의 많은 정보를 담고 있으며, Activity를 만들 때마다 여기에 등록을 해줘야 함. https://developer.android.com/guide/topics/manifest/manifest-intro?hl=ko 앱 매니페스트 개요 | Android 개발자 | Android Developers 앱 매니페스트 개요 컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요. 모든 앱 프로젝트는 프로젝트 소스 세트의 루트에 AndroidManifest.xml 파일(정확히 이 이름) developer.android.com 노란색 : 자바 파일..

OSI 7계층

계층별로 프로토콜을 개발해 네트워크 구성 요소들을 모듈화할 수 있다. 1. 물리 계층 주로 전기 신호 전달. 전기 신호가 들어오면 재생성해서 전기 신호가 들어온 포트를 제외하고 모든 포트에 전송한다. *통신 단위: 비트 2. 데이터링크 계층 들어온 전기 신호를 데이터 형태로 처리하고, 데이터에 대한 에러 탐지가 가능하다. 스위치는 목적지의 MAC 주소를 파악하고 목적지가 연결된 포트로만 전기 신호를 보낸다. *통신 단위: 프레임 3. 네트워크 계층 라우터는 IP 주소를 사용해 최적의 경로를 찾고 해당 경로로 패킷을 전송한다. *통신 단위: 패킷 4. 전송 계층 패킷이 유실되거나 순서가 바뀌는 것을 바로 잡는 등 데이터가 정상적으로 잘 보내지도록 확인한다. 시퀀스 번호와 ACK 번호를 사용한다. 시퀀스 번..

공부 2023.06.01

PE 구조

계산기를 분석하며 PE 구조를 공부해보자. (계산기 파일은 Windows >System32 폴더에 있다) (분석 툴은 Peview를 사용했다) 1. PE 구조 *PE란: PE 파일은 크게 PE 헤더와 PE 바디로 나뉜다. 초록색 네모가 PE 헤더, 하늘색 네모가 PE 바디이다. 2. PE 헤더 PE 헤더에는 파일을 실행하기 위한 전반적인 정보가 구조체 형식으로 저장되어 있다. 1) IMAGE_DOS_HEADER PE 헤더 제일 앞부분에는 기존 DOS EXE Header를 확장시킨 IMAGE_DOS_HEADER 구조체가 존재한다. 가장 중요한 필드는 e_magic과 e_lfanew이다. e_magic 필드는 MZ(4D 5A)로 값이 고정되어 있으며 PE 파일이 맞는지 확인할 때 쓰인다. e_lfanew는 ..

공부/리버싱 2023.05.28

vi 편집기

vi 편집기는 명령모드, 입력모드, 콜론모드로 나뉜다. vi 명령어를 이용해 vi 에디터를 실행하고.. 필요한 내용을 입력한다. (현재 입력 모드) 만약 내용을 잘못해서 수정이 필요하다면 명령모드에서 삭제 또는 복사 등을 할 수 있다. 입력 모드에서 명령 모드로 가기 위해서는 ESC 키를 누르면 된다. x 를 입력해 현재 커서가 위치한 문자를 삭제, dd 를 입력해 현재 커서가 위치한 곳의 한 줄을 삭제할 수 있다. 반대로, 명령모드에서 i 를 입력해 입력모드로 전환할 수 있다. 수정을 했고 더 입력할 내용이 없다면.. 명령모드에서 : 를 입력해 콜론 모드로 전환한 후 필요한 명령어를 입력해 저장한다. 자주 쓰는 것은 :q! (vi 편집기 강제 종료), :wq! (강제 저장 후 종료) 정도인 것 같다. ..

공부 2023.05.28

도커3

지난 포스팅에서는 Dockerfile을 이용해 이미지를 만들어 보았다. 이번에는 commit 명령어를 이용해 이미지를 만들 계획이다. *build와 commit의 차이점: (내가 이해한 바로는) build는 이미지에서 컨테이너를 생성하는 방법이다. 반면, 컨테이너에서 수정한 내용은 저장되지 않기 때문에 현재 상태의 컨테이너를 저장하고 싶을 때 commit 명령어를 사용해 이미지를 생성한다. 1. 사전 작업 새로 만든 컨테이너가 깨끗하다. 여러 패키지를 다운받고 commit을 이용해 기본 패키지가 깔려있는 우분투 이미지를 만들어 보겠다. 예를 들어, vim 편집기, net-tools 를 깔아보자 exit 명령어를 이용해 컨테이너를 나왔다. 2. 이미지 생성 commit을 이용해 이미지 생성을 해보자. do..

공부/도커 2023.05.28

도커2

1. 도커 이미지 만들기 도커 이미지를 만드는 방법은 여러 가지가 있다. 그 중 이번 포스팅에서는 DockerFile이라는 이미지 생성 파일을 만드는 법을 실습하겠다. 2. DockerFile 만들기 docker_folder 이라는 디렉토리를 생성해주고.. 그 안에 Dockerfile 폴더를 만들어줬다. 그 후 Dockerfile을 작성한다. *Dockerfile: vi편집기를 사용해 내용을 아래와 같이 Dockerfile에 적어주었다. FROM ubuntu:bionic RUN apt-get update RUN apt-get install -y git 그 다음 docker build -t ubuntu:Dockerfile . 를 입력해 이미지를 생성했다. *docker build 명령어로 이미지를 생성하고..

공부/도커 2023.05.27

도커

1. 도커란 도커는 '컨테이너 기반의 오픈소스 가상화 플랫폼'이다. 컨테이너란 가상화 기술 중 하나로, 애플리케이션과 바이너리, 라이브러리 등을 패키지로 묶어 배포한다. 다양한 프로그램들과 실행환경을 규격화 시켜 프로그램의 배포 및 관리를 단순화한다. 도커는 운영체제 커널이 하나밖에 없기 때문제 운영 체제 수준에서 업데이트 또는 패치 작업을 한 번만 수행하면 변경 사항이 모든 컨테이너에 적용된다. 개발/실행 환경이 달라도 정상 작동하는 이유는 도커 컨테이너(도커 이미지)가 도커 엔진 위에서 실행되기 때문이다. 이미지는 컨테이너 실행에 필요한 파일과 설정값 등을 포함하고 있는 것이다. 도커 이미지로 서버를 실행하면 도커 컨테이너가 만들어진다. 같은 이미지에서 여러 개의 컨테이너를 생성할 수 있으며, 컨테이..

공부/도커 2023.05.27

Petya 랜섬웨어 분석

공백이 한 달쯤 있었던 것 같다.. 나는 그 동안 petya 랜섬웨어를 분석했다. 첫 랜섬웨어 분석이라 지인의 도움을 받았음에도 많이 헤멨고, 아직 완벽하게 분석을 끝내지도 못했다. 추후에 추가 분석을 진행하기로 하고, 며칠 미뤘던 분석 정리를 하려고 한다. 분석은 2021.08.04 ~ 2021.08.27 동안 진행됐다. (사실 앞 2주간은 어떻게 하는건지 감 잡으면서 한창 삽질만 했고 마지막 일주일에 거의 모든 내용이 나왔다) (나중에 추가/수정 해야하는 부분은 녹색으로 적겠다) 목차 Petya란 분석 환경 정적 분석 동적 분석 1. Petya란 페트야(petya)는 마이크로소프트 윈도우 기반 시스템을 대상으로 하며 마스터 부트 레코드(MBR)를 감염시켜 하드 드라이브의 파일 시스템 테이블을 암호화하..

공부/리버싱 2021.09.08