Reversing 10

[wargame] Easy Keygen

저게 Input Name 출력 함수같고, 그 아래가 사용자 입력 함수 사용자가 입력한 abcdefg 값은 [esp+18]에 존재, dump 창에서도 확인 가능 이후로 계속 진행하면, 해당 함수를 거칠 때 덤프창에 위와 같이 추가됨 즉 연산을 계속 해서 맞는 Serial Key를 생성하는 과정 근데 문제는, Serial이 5B134977135E7D13일 때를 찾아야 함 즉 Serial Key 생성 과정을 알아야 한다 . .10 xor 61 한 값인 71을 ecx에 저장하고 그 다음은 20과 두번째 입력값인 b를 xor 그 다음은 30과 c 다시 10과 d 즉, 0x10, 0x20, 0x30 을 차례대로 xor한 결과가 serial key인 것 같다. abcdefg 를 입력했을 때 serial key..

Reversing 2025.04.15

[wargame] Easy Crack

파일명: Easy_CrackMe.exe 디버거 기본명령어- F7: Step Into- F8: Step Over- ctrl G: Go-to- F2: BP / F9: 실행  Incorrect Password가 출력됩니다.    EP(Entry Point)- 윈도우 실행 파일의 코드 시작점으로, 프로그램 실행 시 CPU에서 가장 먼저 실행되는 위치- Image Base + Address of Entry Point EP를 찾아갑니다 . . 걍 실행하면 됨니다 . .  jne가 많이 보임니다.한 바이트씩 비교하는 것 같읍니다.mov로 레지스터에 한 바이트씩 복사해서 cmp로 비교하는 것 같읍니다. mov dl,byte ptr ds:[eax]-> eax가 가리키는 메모리 주소에서 1바이트를 dl 레지스터로 이동시킴..

Reversing 2025.04.10

[Dreamhack] x86 Assembly

기계어를 어셈블리 언어로 번역하는 역어셈블러. 어셈블리어만 이해할 수 있다면 역어셈블러를 사용하여 소프트웨어를 분석할 수 있다. 어셈블리 언어는 기계어와 치환되는 언어. 🤖 CPU에 사용되는 명령어 집합구조(ISA)는 x86-64 등 종류가 다양하기 때문에 이에 따른 어셈블리어의 종류도 다양하다. ex) x64 → x64 어셈블리어 x64 어셈블리어 [ 문법 구조 ] 명령어 (Operation Code, Opcode) & 피연산자 (Operand) mov eax, 3 -> 대입해라 eax에, 3을 opcode operand1, operand2 피연산자 1. 상수 2. 레지스터 3. 메모리 ex) QWORD PTR [0x8048000] : 0x8048000의 데이터를 8바이트만큼 참조 [ OPCODE(명령..

Reversing 2022.03.05

[Dreamhack] Computer Science

컴퓨터 구조 💻 : 컴퓨터가 효율적으로 작동할 수 있도록 HW 및 SW 기능을 고안하고, 이들을 구성하는 방법 1) 기능 구조에 대한 설계 : 컴퓨터가 연산을 효율적으로 하기 위해 어떤 기능들이 필요한지 고민하고 설계하는 분야 ex) 폰 노이만 구조, 하버드 구조, 수정된 하버드 구조 등 2) 명령어 집합구조 (Instruction Set Architecture, ISA) : CPU가 사용하는 명령어와 관련된 설계 ex) ARM, MIPS, AVR, 인텔의 x86-64 아키텍처 3) 마이크로 아키텍처 : 정의된 명령어 집합을 효율적으로 처리할 수 있도록 CPU의 회로를 설계하는 분야 중앙처리장치 (Central Processing Unit, CPU) - 연산과 제어 : 프로그램의 연산을 처리하고 시스템을..

Reversing 2022.02.28

[Dreamhack] Binary & Analysis

리버스 엔지니어링 (Reverse Engineering) = 역공학 = 리버싱 🔍 프로그래밍 언어에는 고급 언어들과 어셈블리어, 기계어 등의 저급 언어들이 있다. 어셈블리어 → 기계어 (0, 1) by 어셈블러 컴파일) 고급 언어 (C, C++ ...) → 어셈블리어, 기계어by 컴파일러 * 인터프리팅 by 인터프린터 : 통역하듯이 그때 그때 작동함. - 모든 언어가 컴파일을 필요로 하는 건 아니다! ex) Python, Javascript 컴파일 과정 C로 작성된 코드 → 전처리 → 컴파일 → 어셈블 → 링크 → 바이너리로 번역됨 1. 전처리 (Preprocessing) : 컴파일러가 소스 코드를 어셈블리어로 컴파일하기 전에, 필요한 형식으로 가공하는 과정 ex) 주석 제거, 매크로 치환 (#defin..

Reversing 2022.02.25