trace结果为空的原因是TEMU中的taintcheck不支持XP sp3。
版本判断只判断了sp1和sp2,加入对sp3的判断即可!
解决办法:
编辑temu-1.0目录下文件taintcheck.c,找到taintcheck_patch( )
int taintcheck_patch() //patch for keystroke propagation on Windows XP sp2
{
#ifndef NO_PROPAGATE
if (cpu_single_env->eip != 0xbf8a4bde &&
cpu_single_env->eip != 0xbf84a74f &&
cpu_single_env->eip != 0xbf848d65 && //新加入对sp3的两个eip的判断
cpu_single_env->eip != 0xbf848d1c) //新加入对sp3的两个eip的判断
return 0;
if(!TEMU_emulation_started) return 0;
uint32_t phys_addr, addr, addr2, phys_addr2;
addr = cpu_single_env->regs[R_EBP] + 8;
phys_addr = TEMU_get_phys_addr(addr);
if (phys_addr == -1)
return 0;
if (!taint_mem_check(phys_addr, 1))
return 0;
addr2 = cpu_single_env->regs[R_EBP] + 0x14;
if (TEMU_read_mem(addr2, 4, &addr2) >= 0 &&
(phys_addr2 = TEMU_get_phys_addr(addr2)) != -1) {
taintcheck_mem2reg_nolookup(phys_addr, addr, 1, R_T0 * 4);
taintcheck_reg2mem(R_T0 * 4, 1, phys_ram_base + phys_addr2);
}
#endif
return 0;
}
解决办法查询自bitblaze讨论组: