리버싱 핵심 원리

이승원
1064p

Where to buy

본 정보의 최신성을 보증하지 않으므로 정확한 정보는 해당 플랫폼에서 확인해 주세요.

Author/Translator

Table of Contents

1부 기초 리버싱 1장 Reversing Story 1.1. Reverse Engineering(RE) 1.2. Reverse Code Engineering(RCE) 1.2.1. 리버싱(분석) 방법 1.2.2. Source Code, Hex Code, Assembly Code 1.2.3. 패치와 크랙 1.3. 리버싱 준비물 1.3.1. 목표 1.3.2. 열정 1.3.3. 구글 1.4. 리버싱 방해물 1.4.1. 과욕 1.4.2. 조급함 1.5. 리버싱의 묘미 2장 Hello World! 리버싱 2.1. Hello World! 프로그램 2.1.1. 디버거와 어셈블리 언어 2.2. HelloWorld.exe 디버깅 2.2.1. 디버깅 목표 2.2.2. 디버깅 시작 2.2.3. EP 2.2.4. 40270C 함수 따라가기 2.2.5. 40104F 점프문 따라가기 2.2.6. main( ) 함수 찾기 2.3. 디버거 좀 더 능숙하게 다루기 2.3.1. 디버거 명령어 2.3.2. 베이스 캠프 2.3.3. 베이스 캠프를 설치하는 4가지 방법 2.4. 원하는 코드를 빨리 찾아내는 4가지 방법 2.4.1. 코드 실행 방법 2.4.2. 문자열 검색 방법 2.4.3. API 검색 방법 (1) - 호출 코드에 BP 2.4.4. API 검색 방법 (2) - API 코드에 직접 BP 2.5. “Hello World!” 문자열 패치 2.5.1. 패치 2.5.2. 문자열을 패치하는 두 가지 방법 2.6. 마무리 3장 Little Endian 표기법 3.1. 바이트 오더링 49 3.1.1. 리틀 엔디안 & 빅 엔디안 3.1.2. OllyDbg에서 리틀 엔디안 확인 4장 IA-32 Register 기본 설명 4.1. CPU 레지스터란? 4.1.1. 레지스터에 대해서 알아야 하는 이유 4.2. IA-32의 레지스터 4.2.1. Basic program execution registers 4.3. 마무리 5장 Stack 5.1. 스택 5.1.1. 스택의 특징 5.1.2. 스택 동작 예제 6장 abex crackme #1 분석 6.1. abex’ crackme #1 6.1.1. Start debugging 6.1.2. 코드 분석 6.2. 크랙 6.3. 스택에 파라미터를 전달하는 방법 6.4. 마무리 7장 Stack Frame 7.1. 스택 프레임 7.2. 실습 예제 - stackframe.exe 7.2.1. StackFrame.cpp 7.2.2. main( ) 함수 시작 & 스택 프레임 생성 7.2.3. 로컬 변수 셋팅 7.2.4. add( ) 함수 파라미터 입력 및 add( ) 함수 호출 7.2.5. add( ) 함수 시작 & 스택 프레임 생성 7.2.6. add( ) 함수의 로컬 변수(x, y) 셋팅 7.2.7. ADD 연산 7.2.8. add( ) 함수의 스택 프레임 해제 & 함수 종료(리턴) 7.2.9. add( ) 함수 파라미터 제거(스택 정리) 7.2.10. printf( ) 함수 호출 7.2.11. 리턴 값 셋팅 7.2.12. 스택 프레임 해제 & main( ) 함수 종료 7.3. OllyDbg 옵션 변경 7.3.1. Disasm 옵션 7.3.2. Analysis1 옵션 7.4. 마무리 8장 abex crackme #2 8.1. abex’ crackme #2 실행 8.2. Visual Basic 파일 특징 8.2.1. VB 전용 엔진 8.2.2. N(Native) code, P(Pseudo) code 8.2.3. Event Handler 8.2.4. undocumented 구조체 8.3. Start debugging 8.3.1. 간접호출 8.3.2. RT_MainStruct 구조체 8.3.3. ThunRTMain( ) 함수 8.4. crackme 분석 8.4.1. 문자열 검색 8.4.2. 문자열 주소 찾기 8.4.3. Serial 생성 알고리즘 8.4.4. 코드 예측하기 8.4.5. Name 문자열 읽는 코드 8.4.6. 암호화 루프 8.4.7. 암호화 방법 8.5. 마무리 9장 Process Explorer - 최고의 작업 관리자 9.1. Process Explorer 9.2. 구체적으로 뭐가 좋은 거죠? 9.3. sysinternals 10장 Calling Convention 10.1. Calling Convention 10.1.1. cdecl 10.1.2. stdcall 10.1.3. fastcall 11장 Lena’s Reversing for Newbies 11.1. 실행 11.2. 분석 11.2.1. 목표(1) - 메시지 박스 제거! 11.2.2. 패치(1) - 메시지 박스 제거 11.2.3. 목표(2) - Registration Code 찾기 11.3. 마무리 12장 도대체 리버싱을 어떻게 공부해야 하나요? 12.1. Reverse Engineeri

