전체 글 171

인시큐어뱅크(InsecureBankv2) 앱 설치

인시큐어뱅크(InsecureBankv2) 앱 설치 파일 다운로드 아래 링크에서 인시큐어뱅크 앱 소스를 다운로드 받을 수 있다. 인시큐어뱅크 백엔드 서버, 안드로이드 애플리케이션 소스 등이 포함되어 있다. https://github.com/dineshshetty/Android-InsecureBankv2 GitHub - dineshshetty/Android-InsecureBankv2: Vulnerable Android application for developers and security enthusiasts to learn ab Vulnerable Android application for developers and security enthusiasts to learn about Android insecu..

Nox 개발자 옵션 활성화

Nox 개발자 옵션 활성화 녹스 에뮬레이터 설정 변경 녹스 앱의 설정이 아닌 녹스 에뮬레이터 설정이다. 바탕화면에서 설정을 클릭한다. 태블릿 정보 클릭 설정의 맨 아래 쪽의 태블릿 정보를 클릭한다. 빌드 번호 연속 클릭 빌드 번호를 연속으로 클릭한다. 연속으로 클릭하면 설정 화면 목록에 이 추가된 것을 확인할 수 있다. USB 디버깅 허용 USB 디버깅을 허용하면 설정이 완료된다. 새 프로젝트 만들기 안드로이드 스튜디오에서 새 프로젝트를 만들어 RUN 시켜본다. 메뉴에서 실행할 에뮬레이터를 samsung으로 시작하는 에뮬레이터로 설정하고 RUN을 누르게 되면 아래 화면처럼 안드로이 스튜디오에서 개발한 앱을 녹스 에뮬레이터에서 확인할 수 있다.

Nox 설치와 환경 설정

Nox 설치와 환경 설정 Nox 설치 안드로이드 스튜디오의 에뮬레이터 속도가 다소 느리기 때문에 녹스를 설치한다. 다수 에뮬레이터를 동작시켜 동시 진단이 가능하다는 장점이 있다. Nox 설치는 아래의 링크로 다운받을 수 있다. https://kr.bignox.com/ Noxplayer – Fastest and Smoothest Android Emulator for PC & Mac – Free and Safe Play the most popular mobile games and run apps on PC with NoxPlayer, the best Android Emulator. Supports Android 9. Compatible with Windows & Mac. Much faster and more..

Android Studio 설치 & 가상 에뮬레이터 설정

Android Studio 설치 아래의 링크에서 Android Studio의 최신 버전을 설치할 수 있다. https://developer.android.com/studio 전부 다 Next 버튼을 눌러 설치한다. 설치를 완료하면 다음과 같이 Standard와 Custom을 선택하는 창이 있는데 Standard를 선택하고 Next를 눌러준다. 라이센스 조항에 관련된 항목인데 옆에 목록을 하나씩 선택 후 전부 Accept(수락)한 후 Finish를 클릭하면 안드로이드 스튜디오를 설치할 수 있다. 다운로드가 완료되면 다음과 같이 안드로이드 스튜디오 초기 화면을 볼 수 있다. 가상 에뮬레이터 설정 초기 화면에서 Virtual Device Manager를 선택하여 Android Virtual Device의 이름..

윈도우에 JDK(JavaSE Develoment Kit) 설치와 환경 변수 설정

JDK 설치 안드로이드 애플리케이션 개발 환경을 구축하려면 안드로이드 스튜디오를 사용해야 하며, 이 안드로이드 스튜디오는 JDK의 설치가 필요하다. 아래 링크에서 PC에 맞는 운영체제 버전의 JDK를 선택하고 다운로드 받는다. https://www.oracle.com/java/technologies/downloads/#java18 Download the Latest Java LTS Free Subscribe to Java SE and get the most comprehensive Java support available, with 24/7 global access to the experts. www.oracle.com JDK 다운로드 경로 확인 설치가 완료되었다면 환경변수를 설정해야 한다. 그러기 위해..

Exercise: Helloworld

이번 코스에서는 간단한 예제인 HelloWorld.exe을 분석해보는 실습을 할 것이다. 예제는 1초를 대기하고 Hello, world!를 출력하는 프로그램이다. /* File: hello-world.cpp Build opts: - /MT -> Library Static Linking - /DYNAMICBASE:NO -> Disable ASLR - /od -> Disable Optimization */ #include #include char* str; int main() { int delay = 1000; Sleep(delay); // 1000ms(1초)를 대기합니다. str = (char*)"Hello, world!\\n"; printf(str); return 0; } 정적 분석 신뢰할 수 없는 프로..

Reverse Engineering 2023.07.02

Tools: IDA

The Interactive Disassembler (IDA)는 Hex-Rays 사에서 제작한 디스어셈블러이다. IDA의 메인 기능은 디스어셈블이지만 이 외에도 여러 환경에서의 디버깅과 다양한 아키텍처 디컴파일과 같이 여러가지 기능을 제공한다. 이 때문에 바이너리를 분석해야 하는 리버스 엔지니어링 업무에는 대다수 IDA를 이용한다. IDA Pro는 대략 천만원에서 이천만원 사이의 금액대를 가지지만 Hex-Rays 사는 IDA Freeware를 제공한다. IDA Freeware는 x64 아키텍처에 한해 디컴파일 기능을 지원하며, 상업적 목적 이외의 교육적 목적으로는 이용 가능하다. IDA 설치 IDA Freeware는 https://hex-rays.com/ida-free/ 에서 다운로드할 수 있다. 파일 ..

Reverse Engineering 2023.07.02

x86 Assembly: Essential Part(1)

컴퓨터 과학자 중 한 명인 David Wheeler는 EDSAC을 개발하면서 어셈블리 언어와 어셈블러라는 것을 고안했다.소프트웨어를 역분석하는 사람들은 역발상을 더해, 기계어를 어셈블리 언어로 번역하는 역어셈블러를 개발했다. x86-64 어셈블리 언어기본 구조x64 어셈블리 언어는 우리가 사용하는 한국어보다는 훨씬 단순한 문법 구조를 지닌다.이들의 문장은 동사에 해당하는 명령어(Operation Code, Opcode)와 목적어에 해당하는 피연산자(Operand)로 구성된다. 명령어인텔의 x64에는 매우 많은 명령어가 존재한다.이 중 중요한 21개의 명령어는 다음과 같다.명령 코드데이터 이동(Data Transfer)mov, lea산술 연산(Arithmetic)inc, dec, add, sub논리 연산(..

Reverse Engineering 2023.07.02

Background: Windows Memory Layout

메모리 레이아웃(Memory Layout)이란 프로세스 가상 메모리(Virtual Memory)의 구성을 말한다. 프로그램을 실행하면 운영체제는 프로세스에게 사용 가능한 메모리 공간을 할당해 준다. 컴퓨터 과학에서는 이 공간을 가상 메모리라고 부른다. 운영체제는 프로그램의 정보를 참조하여 프로그램에 저장된 데이터가 적절한 영역에 저장되게 한다. 프로세스 메모리 구조 섹션 윈도우의 PE 파일은 PE 헤더와 1개 이상의 섹션으로 구성되어 있다. 여기서 섹션이란, 유사한 용도로 사용되는 데이터가 모여있는 영역이다. 섹션에 대한 정보는 PE 헤더에 적혀있다. PE 헤더에 저장되는 섹션과 관련된 데이터 중, 중요한 것은 다음과 같다. 섹션의 이름 섹션의 크기 섹션이 로드될 주소의 오프셋 섹션의 속성과 권한 윈도우..

Reverse Engineering 2023.07.02