현재 맥북을 새로 포맷을 진행하고, 다시 깔기 시작하면서 필요한, 좋은 프로그램을 정리해놓고자 합니다.

분류는 다음과 같이 이루어집니다.

정렬해놓지는 않았으며, 거의 설치한 시간순서대로 진행됩니다.

A. 맥북에서 사용하면 좋은 세팅

B. 코딩할 때 필요한 세팅

B-1. M1 환경에서 React-Native ios, android 개발환경 세팅

C. 기타 사용하는 세팅

 

C. M1 맥 포맷 방법

1. 전원을 끈다.

2. 전원버튼을 꾹 누르고 시스템 창이 뜰때까지 누른다.

3. 디스크로 들어가서, 데이터를 다 지운다.

4. OS를 설치한다.

끝!

 

B. Xcode 설치하기

- 프로그래밍 관련 개발자 도구

- 용량이 엄청나게 크다 (10GB정도?)

- AppStore에서 다운

 

A. Amphetamine 설치하기

- 화면 모니터가 꺼지는걸 방지하는 프로그램

-AppStore에서 다운

 

A. Istat Menus 설치하기

- 내 컴퓨터의 리소스 사용량을 알 수 있는 프로그램

- 12000원인가 하는 유료 프로그램

- AppStore, 개발자 사이트 모두 받을 수 있지만, AppStore에서 제공하는 프로그램은 m1 맥북의 온도센서 정보를 알려주지 않는다

https://bjango.com/mac/istatmenus/

 

iStat Menus

An advanced Mac system monitor for your menubar, with CPU, GPU, memory, network, disk usage, disk activity, temperatures, fans, battery info and more.

bjango.com

 

B. Iterm2 설치하기

- 터미널 대체 프로그램

https://iterm2.com/

 

iTerm2 - macOS Terminal Replacement

iTerm2 by George Nachman. Website by Matthew Freeman, George Nachman, and James A. Rosen. Website updated and optimized by HexBrain

iterm2.com

- Rosetta 방식으로 실행 설정 (정보불러오기에서 변경)  + 이때 Rosetta도 설치

- Apple Silicon 방식의 실행은 Terminal로 Rosetta 방식의 실행은 Iterm2로 사용

 

 

B. oh-my-zsh 설치하기

- zsh를 기본으로 사용하는데 좀 더 편하게 사용하기 위해 다운로드

https://github.com/ohmyzsh/ohmyzsh

 

GitHub - ohmyzsh/ohmyzsh: 🙃 A delightful community-driven (with 1800+ contributors) framework for managing your zsh configu

