파이썬 해킹 프로그래밍으로 현재 디버기를 만들고 있는 상황인데
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 |
이런 어처구니 없는 삽질을 할 줄이야...ㅡ.ㅡ;;;
다른 사람은 이런 일이 없길....