Description

리버서라면 꼭 알아야 할 핵심 원리를 모두 담았다! 리버싱이란 프로그램의 내부를 깊이 들여다보고 조작할 수 있는 기법이다. 이는 우리가 흔히 사용하는 상용 프로그램 등에도 가능하기 때문에 해킹의 방법으로 응용될 수 있다. 하지만 역시 리버싱은 일명 ‘리버서’라 불리는 악성 코드 분석가들의 특기이기도 하다. 무엇보다 리버싱 기법은 해커와 보안 전문가의 대결로만 이용되는 것은 아니다. 리버싱을 잘 활용하면 개발/테스트 단계에서 미처 발견하지 못한 버그나 취약점도 파악할 수 있고, 파일이나 메모리에 직접 접근하여 문제를 해결할 수 있다. 또한 전혀 새로운 기능을 추가해 프로그램의 기능을 향상시킬 수도 있어 매우 유용하다. 이 책은 이런 마법 같은 일들이 가능한 ‘리버싱’에 필요한 핵심 원리를 50여개 장을 통해 꼼꼼하게 설명한다. 무엇보다 저자가 오랫동안 안철수 연구소에서 경험을 토대로 직접 작성한 다양한 코드는 물론 리버서라면 꼭 알아야 할 다양한 리버싱 기법을 상세하게 소개하기 때문에 리버서를 꿈꾸는 개발자는 물론 실무를 경험해본 모두에게 도움을 준다. 무엇보다 이 책은 리버싱 기술과 그 동작 원리를 설명하는 데 집중한다. 즉 리버싱 기술의 단순한 소개에 그치지 않고, 각 기술의 핵심적인 원리를 깨닫게 하는 데 목표를 두고 있다. 이를 통해 기본기를 튼튼하게 다지는 것은 물론, 시간이 흘러도 가치가 변하지 않는 기술의 진수를 얻을 수 있다. 여러분이 리버싱 세계를 여행하고 싶다면, 이 책이 친근한 가이드가 되어 줄 것이다! 주요 내용 IA-32 Register 디버깅 크랙 PE File Format 실행 압축 Base Relocation Table 인라인 패치 실습 Windows 메시지 후킹 DLL Injection DLL Ejection Code Injection API 후킹 ‘스텔스’ 프로세스 글로벌 API 후킹 64bit Computing ASLR Session in Kernel 6 TEB PEB SEH IA-32 Instruction 안티 디버깅

All content on this site is the property of WATCHA PEDIA and any unauthorized use, including but not limited to reproduction, republication, redistribution, quotation, crawling, AI learning, and data collection, is strictly prohibited without prior consent.

  • WATCHA, Inc.
  • CEO, Taehoon Park
  • 343, Gangnam-daero, Seocho-gu, Seoul, Republic of Korea
  • Corporate Registration Number 211-88-66013