🙃 A delightful community-driven (with 1800+ contributors) framework for managing your zsh configuration. Includes 300+ optional plugins (rails, git, OSX, hub, docker, homebrew, node, php, python,...

github.com

 

B. HomeBrew 설치하기

- 패키지 관리자

https://brew.sh/index_ko

 

Homebrew

The Missing Package Manager for macOS (or Linux).

brew.sh

 

B-1. (NodeJS)

- 많이 참고한 사이트

https://velog.io/@taese0ng/M1-맥에서-React-Native-세팅하기

 

M1 맥에서 React-Native 세팅하기

M1 맥에서도 React-Native 쉽게 SetUp하고 바로 사용해보자!

velog.io

B-1. Node 설치하기

- NodeJs를 사용하기 위해서 설치

- iterm2에서 아래 첫줄 입력

brew install node
node -v
npm -v

B-1. Watchman 설치하기

- React-Native에서 코드 수정시 바로 적용되게 함

- iterm2에서 아래 첫줄 입력

brew install watchman
watchman -v

B-1. Cocoapods 설치하기

- ios개발을 위해 필요한 의존성 관리자 패키지

- iterm2에서 아래 첫줄 입력

sudo gem install cocoapods
pod --version

B-1. ffi 설치하기

- Node 설치중 생기는 오류 방지

sudo gem install ffi

 

B. vscode 설치

- 가볍고 강력한 코드 편집기

https://code.visualstudio.com

 

Visual Studio Code - Code Editing. Redefined

Visual Studio Code is a code editor redefined and optimized for building and debugging modern web and cloud applications.  Visual Studio Code is free and available on your favorite platform - Linux, macOS, and Windows.

code.visualstudio.com

 

B. cask 설치하기

- mac 환경에서 응용 프로그램을 명령어로 설치할 수 있게 함

- iterm2에서 아래 첫 줄 입력

brew install cask
cask --version

 

B-1. java 설치하기

- react-native를 android 환경에서 구동하기 위해 필요함

- iterm2에서 아래 첫 줄 입력

brew install --cask adoptopenjdk/openjdk/adoptopenjdk8

B-1. android studio 설치

- sdk를 받거나... java로 프론트 코딩할 때 사용... 그냥 sdk받으려고 받았다

- 추가적으로 emulator는 안되지만 실제 기기에서 테스트해보고자 할 때 사용된다.

https://developer.android.com/studio?gclid=EAIaIQobChMIsrDzjKn48QIVijgrCh2hfQGaEAAYASAAEgKA6vD_BwE&gclsrc=aw.ds 

 

Download Android Studio and SDK tools  |  Android 스튜디오

developer.android.com

- sdk 세팅은 아래 사이트를 참고하면 된다. os 버전은 상관없으니 원하는 버전으로 진행

https://paullab.tistory.com/26

 

B-1. android emulator 설치

- react-native를 android 환경에서 구동하기 위한 에뮬레이터

- 현재 android studio emulator는 m1에서 지원하지 않기 때문에 아래 사이트에서 받아주면 된다

- 이것만 받아도 emulator는 실행되기는 하는데, sdk가 없다고 react native가 실행되지 않는다

*sdk: software development kit

https://github.com/741g/android-emulator-m1-preview

 

GitHub - 741g/android-emulator-m1-preview: A place to store preview versions of Android Emulator on Apple Silicon and provide in

A place to store preview versions of Android Emulator on Apple Silicon and provide instructions/support. - GitHub - 741g/android-emulator-m1-preview: A place to store preview versions of Android Em...

github.com

- 아래 사이트를 참고하여 설치

https://iagreebut.tistory.com/86

 

[Silicon Mac M1] 안드로이드 에뮬레이터(Android Emulator)설치

안드로이드 스튜디오는 m1에 지원이 되지만, 에뮬레이터는 아직 정상적으로 작동하지 않는다 그래도 앞으로는 애플이 Intel과 손절했기 때문에 어떻게든 되도록 각 회사들이 열심히 개발해주고

iagreebut.tistory.com

* adb를 iterm2에 입력했을 때 인식하지 못하면 iterm2를 껐다가 실행해보자.

- 위 과정을 충실히 따라서 진행하면 ios , android 개발환경이 모두 성공적으로 진행된다.

 

C. notion 설치하기

- 프로젝트를 진행할 때 내용을 정리하기에 좋은 프로그램

- 메모용이라서 다른게 있다면 안받아도 된다.

- 학생은 계정인증하면 교육용 라이센스를 받을 수 있다.

https://www.notion.so/ko-kr/desktop

 

Notion – 메모, 작업, 위키, 데이터베이스를 위한 올인원 워크스페이스.

매일 쓰는 여러 업무용 앱을 하나로 합친 새로운 도구. 당신과 당신의 팀을 위한 올인원 워크스페이스예요.

www.notion.so

 

이번에는 짧은 글을 작성해보려 합니다.

그냥 제가 리버싱이나 포너블 공부를 하다가 거의 안그렇지만 가끔씩 헷갈리는거라서...

익숙해지면 뭐 안 그러겠죠 ㅋㅋ...

 

힘들게 그렸습니다...

프로그램에서 메모리 구조를 따질 때 보통 위의 그림과 같이 구성됩니다.

뭐 다른 방법도 있겠지만 보오통은 이렇습니다.

 

가장 낮은 주소 0x00000000 에서 시작해서 곧바로 코드가 나오지 않을 가능성이 많지만,

일단 설명하기로는 프로그램 코드, 전역변수와 정적변수, 동적할당, 지역변수와 매개변수 순서로 메모리에 배치되게 됩니다.

 

프로그램 코드와 전역변수, 정적변수는 컴파일 시에 메모리에 배치되어 공간이 할당되어 있고,

힙 영역, 스택 영역은 프로그램 구동을 하면서 메모리에 배치되기 때문에 미리 공간이 할당되어있지는 않습니다.

 

여기서 다른건 다 치워두고 스택만 살펴볼게요...

스택은 메모리의 가장 아래쪽(가장 높은 주소)부터 쌓이게 됩니다. 힙 영역이랑 겹칠 가능성을 줄이기 위해서라고 생각되네요.

0xFFFFFFFF에서 스택을 만들 때마다 ebp와 esp를 새로 설정해주어 사용할 부분을 설정해주게 되는데요...

여기서 알아야할점은 여러 스택이 쌓여있을 때 맨 위에 스택에 있는 메모리만 사용할 수 있는 것입니다. 자료구조에서와 다르게 모양만 흉내낸것이라 할 수 있죠. (말하려던 내용이랑 상관이 없지만 알면 좋을 것 같아서...)

 

스택은 가장 가장 아래(가장 높은 주소)부터 쌓이기 시작하지만 데이터를 입력할 때에는 리틀 엔디안 방식으로 스택의 esp를 기준으로 낮은 주소에서 높은 주소로 순차적으로 입력되게 됩니다.

이 부분이 제가 헷갈렸던 부분이에요 ㅠㅜ...

스택이 구성될 때에는 아래부터 쌓이지만 스택 내에서 데이터를 입력할 때에는 esp를 기준으로 위에서부터 쌓인다는 점이죠...

이게 왜 헷갈릴까 생각하실 수도 있는데, 스택이 쌓이는 위치와 리틀 엔디안과 데이터 입력 방식이 환상의 콜라보를 이뤄서 저에겐 헷갈렸습니다. ㅋㅅㅋ...

 

데이터가 입력되는 방식은 제가 알기에는 다음과 같습니다.

1. 함수가 호출되면 Stack을 생성하기 위해 esp와 ebp의 값을 새로이 조정한다.

2. 변수가 선언되었을 때, 선언된 변수의 크기에 맞추어 esp의 주소값을 다시 설정하여 ebp와의 거리를 벌린다.

3. 변수에 데이터를 입력할 때 esp를 기준으로 위치를 잡아서 입력한다.

 

와 같은 방식이 아닐까요.... 제가 지금까지 공부할 때까지는 이렇게 생각해도 문제는 없었던거 같습니다.

저 방식에서 제가 또 헷갈렸던 점은 변수 선언 순서에 따라서 스택에 입력되는 위치가 달라진다는 점입니다.

변수가 선언될 때마다 esp의 값을 새로이 조정하여 ebp와의 거리를 벌리기 때문에 먼저 선언된 변수는 나중에 선언된 변수와 비교했을 때 상대적으로 아래(높은 주소)에 쌓이게 됩니다. 따라서 오버플로우에 대한 대비책이 없다고 가정했을 때, 나중에 선언된 변수의 데이터 입력을 통해 먼저 선언된 변수나 그 전에 생성되었던 스택의 변수에도 접근할 수 있습니다.

 

그냥 머릿속에 있는 말을 꺼내다보니까 횡성수설하고 아무 말 한거같은데... 나중에 한번 더 보고 좀 고쳐보도록 하겠습니다 ㅠㅜ

 

codeengn.com/challenges/

 

CodeEngn.com [코드엔진] - Challenges

코드엔진은 국내 리버스엔지니어링 정보공유를 위해 2007년 부터 리버스엔지니어링 컨퍼런스 및 비공개 워크숍을 현업 실무자들과 함께 운영하고 있습니다. 리버스엔지니어링이라는 하나의 큰

codeengn.com

 

코드엔진의 문제입니다!

의외로 뭔가 재미있네여 ㅎㅅㅎ

 


디버거 프로그램을 탐지하는 함수의 이름이 무엇인지 궁금한가 봅니다!

 

프로그램을 실행시켰습니다.

 

 

이렇게 일정시간마다 계속 정상이라는 표시가 뜨는걸로 봐서는 저 디버깅 함수를 일정시간마다 계속 돌리나 보네요.

ㅇㅁㅇ...

 

 

이다음에 아이다로 분석해보려고 했는데...

 

디버거를 탐지하는 함수의 이름이 설마 떡하니 보일줄은 몰랐습니다...

내용을 보아하니 대충 디버거와 어떤 연관성이 있고 이 파일의 이름은 쭉쭉쭉 가서 IsDebugger~t.pdb에 있다... 라고 하는데 ㅇㅁㅇ....

전 설마 이게 진짜 함수일줄은 몰랐죠... 그럴수도 있지 않을까 라는 생각을 가지고 답을 체크해본 결과...

맞았답니다... ㅇㅁㅇ;;;;;;

 

허우 저도 이럴줄 몰랐어요 ㅠㅜ

그래도 분석은 진행해봐야겠죠?

 

 

재빠르게 올리 디버거로 넘어와서 사용하는 함수 목록을 보니까

있어요... 저부분을 한번 보도록 합시다...

이부분인데!

 

브레이크를 잡아주고 실행을 했습니다.

 

저기서 arg1이 두군데가 있는데 저부분이 정상인지, 디버깅 당했는지를 구분해주는겁니다.

0040106D에서 디버깅당했는지 체크한 뒤에 당했으면 그대로 진행하고 아니라면 넘어가게됩니다.

0040107C에서 만약 정상이라면 그대로 진행 디버깅당하면 넘어가게됩니다.

ㅇㅁㅇ...

 

끝이에여...ㅠㅜ

 

끝...

 

뭔가 허무한데... 진짜 끝...

 

 

'Hacking-기초 > [REV] CodeEngn.com' 카테고리의 다른 글

Basic RCE L03  (0) 2020.09.04
Basic RCE L02  (0) 2020.09.04
Basic RCE L01  (0) 2020.09.03

codeengn.com/challenges/

 

CodeEngn.com [코드엔진] - Challenges

코드엔진은 국내 리버스엔지니어링 정보공유를 위해 2007년 부터 리버스엔지니어링 컨퍼런스 및 비공개 워크숍을 현업 실무자들과 함께 운영하고 있습니다. 리버스엔지니어링이라는 하나의 큰

codeengn.com

이거 뭔가 재미있으면서도 겁나 어렵네요 ㅇㅁㅇ...

 


넴... 비주얼 베이직에서 스트링 비교함수의 이름을 묻고 있습니다.  뭐 Strcmp는 아닐테고... 일단 실행을 했더니

이런 오류가 뜨네요 ㅇㅁㅇ...

저 DLL 파일을 받으러 갑시다.

ko.dll-files.com/msvbvm50.dll.html

 

msvbvm50.dll 무료 다운로드 | DLL‑files.com

msvbvm50.dll, 파일 설명: Visual Basic Virtual Machine msvbvm50.dll와(과) 관련된 오류는 몇 가지 다른 이유로 발생할 수 있습니다. 예를 들어, 응용 프로그램에 결함이 있거나, msvbvm50.dll이(가) PC에 존재하는 ��

ko.dll-files.com

 

여기에서 최신버전을 받아주신 뒤에 압축을 풀고, 우리가 다운받았던 프로그램 03.exe 파일과 같은 디렉토리에 놓아주시면 됩니다. 뭐 문제 풀고 지우면 되죠..ㅎㅎ

실행했더니 다음과 같은 창이 뜨고 확인을 누르면?

이 창이 뜹니다.. ㅎㅅㅎ

이제 아이다로 확인을 해봅시다!

 

여기에 뭔가 문자열을 비교할거같은 함수가 있으니 기억하고 갑시다.

이거까지요.

 

IDA에서 저부분을 검색해서 어디에 문자열이 존재하는지 확인해줬습니다.

여기있습니다.

 

여기에서 사용한다는 것을 알 수 있죠!

 

그리고 프로그램을 실행시키고 임의의 값을 집어넣으니

 

이런 에러도 뜨네요..ㅎ

Error ! Das Passwort ost falsch!

도 한번 검색해볼까요?

 

여기에 있습니다!

일단 여기까지만 알고 Olly로 넘어갑시다!

 

여기에 브레이크포인트 잡고

여기에도 볼 수 있게 잡아놨습니다.

 

이제 실행해서 계속 ㄱㄱ 해보도록 하죠

 

이부분에서

이 창이 뜹니다.

처음 브레이크포인트를 없애고 저부분을 잡아줍시다.

그리고 계속 진행해주는데..?

 

창이 떴습니다. 그래서 여기에 브레이크를 잡아주면 되겠다 생각했는데...

 

저 창을 완전히 띄우는 그 부분에서 브레이크를 잡아줘도 제대로 진행할 수 없었습니다...

그래서 위에서 찾은 varStrCmp 함수를 찾아가봤죠...

4028BA...부분 ㅇㅁㅇ...

 

여기에 비교하는 함수가 있다는 것을 알 수 있었고.. 이게 끝인거같아요..!

 

asd를 입력하고 봤더니 스택에 저렇게 쌓여있는걸 봐선 저 두개를 비교하는것이고, 위의 2G83G35Hs2가 맞는 코드라는것을 알 수 있습니다!

 

뭔가 허무하지만 여기까지!

 

'Hacking-기초 > [REV] CodeEngn.com' 카테고리의 다른 글

Basic RCE L04  (0) 2020.09.04
Basic RCE L02  (0) 2020.09.04
Basic RCE L01  (0) 2020.09.03

codeengn.com/challenges/

 

CodeEngn.com [코드엔진] - Challenges

코드엔진은 국내 리버스엔지니어링 정보공유를 위해 2007년 부터 리버스엔지니어링 컨퍼런스 및 비공개 워크숍을 현업 실무자들과 함께 운영하고 있습니다. 리버스엔지니어링이라는 하나의 큰

codeengn.com

짠 코드엔진 문제입니다!

 

실행파일이 손상되어 실행이 안되는 문제가 생겼데요! 실행을 해봅시다!

이...이게 이 오류가 맞나..?

 

잘 모르겠지만 이게 뜨네요..?

 

아몰랑 그냥 넘어갑시다. 어차피 실행 안되는건 똑같으니까요 ㅋㅅㅋ

 

IDA로 해볼까요?

??!

이게 뭔 소리람...

그냥 Yes 했더니 이제는

또 이상한 소리를 하네요...ㅇㅁㅇ

Yes를 또 누르고

 

봤더니...

 

이상한게 한가득!

 

분석도 안되고 알 수 있는것도 없고... 포기했습니다...ㅠㅜ

 

그래서 찾아봤더니 Hexeditor로 해보라고 하더라고요.

 

그 헥스 에디터에 이 부분이 있었습니다...

 

아마 비번은 JK3뭐시기~~ 일거같은데... 넣어보니까 되네요?

 

 

이 문제는 동적 분석(GDB)로 분석이 불가능 할 때 사용할 수 있는 정적 분석 방법을 알려주기 위해 있는것이라고 하네요...

HexEditor 프로그램을 통해서 이런 파일들은 정적 분석이 가능하다니까 꼭 염두에 두고 있어야겠습니다!

 

'Hacking-기초 > [REV] CodeEngn.com' 카테고리의 다른 글

Basic RCE L04  (0) 2020.09.04
Basic RCE L03  (0) 2020.09.04
Basic RCE L01  (0) 2020.09.03

+ Recent posts