ÃÊ°£´Ü win32 binary crack.pdf by HumanTalk, Inc.

Similar documents
Microsoft PowerPoint - chap02-C프로그램시작하기.pptx

메뉴얼41페이지-2

Mango-E-Toi Board Developer Manual

View Licenses and Services (customer)

지도상 유의점 m 학생들이 어려워하는 낱말이 있으므로 자세히 설명해주도록 한다. m 버튼을 무리하게 조작하면 고장이 날 위험이 있으므로 수업 시작 부분에서 주의를 준다. m 활동지를 보고 어려워하는 학생에게는 영상자료를 접속하도록 안내한다. 평가 평가 유형 자기 평가

경우 1) 80GB( 원본 ) => 2TB( 복사본 ), 원본 80GB 는 MBR 로디스크초기화하고 NTFS 로포맷한경우 복사본 HDD 도 MBR 로디스크초기화되고 80GB 만큼포맷되고나머지영역 (80GB~ 나머지부분 ) 은할당되지않음 으로나온다. A. Window P

Poison null byte Excuse the ads! We need some help to keep our site up. List 1 Conditions 2 Exploit plan 2.1 chunksize(p)!= prev_size (next_chunk(p) 3

Slide 1

Install stm32cubemx and st-link utility

Microsoft Word - Armjtag_문서1.doc

ISP and CodeVisionAVR C Compiler.hwp

Studuino소프트웨어 설치

Endpoint Protector - Active Directory Deployment Guide

Microsoft Word - windows server 2003 수동설치_non pro support_.doc

슬라이드 1

다른 JSP 페이지호출 forward() 메서드 - 하나의 JSP 페이지실행이끝나고다른 JSP 페이지를호출할때사용한다. 예 ) <% RequestDispatcher dispatcher = request.getrequestdispatcher(" 실행할페이지.jsp");

슬라이드 1

PathEye 공식 블로그 다운로드 받으세요!! 지속적으로 업그래이드 됩니다. 여러분의 의견을 주시면 개발에 반영하겠 습니다.

Data Sync Manager(DSM) Example Guide Data Sync Manager (DSM) Example Guide DSM Copyright 2003 Ari System, Inc. All Rights reserved. Data Sync Manager

Oracle VM VirtualBox 설치 VirtualBox에서 가상머신 설치 가상머신에 Ubuntu 설치

NTD36HD Manual

01장

1

SBR-100S User Manual

Deok9_Exploit Technique

Title Here

설치 순서 Windows 98 SE/Me/2000/XP 1 PC를 켜고 Windows를 시작합니다. 아직 컴퓨터에 프린터를 연결하지 마십시오. 2 PC에 P-S100 CD-ROM(프 린터 드라이버)을 삽입합니다. 3 설치 프로그램을 시작합니다. q CD-ROM의 PS1

Microsoft Word - ntasFrameBuilderInstallGuide2.5.doc

ActFax 4.31 Local Privilege Escalation Exploit

MF5900 Series MF Driver Installation Guide

vRealize Automation용 VMware Remote Console - VMware

<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202839C1D6C2F7207E203135C1D6C2F >

Microsoft Word - FunctionCall

IRISCard Anywhere 5

게임 기획서 표준양식 연구보고서

var answer = confirm(" 확인이나취소를누르세요."); // 확인창은사용자의의사를묻는데사용합니다. if(answer == true){ document.write(" 확인을눌렀습니다."); else { document.write(" 취소를눌렀습니다.");

Microsoft Word - PLC제어응용-2차시.doc

<41736D6C6F D20B9AEBCADBEE7BDC42E687770>

*Revision History 날짜 내용 최초작성 Tel Fax [2] page

6. 설치가시작되는동안 USB 드라이버가자동으로로드됩니다. USB 드라이버가성공적으로로드되면 Setup is starting( 설치가시작되는중 )... 화면이표시됩니다. 7. 화면지침에따라 Windows 7 설치를완료합니다. 방법 2: 수정된 Windows 7 ISO

아이콘의 정의 본 사용자 설명서에서는 다음 아이콘을 사용합니다. 참고 참고는 발생할 수 있는 상황에 대처하는 방법을 알려 주거나 다른 기능과 함께 작동하는 방법에 대한 요령을 제공합니다. 상표 Brother 로고는 Brother Industries, Ltd.의 등록 상

임베디드시스템설계강의자료 6 system call 2/2 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과

금오공대 컴퓨터공학전공 강의자료

JDK이클립스

INTRO Basic architecture of modern computers Basic and most used assembly instructions on x86 Installing an assembly compiler and RE tools Practice co

JAVA 플랫폼 개발 환경 구축 및 활용

