# reversing

112개의 포스트
post-thumbnail

[1장] 리버싱 스토리

1.1. 리버스 엔지니어링 일반적인 의미의 리버스 엔지니어링(Reverse Engineering, RE: 역공학): 물건이나 기계장치 혹은 시스템 등의 구조, 기능, 동작 등을 분석하여 그 원리를 이해하며 단점을 보완하고 새로운 아이디어를 추가하는 일련의 작업 1.2. 리버스 코드 엔지니어링 리버스 코드 엔지니어링(Reverse Code Engineering, RCE)은 소프트웨어 분야의 리버스 엔지니어링 RCE, RE, 역공학, 리버싱 등의 용어 사용 소프트웨어를 리버싱 관점에서 상세하게 분석한다는 뜻 1.2.1. 리버싱(분석) 방법 필자의 경우, 정적 분석으로 정보 수집하면서 해당 프로그램의 구조와 동작 원리에 대해 예측 아래 두 가지 방법 잘 활용하면 리버싱 시간 단축 & 효과적인 분석 리버싱 =/= 디버깅, 디버깅은 리버싱의 하위 개념 1) 정적 분석 파일의 겉모습 관찰하여 분석 파일 실행하지 않음

약 17시간 전
·
0개의 댓글
·
post-thumbnail

[dreamhack] [CodeEngn] MobileApp L01

🚩 [CodeEngn] MobileApp L01 MobileApp L01 문제 설명 키값을 찾으시오 🚀 Exploit apk를 열면 여러 파일이 있는데 뭔가 이상한 부분이 있다. 문제를 풀기 위해 apk 파일 구조를 알아야한다. > ### 🐙 apk 파일 구조 | 폴더명 | 설명 | |:-----------:|:----------:| | assets | 패키지 내에 포함된 비 리소스 파일 | |

2023년 9월 7일
·
0개의 댓글
·

[dreamhack] Secure Mail

🚩 Secure Mail > https://dreamhack.io/wargame/challenges/92 🚀 Exploit 💬 Comment i의 범위를 추측하는 게 난관이다. 처음부터 끝까지 brute force 하게되면 30분은 넘게 걸리니 잘 추측하고 범위를 정하도록 하자.

2023년 9월 5일
·
0개의 댓글
·
post-thumbnail

[dreamhack] patch

https://dreamhack.io/wargame/challenges/49/ 메시지 콜백 함수를 찾는다. BeginPaint 와 EndPaint 사이에 있는 sub_140002C40() 함수 그리는 함수가 많이 있는데 어떤 것이 선을 그리는지 알아낸다. 제일 첫번째 함수 sub_140002B80() 내부를 살펴본다. -> 선을 한번만 그린다. 똑같은 함수들이 중복된다. 그 다음 함수인 sub_1400017A0() 내부를 살펴본다. -> 선을 여러개 그린다. = = > 선을 한번만 그리는 2B80 함수가 글자를 가리는 함수라고 예측할 수 있다. 첫번째 2B80함수에 BP(BreakPoint)를 걸고 디버깅(F9)을 실행한다. F8 (Step Over)를 누르며 Alt+Tab 으로 프로그램 진행 상황을 확인한다. 선이 하나씩 그려지는 것이 확인된다. 이것을 못 그리게 패치해야한다. 2B80 함수 주소 (7FF784272B80 디버

2023년 9월 4일
·
0개의 댓글
·
post-thumbnail

[MOBISEC] babyrev

문제개요 문제 apk 파일을 다운받으면 flag를 입력하는 textView가 있으며 CHECK FLAG 버튼을 누르면 flag가 참인지 거짓인지 비교해준다. WriteUP [MainActivity.java] CHECK FLAG 버튼을 누르면 onClick() 함수가 호출되며 FlagChecker 클래스의 checkFlag가 호출되고 있다. result가 참이면 valid flag이며 거짓이면 Invalid flag를 출력한다. [FlagChecker.java] checkFlag 함수를 확인해보면 if안의 조건절이 모두 거짓이며 flag의 8번째 글자부터 마지막-1 글자가 r과 일치해야 True를 반환한다. 먼저, if문 안에 조건을 분석하면 아래와 같다. 즉, if문을 통과하려면 flag = MOBISEC{thisisaREALLYbasic_rev}로 설정되어야 한다. 이후 String r = getR();이 호출되 r에 저장된다. getR 함수는 r변

2023년 8월 14일
·
1개의 댓글
·

[Assembly] 어셈블리 명령어 정리하기

Assembly(어셈블리)란? 기계어와 1:1 대응 되는 저급언어(Low-Level Language)로 컴퓨터 구조마다 명령어가 다르다는 특징이 있다. 대표적으로 Intel문법과 AT&T 문법이 있다. | | Intel | AT&T | | --- | --- | --- | | 레지스터 표현 | eax | %eax | | 상수 표현 | h(16진수), b(2진수), o(8진수) → 10h | $숫자 → $0x10 | | operand 위치 | destination, source | source, destination | | 메모리 주소 참조 | [eax] | (%eax) | | 레지스터 + offset 위치 | [eax + 숫자] | 숫자(%eax) | Register(레지스터) | 레지스터 이름 | 역할 | | --- | --- | | EAX | 함수의 return 값 저장 레지스터 | | **EB

