일부 소프트웨어를 기본 클라이언트로 이식하려고합니다. 속도면에서 코드의 여러 위치에서 인라인 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 블록을 제거하기 시작하고, 나는 안전을 위해이를 정정 할 수 있도록 내가 잘못된 블록을 찾을 희망합니다.)
감사합니다. 어떻게 놓칠 수 있었는지 모르겠습니다. 나는 또한이 단계들을 자동화하는 ncval-annote를 발견했다. –