본문 바로가기

분류 전체보기

(153)
[SWING] Reversing 03 과제 1 fastcall 기본적으로 stdcall과 방식이 같다. 함수에 전달하는 파라미터 일부(2개까지)를 스택 메모리가 아닌 레지스터를 이용하여 전달한다. 함수의 파라미터가 4개라면 앞의 두개는 ECX, EDX파라미터를 이용하여 전달한다. 파라미터 전달시 스택이 아닌 레지스터에 접근하기 때문에 훨씬 더 빠르다는 장점이 있다. 과제 2 Lena's Reversing 파일이 잘 열리지 않아서 구글링해서 같은 파일을 찾아 다운받았는데 코드가 중간에 조금 다른 부분이 있어 잘 되었는지 모르겠습니다. 너른 양해 부탁드립니다. 미션 : Nag 를 제거하고, 올바른 등록 코드를 찾아라! MsgBox 쓰여있는 곳 클릭. 해당 함수가 사용된 모든 곳에 breakpoint 가 걸린다. F9 눌러 실행하여 도착한 곳에서..
[SWING] Reversing 02 과제 1 stackframe.exe 다운받기 >> book/StackFrame.exe at master · reversecore/book · GitHub #include "stdio.h" long add(long a, long b) { long x=a, y=b; return (x+y); } int main(int argc, char* argv[]) { long a=1, b=2; printf("%d\n", add(a, b)); return 0; } stackframe.exe 의 소스 코드는 다음과 같이 이루어져 있다. 1. 메인함수 시작 2. a 변수에 1 저장, b 변수에 2 저장 3. add() 함수 호출 4. add() 함수의 a 파라미터에 1, b 파라미터에 2가 들어가 있음 5. a의 값을 x 변..
[Dreamhack] rev-basic-1 rev-basic-1 | 워게임 | Dreamhack rev-basic-1 Reversing Basic Challenge #1 이 문제는 사용자에게 문자열 입력을 받아 정해진 방법으로 입력값을 검증하여 correct 또는 wrong을 출력하는 프로그램이 주어집니다. 해당 바이너리를 분석하여 correct를 출 dreamhack.io 위 링크에서 문제 파일을 다운받아 압축을 풀면 chall1.exe 파일이 나온다. 이를 x64dbg에서 열어준다. 문자열을 검색해 Correct를 찾아 더블클릭한다. 아래의 사진의 주석에 따르면 Input을 입력 받아서 test eax, eax를 이용해 정해진 값과 비교를 하여 Correct와 Wrong을 출력하는 모양이다. 구해야 할 것은 Correct를 출력하는 입력값이 ..
[Dreamhack] rev-basic-0 rev-basic-0 | 워게임 | Dreamhack rev-basic-0 Reversing Basic Challenge #0 이 문제는 사용자에게 문자열 입력을 받아 정해진 방법으로 입력값을 검증하여 correct 또는 wrong을 출력하는 프로그램이 주어집니다. 해당 바이너리를 분석하여 correct를 출 dreamhack.io 여기서 문제 파일을 받아 압축을 풀어준다. 리버싱할 파일은 chall0.exe이다. 파일을 Immunity Debugger로는 열 수가 없어서 (여는 방법이 있는데 내가 모르는 것일 수도 있지만) 구글링을 하다가 아래 링크에서 64 bit 파일을 열 수 있다고 하는 Ollydbg 를 다운받았다. SourceForge.net 에서 x64dbg 다운로드 크게 다르지 않다. 문자열..
[SWING] Reversing 01 과제 1 어셈블리 언어 명령어 1. 비트연산 : shift 연산 1) 부호가 없는 연산 - 왼쪽으로 이동 : shl - 오른쪽으로 이동 : shr 2) 부호가 있는 연산 (MSB를 유지) - 왼쪽으로 이동 : sal - 오른쪽으로 이동 : sar 2. 제어 명령 설명 사용 예 cmp 두 개의 오퍼랜드 비교 (뺄셈 연산 후 플래그 설정) cmp ecx, 0 test 두 개의 오퍼랜드 비교 (AND 연산을 수행 후 플래그 설정) test eax, eax call 해당되는 주소의 함수를 호출하여 수행 코드 위치를 옮김 call 0x12345678 int 오퍼랜드로 지정된 예외 처리 수행 (0xcd) 중단점으로 디버그용 소프트웨어 트랩 (0xcc) 오버플로우 예외 상황시 발생하는 트랩 (0xce) 하드웨어 디버..
[SWING] C++ 06 과제 1 템플릿 같은 이름의 함수들을 반환값이나 인자값의 자료형만 바꾸어 하나의 함수명으로 다양한 타입의 처리를 하는 것을 '오버로딩'이라고 한다. 이름은 같지만 자료형이 다른 함수를 여러 개 만드는 것이라고 볼 수 있다. [오버로딩을 사용했을 때] int add (int x, int y){ return x+y;} double add (double x, double y){ return x+y;} int main(){ int a=2, b=4; add(a,b); double c=1.5, d=1.6; add(c,d); } 그러나 오버로딩은 필요한 자료형이 늘어날 때마다 동일한 코드를 중복 작성하면서 일일이 새로 만들어야 하므로 비효율적이라는 단점이 있다. 이럴 때 사용하기 좋은 것이 바로 '템플릿'이다. 템플..
[SWING] Linux 06 과제 1 도스 DOS (Denial Of Service attack) 즉 서비스 거부 공격은 서버가 처리할 수 있는 능력 이상의 것을 요구함으로써 다른 요구는 처리하지 못하게 만들어 다른 서비스를 정지시키거나 시스템을 다운시키는 공격을 말한다. 디도스는 분산 서비스 거부 공격으로 여러 대의 공격자를 분산적으로 배치해 동시에 도스를 수행하는 공격을 말한다. 어라. 에러가 났지만 당황하지 말고 문서 편집기를 켜줍니다. 파일 -> 열기 검색 -> 찾아 바꾸기. 바꾸기. ARP 스푸핑과 스니핑 과제 2 도스 예방책/대응책 도스는 취약점 공격형과 자원 고갈 공격형으로 나뉜다. 취약점 공격형에는 보잉크 공격, 랜드 공격 등이 있고, 자원 고갈 공격형에는 죽음의 핑 공격, SYN 플러딩 공격, 스머프 공격 등이 있다..
[SWING] C++ 05 과제 1 과제 2