반응형

 

 

겁나 빡시다.

ㅡ.ㅡ;

나온것들은 다 32bit에서 동작하는 방식...ㅡㅡ

된장~!!!

왜 64bit로는 포팅을 안한거얏~!!

이번 기회에 내가 만들어서 혼자만 가지고 있어?

ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ

 

여하튼 빡시게 하고 있음..겁나 빡셔~~~

ㅋㅋㅋ

 

 

 

반응형
반응형

 

참조 : http://riguo.hateblo.jp/entry/2012/04/22/113400

 

python 디버기를 만드는 과정에서 발생하는 32bit와 64bit의 차이를 알지 못하면

엄청 짜증이 난다.

책이 나올때는 32bit 환경에서 만들어졌기 때문에 64bit의 환경에서의 내용이 나오지 않는다.

따라서, 관련 내용을 정리하여 올린다.

 

32bit Context Defines 

64bit Context Defines

DWORD     = c_ulong

 

class CONTEXT(Structure):
    _fields_ = [
   
        ("ContextFlags", DWORD),
        ("Dr0", DWORD),
        ("Dr1", DWORD),
        ("Dr2", DWORD),
        ("Dr3", DWORD),
        ("Dr6", DWORD),
        ("Dr7", DWORD),
        ("FloatSave", FLOATING_SAVE_AREA),
        ("SegGs", DWORD),
        ("SegFs", DWORD),
        ("SegEs", DWORD),
        ("SegDs", DWORD),

# 32bit Register
        ("Edi", DWORD),
        ("Esi", DWORD),
        ("Ebx", DWORD),
        ("Edx", DWORD),
        ("Ecx", DWORD),
        ("Eax", DWORD),
        ("Ebp", DWORD),
        ("Eip", DWORD),
        ("Esp", DWORD),
       
        ("SegCs", DWORD),
        ("EFlags", DWORD),
        ("SegSs", DWORD),
        ("ExtendedRegisters", BYTE * 512),
]

DWORD        = c_ulong

DWORD64     = c_ulonglong

 

class CONTEXT(Structure):
    _fields_ = [
   
        ("ContextFlags", DWORD),
        ("Dr0", DWORD),
        ("Dr1", DWORD),
        ("Dr2", DWORD),
        ("Dr3", DWORD),
        ("Dr6", DWORD),
        ("Dr7", DWORD),
        ("FloatSave", FLOATING_SAVE_AREA),
        ("SegGs", DWORD),
        ("SegFs", DWORD),
        ("SegEs", DWORD),
        ("SegDs", DWORD),

# 64bit Register
        ("Rdi", DWORD64),
        ("Rsi", DWORD64),
        ("Rbx", DWORD64),
        ("Rdx", DWORD64),
        ("Rcx", DWORD64),
        ("Rax", DWORD64),
        ("Rbp", DWORD64),
        ("Rip", DWORD64),
        ("Rsp", DWORD64),
       
        ("SegCs", DWORD),
        ("EFlags", DWORD),
        ("SegSs", DWORD),
        ("ExtendedRegisters", BYTE * 512),
]

 

참고해서 쓰기 바란다.

 

ps : 출력 형태는 다음과 같다.

 

32bit print format 

64bit print format

 

    print ("[*] Dumping registers for Thread ID: 0x%08x" % thread)
    print ("[*] RIP : 0x{0:016x}" .format(thread_context.Rip))
    print ("[*] RSP : 0x{0:016x}" .format(thread_context.Rsp))
    print ("[*] RBP : 0x{0:016x}" .format(thread_context.Rbp))
    print ("[*] RAX : 0x{0:016x}" .format(thread_context.Rax))
    print ("[*] RBX : 0x{0:016x}" .format(thread_context.Rbx))
    print ("[*] RCX : 0x{0:016x}" .format(thread_context.Rcx))
    print ("[*] RDX : 0x{0:016x}" .format(thread_context.Rdx))
    print ("[*] End DUMP")

 

    print ("[*] Dumping registers for Thread ID: 0x%08x" % thread)
    print ("[*] RIP : 0x{0:016x}" .format(thread_context.Rip))
    print ("[*] RSP : 0x{0:016x}" .format(thread_context.Rsp))
    print ("[*] RBP : 0x{0:016x}" .format(thread_context.Rbp))
    print ("[*] RAX : 0x{0:016x}" .format(thread_context.Rax))
    print ("[*] RBX : 0x{0:016x}" .format(thread_context.Rbx))
    print ("[*] RCX : 0x{0:016x}" .format(thread_context.Rcx))
    print ("[*] RDX : 0x{0:016x}" .format(thread_context.Rdx))
    print ("[*] End DUMP")

 

반응형
반응형

 