API - Notification 메크로를통하여어느특정상황이되었을때 SolidWorks 및보낸경로를통하여알림메시지를보낼수있습니다. 이번기술자료에서는메크로에서이벤트처리기를통하여진행할예정이며, 메크로에서작업을수행하는데유용할것입니다. 알림이벤트핸들러는응용프로그램구현하는데있어

IDA 5.x Manual hwp

윈도 모바일 6.1을 OS로 사용하는 스마트폰(옴니아2 등)에서의 Tcl/Tk의 사용

윈도우시스템프로그래밍

System Recovery 사용자 매뉴얼

WS12. Security

Microsoft PowerPoint - USB다운로더PC연결.pptx

Microsoft Word - src.doc

hlogin2

슬라이드 1

WebPACK 및 ModelSim 사용법.hwp

PowerPoint 프레젠테이션

OnTuneV3_Manager_Install

MF3010 MF Driver Installation Guide

슬라이드 1

Office 365 사용자 가이드

Microsoft PowerPoint - gnu-w06-python_[실습]_day13-turtle-shape

MVVM 패턴의 이해

CKKeyPro 적용가이드

<4F E20C7C1B7CEB1D7B7A5C0BB20C0CCBFEBC7D120B5A5C0CCC5CD20BAD0BCAE20B9D720B1D7B7A1C7C120B1D7B8AEB1E F416E616C F616E645F47726

IP Cam DDNS 설정설명서(MJPEG) hwp

Index 1. Intro Install Connect Scratch 1.4 (Offline Editor) Scratch 2.0 (Online Editor) Connect f

Microsoft Word - Crackme 15 from Simples 문제 풀이_by JohnGang.docx

Microsoft PowerPoint Android-SDK설치.HelloAndroid(1.0h).pptx

chap 5: Trees

11장 포인터

PowerPoint 프레젠테이션

<4F B8A620C0CCBFEBC7D120C8B8B7CE20C0DBBCBAC0C720B1E2C3CA2E687770>

슬라이드 1

슬라이드 1

XSS Attack - Real-World XSS Attacks, Chaining XSS and Other Attacks, Payloads for XSS Attacks

SBR-100S User Manual

tiawPlot ac 사용방법

Contents 01. 안전을 위한 주의 사항 터치형 멀티 조절기 각부 명칭 터치형 각방 조절기 각부 명칭 조절기 난방/정지 하기 조절기 외출 /해제하기 조절기 반복난방 하기 조절기 예약난방 /

PowerPoint 프레젠테이션

목 차 1. 드라이버 설치 설치환경 드라이버 설치 시 주의사항 USB 드라이버 파일 Windows XP에서 설치 Windows Vista / Windows 7에서 설치 Windows

버퍼오버플로우-왕기초편 10. 메모리를 Hex dump 뜨기 앞서우리는버퍼오버플로우로인해리턴어드레스 (return address) 가변조될수있음을알았습니다. 이제곧리턴어드레스를원하는값으로변경하는실습을해볼것인데요, 그전에앞서, 메모리에저장된값들을살펴보는방법에대해배워보겠습

1) 인증서만들기 ssl]# cat > // 설명 : 발급받은인증서 / 개인키파일을한파일로저장합니다. ( 저장방법 : cat [ 개인키

(SW3704) Gingerbread Source Build & Working Guide

Microsoft Word - CH1. MIDAS SDS에 대하여

Adobe Flash 취약점 분석 (CVE )

게시판 스팸 실시간 차단 시스템

윈도우시스템프로그래밍

RealDSP UT 프로그램 메뉴얼

Microsoft Word - 3부A windows 환경 IVF + visual studio.doc

PowerPoint Presentation

신한은행 머니멘토 환경설정 매뉴얼

Emulator

gcloud storage 사용자가이드 1 / 17

Deok9_PE Structure

슬라이드 1

서비스 구성. 서비스 정의. 심플CRM 주요 기능 구성 0 0. 다운로드 및 설치. 기본 구성 6 6. 제공사양 0 심플CRM 표준형 6 심플CRM 녹취형 7 사용하기. 서비스 신청. 홈페이지 로그인 및 인증 안내 가입자 인증 비밀번호 재설정 비밀번호 찾기

Microsoft 을 열면 깔끔한 사용자 중심의 메뉴 및 레이아웃이 제일 먼저 눈에 띕니다. 또한 은 스마트폰, 테블릿 및 클라우드는 물론 가 설치되어 있지 않은 PC 에서도 사용할 수 있습니다. 따라서 장소와 디바이스에 관계 없이 언제, 어디서나 문서를 확인하고 편집

Transcription:

