2012-02-03 2 views
1

Microsoft의 매크로 어셈블러와 DumpBin은 훌륭한 도구이지만 DumpBin의 결과를 MASM에 공급할 수 없습니다. 올바른 어셈블리에 필요한 정보 (예 : 예외 처리 지시문)가 부족하며 구문에도 문제가있는 것으로 보입니다."왕복"x86/64 디스어셈블러/어셈블러 콤보가 있습니까?

정확히 원래의 실행 파일로 다시 수정없이 를 조립할 수있다 디스 어셈블 된 코드를 생성 할 수있는 86/64 디스어셈블러가 있습니까?

+0

질문을 확장해야한다고 생각합니다. 바이너리 (코드, 데이터, 리소스 등)의 모든 것을 단순히 어셈블러로 변환 할 수있는 디스어셈블러가 많이 있습니다. 어셈블러는 다시 같은 바이너리로 다시 어셈블 할 수 있습니다. 결국 비트 시퀀스 일뿐입니다. 당신이 실제로 요구하는 것은 어셈블러가 사용할 수있는 형태로 유용한 출력 (예 : 코드 + 데이터 섹션 등)을 생성하기 위해 상위 레벨에서 바이너리를 "해석"할 수있는 디스어셈블러 (disassembler)입니다. – adelphus

+0

@adelphus : 예, 어셈블러에 공급할 수있는 형식으로 출력하는 것을 제외하고는'dumpbin'과 같은 것을 찾고 있습니다. 'dumpbin'은 필요한 모든 정보를 출력합니다. 형식이 너무 이상합니다. – Mehrdad

답변

2

DOS에서 .COM과 같은 매우 단순하고 평범한 실행 파일에 대해 언급하지 않는 한 나는 의심 스럽습니다. 요즘 실행 파일은 원시 코드와 데이터 외에 많은 요소를 포함하고 있으며 모든 구성 요소를 완전히 추출하여 다시 함께 저장하는 것은 매우 간단하거나 보편적으로 지원되지 않습니다.

그런 다음 많은 지침을 여러 가지 방법으로 인코딩 할 수 있습니다 (예 : mov ax, 0). 인코딩 모호성을 극복하려면 mov ax, 0 대신 db 0b8h, 0, 0 또는 db 0c7h, 0c0h, 0, 0을 명시 적으로 조합해야합니다. db는 손실없이 조립할 수 있습니다.

+0

음,'dumpbin'은 내가 원하는 거의 모든 것을 덤프한다는 것을 의미합니다. 이것은 모든 어셈블러에서 사용할 수있는 형식이 아닙니다. 그러나 그것은 꽤 잘 해체 된 것처럼 보입니다. 그리고 아무것도 생략하지 않는 것 같습니다. 그래서 그렇게하는 것이 불가능하지 않습니까? – Mehrdad

+0

불가능하지는 않습니다. 거의 필요하지 않으며 (상자에 넣은 경우) 상자 밖으로 나올 수있는 도구가 없다는 것이 확실합니다. –

관련 문제