【问题标题】:How to interpret ncval's output?如何解释 ncval 的输出?
【发布时间】:2012-02-18 17:04:20
【问题描述】:

我正在尝试将一些软件移植到本机客户端。出于速度原因,它在代码中的多个位置使用了一些内联汇编。 (大部分都是非常简单的单行的,简单到应该算是安全的。)

我得到了要编译和链接的项目,但目前它未能通过 Chrome 的代码分析。 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,我试图根据ncval的输出找出非法指令的地址是什么,但我做不到,因为我不知道如何计算它ncval 输出。

欢迎任何帮助。

(与此同时,我将开始从代码中删除 asm 块,并希望我能找到有问题的块,以便我可以更正它以确保安全。)

【问题讨论】:

    标签: assembly google-nativeclient


    【解决方案1】:

    验证器的输出给出了代码地址,0x31be8。尝试在 client_x86_32.nexe 上使用 gdb 或 objdump 来查看地址 0x31be8 处的指令,并将其与您的 asm 块进行比较。

    【讨论】:

    • 谢谢,我不知道我怎么会错过。我还发现了 ncval-annote,它可以自动执行这些步骤。
    猜你喜欢
    • 2014-08-09
    • 2021-06-01
    • 2014-02-03
    • 2018-09-16
    • 2018-09-09
    • 2015-11-11
    • 2016-08-18
    • 2011-09-14
    • 1970-01-01
    相关资源
    最近更新 更多