초간단 win32 program crack 계시위치 : www.securityproof.net 작성일시 : 2006년 7월 25일작성자 : bps 이문서는 win32 binary 의 reverse engineering 에대한기본내용에대해작성한글입니다. 원래작성한 crackme 를 PECompact 나 upx 등으로 packing 된바이너리를 unpacking 하는것부터시작하려하였으나일단본인의지식이부족하고, 그리고 packing 된바이너리의 OEP 를찾는건지금설명하려는문서보다더심도있게들어가야되므로배보다배꼽이더커지게됩니다. 따라서이문서에서는단순하게 Debug information 이들어가있는간단한 MessageBox 기반의 crackme 를이용하여 debugger 로특정기능을무력화시키는간단한작업을예로들겠습니다. 일단문서와같이첨부된 crack.exe 를실행합니다. 실행해보면아래와같이 MessageBox 가뜹니다. 잠시해당프로그램에대해설명하자면, 이프로그램은자신의실행위치를검색하여 CD- ROM 이아닌기타다른미디어일경우 error 메시지를뿌리고 return 1 을반환하여종료되는프로그램입니다. 일반적으로아주오래전, Game 이나특정프로그램의불법복사및공유를막기위해간단히조치되었던방법들이지요. 확인버튼을누르면위치검색을수행후아래와같이메시지를뿌립니다. 현재 crack.exe 가저장된위치는컴퓨터의하드디스크이므로, 이프로그램은 CD-ROM

이아니므로에러메세지를뿌리게됩니다. 우리는이인증부분을우회하도록하는것이목표입니다. 일단 debugger 를이용하여해당 crackme 를열어봅시다. 이문서에서는 ollydbg 1.10 을사용하겠습니다. Ollydbg 를이용하여해당바이너리를열면아래와같이구성됩니다. 처음 ollydbg 를이용했다면아마 PUSH EBP 에알아서 break point 가걸려있을겁니다. 그이유는 [Options] -> [Debugging Options] 를누르거나 Alt+O 해보시면, 여러옵션을설정할수있는탭이뜨는데여기서 [events] 탭으로이동해보면다음과같이 WinMain 에 BP 가걸리도록설정되어있음을알수있습니다.

WinMain 의위치를알수있을때, 즉 Debug information 이존재할때, 기본적으로 WinMain 에 BP 가걸리도록설정되어있습니다. 편의에따라다른옵션으로바꿔서사용 할수도있으나당분간은이렇게사용하는게더편합니다. 다시메인창으로돌아와서살펴봅시다. PUSH EBP 에 BP가걸려있으므로, 순차적으로실행해나가면서기타창에있는값들의변화도한번씩살펴봅니다. Ollydbg 는 [Debug] -> [Step Over] 를클릭하거나키보드단축키 F8 을누르면됩니다. 참고로, Step Into 는특정 function 이나명령문이있을때해당문으로이동을하지만 Step Over 는이동없이계속순차적으로실행해나갑니다. F8 을계속해서누르며진행해나가다보면 0x401038 에이르러 MessageBox 가실행됩 니다.

[ 첫번째 MessageBox() 호출, 0x401038] [ 프로그램실행 ] 확인을누르고다시 ollydbg 로돌아옵니다. 0x40103e 에서 ESI 와 ESP 를서로비교해보는것을볼수있습니다. (CMP ESI, ESP) 현재에는중요한게아니니계속해서 F8 을눌러해당 crackme 의가장중요한함수인 GetDriveType() 이호출될때까지진행해나갑니다. GetDriveType() 을실행하고난바로다음인 0x40104F 에서좌측의 Registers 창을살펴봅시다. CPU register 의변화를실시간으로보여주는창인데, 여기서변화된값은빨간색으로따로표시됩니다. 여기서 EAX 값을살펴봐야합니다.

[GetDriveType() 실행한후, 0x40104F] [CPU register 변화값확인, EAX 값이 3 으로변화 ] 네. EAX 레지스터의값이 3 으로변화했습니다. GetDriveType() 이실행한후에발생된일 이지요. 여기서우리는 win32 API 의 GetDriveType() 함수가어떤일을하는지알아야합 니다.