파이썬 해킹 프로그래밍으로 현재 디버기를 만들고 있는 상황인데

Context 값을 얻어오지 못하는 현상이 발생했다.

과연 무엇 때문에 그럴까????

 

>>>>> 현재 내 환경은 Windows7 64bit 이다.

 

Enter The PID of the process to attach to : 3692
[*] Select PID 3692
[*] OpenProcess Handle : 124
[*] self.h_process : 124
[*] Enumerate Thread inside
[*] Dumping registers for Thread ID: 0x00001928
[*] EIP : 0x00000000
[*] ESP : 0x00000000
[*] EBP : 0x00000000
[*] EAX : 0x00000000
[*] EBX : 0x00000000
[*] ECX : 0x00000000
[*] EDX : 0x00000000
[*] End DUMP

이유는 64bit에서는 32bit 레지스터를 사용하지 않는다.

따라서, RIP, RSP, RBP 등등 확장된 레지스터를 사용하기 때문에 담는 그릇도 틀리다.

32bit에서 실행할 경우 아래와 같이 출력이 가능하다.

 

 

32bit 

 64bit

Enter The PID of the process to attach to : 3364
[*] Select PID 3364
[*] OpenProcess Handle : 1900
[*] self.h_process : 1900
[*] Enumerate Thread inside
[*] Dumping registers for Thread ID: 0x00000d1c
[*] EIP : 0x7c93e514
[*] ESP : 0x0007fde0
[*] EBP : 0x0007fdfc
[*] EAX : 0x00b50088
[*] EBX : 0x00000000
[*] ECX : 0x00001f40
[*] EDX : 0x000adea8
[*] End DUMP
[*] Dumping registers for Thread ID: 0x000001d0
[*] EIP : 0x7c9820ec
[*] ESP : 0x00acfff8
[*] EBP : 0x00000000
[*] EAX : 0x00000000
[*] EBX : 0x00000001
[*] ECX : 0x00000002
[*] EDX : 0x00000003
[*] End DUMP
[*] finished debugging. Exiting...

[*] self.h_process : 124
[*] Enumerate Thread inside
[*] Get Thread Context inside
[##] Thread Handle : 0xac
[*] Dumping registers for Thread ID: 0x00001dc0
[*] RIP : 0x0000000002535318
[*] RSP : 0x000000000021f690
[*] RBP : 0x000000000021f470
[*] RAX : 0x000000000021f6a0
[*] RBX : 0x0000000000001100
[*] RCX : 0x000000000258c0b8
[*] RDX : 0x000000000021f470
[*] End DUMP
[*] Get Thread Context inside
[##] Thread Handle : 0xac
[*] Dumping registers for Thread ID: 0x000003c0
[*] RIP : 0x0000000002535318
[*] RSP : 0x000000000021f690
[*] RBP : 0x000000000021f470
[*] RAX : 0x000000000021f6a0
[*] RBX : 0x0000000000001100
[*] RCX : 0x00000000738e692d
[*] RDX : 0x000000000021f470
[*] End DUMP

 

이런 어처구니 없는 삽질을 할 줄이야...ㅡ.ㅡ;;;

다른 사람은 이런 일이 없길....

 

반응형

'프로그래밍 > Python' 카테고리의 다른 글

Windows 7에서 GetModuleHandle 사용하기  (0) 2013.07.12
64bit debugger 만들기  (0) 2013.07.02
python thread context 보기(win7 64bit)  (2) 2013.07.02
Context 32bit / 64bit 선언  (0) 2013.06.29
GetLastError() - 0x00000032  (0) 2013.06.27
반응형
Windows7 64bit를 설치 후에 무작정 jre를 설치하여 실행 시키니 되지 않더군요.
따라서, Windows7 64bit 설치 과정을 나열해 봅니다.


1. Windows7 64bit를 쓴다고 64bit를 설치 하지 말자.
  - jre 만 설치하면 paros가 실행되지 않습니다. 따라서 jdk도 같이 설치 하셔야 합니다.
  
  - 또한, 32bit로 설치해야지 paros가 동작을 잘 합니다.
     http://www.oracle.com/technetwork/java/javase/downloads/jre-7u2-download-1377135.html



2. 32bit 설치 후 paros 경로를 변경한다.

  - path 지정


  - 파로스 단축 아이콘, jdk 경로 지정



3. 실행~

반응형

'Reverse > SystemDoc' 카테고리의 다른 글

[강의자료] 컴퓨터 보안 창과 방패  (0) 2018.01.25
[HowTo] Windows Testing Mode  (0) 2014.02.04
Windows Veriosn Check  (0) 2014.02.03
Key Log List  (0) 2012.08.07
Windows 7 Driver Test 방법  (0) 2012.01.18

+ Recent posts