2012-02-18 3 views
0

일부 소프트웨어를 기본 클라이언트로 이식하려고합니다. 속도면에서 코드의 여러 위치에서 인라인 asm을 사용합니다. (그들 중 대부분은 매우 단순한 하나의 라인으로, 안전하다고 생각할 정도로 간단합니다.)ncval의 출력을 해석하는 방법은 무엇입니까?

나는 프로젝트를 컴파일하고 링크해야하지만, 지금은 크롬 코드 분석에 실패합니다. Ncval은 다음을 출력합니다.

segment[0] p_type 6 p_offset 0 vaddr 0 paddr 0 align 4 
    filesz b4 memsz b4 flags 4 
segment[1] p_type 1 p_offset 10000 vaddr 20000 paddr 20000 align 65536 
    filesz 2e91a0 memsz 2e91a0 flags 5 
parsing segment 1 
VALIDATOR: 31be8: Illegal instruction 
segment[2] p_type 1 p_offset 300000 vaddr 10020000 paddr 10020000 align 65536 
    filesz 72aac memsz 72aac flags 4 
segment[3] p_type 1 p_offset 380000 vaddr 100a0000 paddr 100a0000 align 65536 
    filesz 1cb8 memsz 29658 flags 6 
*** client_x86_32.nexe IS UNSAFE *** 
Validated client_x86_32.nexe 
*** client_x86_32.nexe is UNSAFE *** 

그러나이 출력의 의미는 실제로 알지 못합니다. 적어도 하나의 불법적 인 지시를 발견했음을 알 수 있습니다. client_x86_32.nexe의 objdump를 수행했으며, 불법적 인 명령 (s?)의 주소가 ncval의 출력을 기반으로하는 것이 무엇인지 알아 내려고했지만, 그렇게 할 수 없었습니다. ncval 출력.

어떤 도움을 환영합니다.

(그 동안 내가 코드에서 ASM 블록을 제거하기 시작하고, 나는 안전을 위해이를 정정 할 수 있도록 내가 잘못된 블록을 찾을 희망합니다.)

답변

1

발리의 출력은 코드 주소를 준 0x31be8 . client_x86_32.nexe에서 gdb 또는 objdump를 사용하여 주소 0x31be8에 어떤 명령어가 있는지 확인하고 asm 블록과 비교하십시오.

+0

감사합니다. 어떻게 놓칠 수 있었는지 모르겠습니다. 나는 또한이 단계들을 자동화하는 ncval-annote를 발견했다. –

관련 문제