2023년 7월 30일
·
1개의 댓글
·
post-thumbnail

Advance RCE L01

문제 이 프로그램은 몇 밀리세컨드 후에 종료 되는가 정답인증은 MD5 해쉬값(대문자) 변환 후 인증하시오 파일 확인 UPX 패킹이 되어 있는 파일로 upx 패킹을 풀어주도록 하겠다. Disassemble with IDA 파일 내부로 들어가면 안티 디버깅 기법이 걸려있는 것을 확인할 수 있다. x86 dbg에서 플러그인을 사용해서 해당 안티 디버깅을 무력화해주자. x86 전체적인 코드가 이전에 보았던 Basic 19의 문제랑 비슷하기 때문에 풀이도 비슷하게 했다. messageboxa에 Breaking Po

2023년 7월 23일
·
0개의 댓글
·
post-thumbnail

CTF - Reversing

Reversing 오랜만에 리버싱 풀어본다. 제일 쉬운 것부터 풀어보자. 파일을 다운받고, 실행해보면 이런 창이 뜨는데, 리버싱을 통해 비밀번호를 알아내고 푸는 문제인 것으로 보인다. 일단 x64 dbg를 켜서 파일을 분석해보자. 문자열 찾기를 이용해서 의심가는 메모리 위치로 이동해 보자. ![](https://velog.velcdn.com/images/vina

2023년 7월 15일
·
0개의 댓글
·
post-thumbnail

리버싱 이 정도는 알아야지 #4

분석 목표 쓰레기 값이 아닌 For Code!!문자열을 출력해야 한다. 흐름파악 메인함수가 시작되는 401140 주소에 Break Point를 걸어 함수 내부로 들어가겠다. 코드를 살펴보니 401031 주소에 반복문 코드가 존재한다. 반복문을 실행하겠다. 반복문 실행 ![](https://images.velog.io/images/jjewqm/post/8

2023년 7월 14일
·
0개의 댓글
·
post-thumbnail

리버싱 이 정도는 알아야지 #3

Sample 02.exe 흐름파악 실행 결과 CMD창이 생기고 3초뒤 사라진다. 정확한 분석을 위해 디버깅을 하겠다. 00401170 메인함수 주소에 브레이크 포인트를 걸고 함수 내부로 들어가겠다. F8버튼(실행)을 눌러 명령어를 하나씩 실행한 결과 00401048 주소에서 00401079주소로

2023년 7월 14일
·
0개의 댓글
·
post-thumbnail

CTF Write-up

방학맞이 ctf 문제 도장깨기를 해볼려고 한다. 요즘 ai, 네트워크 보안에 관심이 많아져서 이것저것 찍먹하려고 노오력중...ㅎ Suninatas 31 포렌식 분야의 마지막 문제이다. 일단 파일을 다운받아보자. 파일의 크기가 매우 크기 때문에 조금 시간이 걸린다. 다운받은 파일을 hxd로 열어보자. 시그니처는 EB 58 힘들게 찾았다. FAT32의 부트 섹터임을 나타내는 시그니처이다. ![](https://velog.velcdn.com/images/vina1601/post/5d45c0c8-7f3f-409e-9dce-1d91486

2023년 7월 13일
·
0개의 댓글
·
post-thumbnail

Fast Pattern Scanning Algorithm

Credit: Park Jong Hwi (Wane) TL;DR 기존 Pattern Scanning 알고리즘 $O(NM)$은 발전할 수 있다. 이는 FFT를 이용하여 $O(N\log{N})$으로 구현할 수 있다. 여기서 더 발전하여, $O(N\log{M})$으로 단축할 수 있다. 1. Introduction Game Hacking에는 중요한 변수의 할당된 값을 별도의 어려운 과정 없이 구할 수 있는 강력한 기술인 Pattern Scanning (a.k.a. Array of Bytes Searching) 이 있다. 간단히 말해서 Pattern Scanning 이란, 게임 내 메모리 안에서 우리가 찾을 바이트 배열(이하 AOB)을 탐색하는 것이다. 여기서 일반적인 문자열 매칭과 다른 점은, Mask라는 개념이 도입된 것이다. Mask는 AOB에서 와일드카드를 나타낸다. 즉, 무시할 index를 나타낸다. 예를 들어, $m

2023년 7월 13일
·
0개의 댓글
·
post-thumbnail

rev basic 7

ROL ROR 오늘 리버싱을 배운김에 리버싱문제를 풀어봤다 해당 문제의 pseudocode는 아래와 같다 라는 함수는 처음 본다 알아보자 ROL / ROR >rotate bit Left / Right 비트를 count만큼 왼쪽이나 오른쪽으로 옮기는 함수이다 예시 ) 이걸 파이썬 코드로 작성해보자 ROR ROL 값을 ROR함수에 fo

2023년 7월 6일
·
0개의 댓글
·
post-thumbnail

Compile & PLT & GOT

선행지식!!! compile compile? compile은 인간이 이해할 수 있는 언어로 작성된 소스 코드(고수준 언어 : C, C++, Java 등)를 CPU가 이해할 수 있는 언어(저수준 언어 : 기계어)로 번역(변환)하는 작업을 말한다. compiler는 이러한 작업을 해주는 프로그램을 말한다. compile compile 과정

2023년 6월 16일
·
0개의 댓글
·
post-thumbnail

Stack Canary

1. Stack Canary? > * Stack Canary란? * 2. Canary 적용 확인 실습 > ### 2.1. Code dreamhack 제공 코드 complie 2.2. canary 적용 확인 3. Canary 찾기 > * - 먼저 알아야 될 지식!!! * 3.1. fs:0x28 확인 하기 ![](https://velog.velcdn.com/images/dongtime/post/64944029-2778-4d9f-82dc-527c01c15b9b/

2023년 6월 14일
·
0개의 댓글
·
post-thumbnail

CCE2023 ping pong

(그림체는 이렇지만 굉장히 재밌는 애니다... 강추!!!) CCE 2023에서 풀었던 문제들을 복기해보려고 한다. 먼저 다운받은 파일을 실행시키면 아래와 같은 탁구 게임이 실행이 된다. 이것만 가지고는 아무것도 알 수 없긴 한데 종료할 때 힌트가 나온다. 누가봐도 Python 으로 작성됐다고 광고하는중이다. PyInstaller 로 실행파일로 만들어진 파이썬 코드라고 생각을 해서 먼저 압축 해제를 해주었다. PyInstaller reversing 등으로 검색하면 많은 자료가 나오고 나는 가장 위에 노출된 [PyIn

2023년 6월 13일
·
0개의 댓글
·
post-thumbnail

Basic RCE L20

문제 이 프로그램은 Key파일을 필요로 하는 프로그램이다. 'Cracked by: CodeEngn!' 문구가 출력 되도록 하려면 crackme3.key 파일안의 데이터는 무엇이 되어야 하는가 Ex) 41424344454647 (정답이 여러개 있는 문제로 인증시 맞지 않다고 나올 경우 Contact로 연락주시면 확인 해드리겠습니다) 실행화면 PEiD MASM32과 TASM32는 x86 아키텍처의 어셈블리 언어를 사용하여 Windows 운영 체제에서 실행되는 프로그램을 개발하기 위해 사용되는 개발 도구 ![](https://velog.velcdn.com/images/hackerhoon/post/4d616f62-03ec-4fc2-be89-bf7794be40f9/image.

2023년 6월 11일
·
0개의 댓글
·
post-thumbnail

Basic RCE L19

문제 이 프로그램은 몇 밀리세컨드 후에 종료 되는가 실행 화면 PEid upx packing이 되어있다. 수동언패킹을 진행할려고 했지만 안티 디버깅 탐지 기법이 걸려있어서 그냥 upx.exe로 unpacking을 진행해주었다. IDA 분석 sub_40E940 IsDebuggerPresent()로 디버깅을 탐지함 ![

2023년 6월 10일
·
0개의 댓글
·
post-thumbnail

Basic RCE L18

문제 Name이 CodeEngn일때 Serial은 무엇인가 실행화면 PEid UPX 패킹 같은 것이 걸려있지 않은 파일이다. IDA 분석 4088F0 주소에 Name이 들어가 Name으로 Serial 번호를 만든다. String1이 입력한 Serial이 되고 String2가 정답인 Serial이 되는 걸로 추정된다. 해당 부분을 동적 디버깅을 통해 알아보겠다. ![](https://velog.velcdn.com/images/hackerhoon/post/b6eba7f6-f846-4dea-b090-864dea

2023년 6월 8일
·
0개의 댓글
·
post-thumbnail

난독화 자바스크립트 악성코드 분석

🍑문제 현재 대학에서 듣고 있는 역공학 수업에서 두번째 레포트 과제를 받았다. > PyV8을 이용하여 어떤 동작을 하는 자바스크립트 악성코드인지를 분석하세요. PyV8의 존재와 파이썬 코드를 작성하는 법 모두 수업시간에 한번 다룬게 다였으므로 더 공부하기 위해 구글링을 하던 도중 우연히 수업을 진행하시는 교수님께서 과제와 같은 주제로 작성하신 글을 발견하여, 코드 작성에 많은 참고를 했다. ➜ 교수님께서 작성하신 글 교수님께서 주신 문제는 두개인데, 두개의 파일이 같다고 봐도 무방할 정도로 같기 때문에 한가지 문제만 다루어 보려고 한다. 나중에 조금 더 실력이 생겨 더 많은것을 볼 수 있게 된다면, 두 문제의 세부적인 차이를 분석해 봐야겠다. 🍓PyV8 이란 PyV8은 파이썬에서 V8 JavaScript 엔진을 사용할 수 있게 해주는 라이브러리로, 자바스크립트 소스를 해석하고 실행한 결과

2023년 6월 7일
·
0개의 댓글
·