2014-12-18 3 views
0

Windbg의 확장 기능을 작성하는 동안 오프셋을 DisassembleWide() 함수에 전달하여 명령어를 디스 어셈블합니다. 그러나 디스 어셈블 된 명령어의 경우 명령어의 주소 + 16 진수 opcode가 해당 명령어에 추가됩니다.dbgeng의 DisassembleWide()를 통해 disassemble 된 명령어에서 주소 제거

SetAssemblyOptions()DEBUG_ASMOPT_NO_CODE_BYTES 플래그를 지정하여 opcode를 제거 할 수있었습니다. 그러나 나는 명령 오프셋을 제거하는 것처럼 보이지 않는다. DEBUG_ASMOPT_DEFAULT | DEBUG_ASMOPT_NO_CODE_BYTES도 아니고 (DEBUG_ASMOPT_DEFAULT | DEBUG_ASMOPT_NO_CODE_BYTES) & ~DEBUG_ASMOPT_VERBOSE도 작동하지 않는 것 같습니다.

내가 누락 된 항목이 있습니까? 명령에서 오프셋을 깨끗하게 제거 할 수있는 방법이 있습니까? 아니면 수동으로해야합니까?

답변

1
에는 주소는 항상 당신이 windbg를 세션에있는 경우 .shell 이것을 달성 할 수있는 자신에게 그것을 구문 분석해야하고

0:000> .asm no_code_bytes 
Assembly options: no_code_bytes 
0:000> .shell -ci "u @eip l4" awk "{$1=\"\";print $0}" 

int 3 
ret 
mov edi,edi 

int 3 
.shell: Process exited 
을 awk가 인쇄되지 않습니다