在模糊测试中(使用 Pintool)来检查程序的执行痕迹,这里是 wget。我得到了一些奇怪的指令,以下是从(很长的)跟踪中提取的一段:
RIP register instruction
0x7fff751fed17 mov rbx, 0xffffffffffdff000
0x7fff751fed1e lsl r11d, eax
0x7fff751fed22 xor r15d, r15d
0x7fff751fed25 mov r10d, r11d
0x7fff751fed28 mov r9d, dword ptr [0xff5ff080]
0x7fff751fed30 test r9b, 0x1
0x7fff751fed34 jnz 0x7fff1fdb4fdf
0x7fff751fed3a mov rax, qword ptr [0xff5ff0a8]
0x7fff751fed42 mov r13d, dword ptr [0xff5ff088]
0x7fff751fed4a mov qword ptr [rdi], rax
0x7fff751fed4d mov edx, dword ptr [0xff5ff088]
0x7fff751fed54 mov r14, qword ptr [0xff5ff0b0]
对我来说,他们很奇怪。首先,它们中的一些直接访问内存,这意味着一些地址,例如0xff5ff080
,0xff5ff0a8
已被硬编码到程序中。其次,我在加载的库和 wget 本身中找不到它们。第三,更奇怪的是,通过传递参数(IARG_MEMORYREAD_EA)
来获取访问内存的虚拟地址。我得到了地址,例如0xffffffffff5ff080
,,0xffffffffff5ff0a8
等等,而且它们都不属于程序的内存空间。
有人能给我一些建议吗?