MSDN library 를검색해보시면아시겠지만해당함수는드라이브스트링을인자값으로받아들이며해당드라이브의종류를판별하여, 각타입에맞는숫자값을리턴합니다. 즉 GetDriveType( C:\ ), GetDriveType( D:\ ) 등과같이작성한다는거죠. 여기서한가지참고할점은굳이인자로스트링을넣지않은, 즉인자값에 NULL 을삽입하면해당프로그램이실행된위치의드라이브값을읽어오는겁니다. 즉 crack.exe 가 C:\ 밑에있다면 C:\ 를, D:\ 밑에있다면 D:\ 를읽어와해당드라이브의타입값을넘겨주는것이지요. 현재 GetDriveType() 은 3을반환했습니다. 이값이무엇을뜻하는지는 MSDN을살펴보면아래와같이나옵니다. DRIVE_UNKNOWN (0) The drive type cannot be determined. DRIVE_NO_ROOT_DIR (1) The root path is invalid, for example, no volume is mounted at the path. DRIVE_REMOVABLE (2) The drive is a type that has removable media, for example, a floppy drive or removable hard disk. DRIVE_FIXED (3) The drive is a type that cannot be removed, for example, a fixed hard drive. DRIVE_REMOTE (4) The drive is a remote (network) drive. DRIVE_CDROM (5) The drive is a CD-ROM drive. DRIVE_RAMDISK (6) The drive is a RAM disk. 옆에괄호로삽입한숫자가반환되는타입값입니다. 즉, 현재 GetDriveType() 은 3, 즉 DRIVE_FIXED 를반환했으며, 이것은설명에서와같이고정된하드드라이브입니다. 이것으로자신의위치가 CD-ROM 이아닌하드드라이브라는것을알게되는거죠. 우리는이제이것을조작해낼것입니다!!!

일단 ollydbg 의 F8 을눌러서계속진행해나갑시다. 계속 F8 로진행하다가 무언가느낌이오는곳이있습니다. 바로 0x40105d 이지요. 0x40105d 를살펴보면 JNZ short crack.00401080 으로되어있습니다. 즉, 401080 으로 이동하게되는거죠. Ollydbg 의메인창스크롤을내려 0x401080 으로가보시면 네. 바로에러메세지가뜨게됩니다. 우린이것을조작해버리면됩니다. 즉, 0x401080 으로이동해서에러메세지를출력하도록하는 0x40105d 의명령을바꿔버리면되는겁니다. 인증성공메시지는 0x40105f 부터시작합니다. 바로밑이죠. 0x40105d 에커서를위치시키고, 마우스오른쪽클릭으로팝업메뉴를엽니다. 그럼아래와같이 Assemble 을클릭하면해당메모리주소의명령을수정할수있습니다. 마우스를쓰기귀찮으면그냥 space bar 를누르셔도동일한작업이수행됩니다.

여기서우리가원하는명령어를작성해주고 Assemble 버튼을눌러주면됩니다. 일단은 JMP 40105F 로입력합시다. 솔직히그냥 00401080 을 0040105F 로바꿔주면되 지만바뀐게확표시되도록 JMP 문을쓰도록합시다.( 웃음 ) 바뀐화면은아래와같습니다. 40105F 로 JMP 하라는명령이정확하게기입되었습니다. 수정했다고끝이아닙니다. 이제수정된파일을실제 PE포멧실행파일로저장해야겠지요. 다시커서를 0x00105d 로이동합니다. 수정된빨간색글자부분이지요거기서오른쪽마우스를클릭해서팝업메뉴를띄웁니다. 아랫쪽을보시면 Copy to executable 이란항목이있고, 옆으로 selection 과 All modifications 가있습니다. 차례대로 [Copy to executable] -> [selection] 을선택합니다. 그럼새로창이하나더뜰겁니다. 이것이이제완성된 (crack 된 ) 프로그램의코드입니다. 이제파일로저장하면끝이지요. 다시마우스오른쪽버튼을누른후팝업메뉴를띄웁니다.

[save file] 을클릭하면실행파일 (.exe) 로저장할수있습니다. 적당한이름으로저장합시다. 전 crack2.exe 로저장했습니다. 이제새로저장된, crack 한프로그램을실행해봅시다. 아래와같이인증성공메시지가나오면성공!! 입니다. 지금까지 win32 프로그램의 crack 을간단하게설명했습니다. 한가지명심할것은, 이문서에서예제로든프로그램은그야말로정말간단한, 실제에서는사용되지조차않는정도의간단한예제입니다. 실제상용어플리케이션이나게임은 PECompact 나 upx, 기타다른 packer로 packing 되어있으며, 심지어 debug information 이전혀없는상태로배포되기도합니다. Unpacker 로 unpacking 한다해도 packing되기전 binary 와는코드자체가많이틀리며, 따라서 reverser 들은여러가지방법으로 OEP 를찾아들어가어느섹션에서실제코드가풀리는지를계속해서추적합니다. 그러므로 reverse engineering 에대한지식이없는저같은분들은당분간자신이만든 crackme 나, 다른우수한 reverser 들이만들어놓은 crackme 예제로내공을쌓읍시다. 이상으로글을마치겠습니다. 졸필의글을끝까지읽어주신모든분들께감사드립니다. 다음에쓸글은, 아마도 OEP 와관련된 unpacking 에대한글이될꺼같습니다. 감사합니다.