2012-01-29 2 views
1

나는이 명령어를 사용하여 명령어 포인터가 주어진 곳에서 프로그램에 의해 실행되는 명령어를 가져와야한다. 지금 내가 지침의 주소를 제공하는 메커니즘을 가지고 있다고 가정 해보십시오. IA32 명령어 세트에서 opcode를 얻을 수 있습니까?주어진 주소로 명령어 포인터를 가져 오는 것

+2

프로세서 문서를 가져와 opcode 테이블을 조회합니다. 또는 오픈 소스 디스어셈블러를 찾으십시오. –

+0

@DavidHeffernan 글쎄, 문제는, 명령 포인터를 주어진, 각 opcode 바이트 수가 (이 잘못된 경우 나 수정,이 너무 확실하지 않습니다) 이후 opcode 가져 오는 방법을 잘 모르겠습니다. – sanz

+1

모두 프로세서 설명서에 설명되어 있습니다. 각 명령어는 명령어 크기를 포함하여 매우 자세하게 설명됩니다. 기성품으로 만들어진 재난 코드를 사용하기가 훨씬 쉬워졌습니다. –

답변

2

그냥 주소를 읽을 수 있는지 확인 등 BeaEngine 또는 DiStorm으로, 이러한에서 읽을 수있는 메모리 주소를 전달할 수 있습니다, 메모리 디스어셈블러에 필요합니다. 함수의 바이트 길이를 알고 있다면 Run-Length-Dissassemblers를 사용하는 것이 조금 더 좋다.

2

하드웨어 지원 도움말을 찾으신다면 어떻게 작동하는지 알 수 없습니다. 이것은 소프트웨어로 수행되어야합니다. 귀하의 코드는 opcode와 명령어의 테이블을 필요로하며 룩업을 수행해야합니다.

설명하는 것을 분해라고합니다. 오픈 소스 디스어셈블러가 많이 있으며, 그 중 하나를 사용할 수 있다면 작업이 매우 간단해질 것입니다. 여기 봐 : http://en.wikibooks.org/wiki/X86_Disassembly/Disassemblers_and_Decompilers

관련 문제