Image Image Image Image Image Image Image Image Image Image

NURILAB | April 22, 2019

Scroll to top

Top

NuriDbg v0.10: 파이썬용 윈도우 디버거

NuriDbg v0.10: 파이썬용 윈도우 디버거

설명

NuriDbg는 파이썬 스크립트 언어로 제어하는 윈도우용 디버거이다. 이 툴은 기존의 OllyDbg 또는 Immunity Debugger와 다르다. GUI를 제공해주지도 않으며, 디스어셈블 기능도 제공하지 않는다. 오로지 파이썬 스크립트를 사용하여 프로그램을 제어할 수만 있다. 실행 압축을 푼다던지 메모리에서 프로그램을 패치하는 작업등이 가능하다.

NuriDbg는 특정 기능에 국한하지 않고 사용자의 상상에 의해 파이썬 스크립트를 이용하여 새로운 도구가 되기도 할 것이다. NuriDbg를 이용하여 다양한 도구 개발에 도전해 보길 바란다.


사용 예제

아래는 실행 압축 프로그램인 upx를 해제하는 파이썬 소스코드로 NuriDbg를 이용한 예제이다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
# -*- coding: utf-8 -*-
# Copyright (C) 2013-2014 Nurilab.

from nurilab.debugger import *

if __name__ == '__main__' :
    # NuriDbg를 초기화 한다.
    k = NuriDbg()  

    # UPX로 실행 압축된 프로그램을 로딩한다.
    if k.Load('notepad_upx.exe') == True :
        eip = k.GetRegs().Eip

        # 메모리의 특정 위치에서 UPX 패턴을 확인한다.
        if k.ReadMemory(eip+0xC, 7) == '5783CDFFEB1090'.decode('hex') :
            print '[*] Found a UPX Signature'

            # OEP로 점프하기 직전 명령어에 브레이크 포인터를 설정한다.
            k.SetBreakpoint(eip + 0x18B)

            # 브레이크 포인터까지 실행하기
            k.Run()

            # 브레이크 포인터 삭제하기
            k.DisableBreakpoint(eip + 0x18B)

            # 한 스텝만 더 실행하기
            k.StepIn()
           
            # UPX의 OEP를 알아냈다.
            eip = k.GetRegs().Eip
            print '[*] OEP : 0x%08X' % (eip)
           
            # 파일로 덤프하기
            k.Dump('upx.dmp', eip)

주요 기능

v0.10 (2014/09/29)
1. 소프트웨어 브레이크 포인트 지원
2. 메모리 수정 기능 지원


운영 환경

1. 운영체제 : Windows XP
2. 파이썬 : 2.7 버전


다운로드