解决TEMU对XP sp3中样本的trace结果为空

来源:互联网 发布:西南期货软件 编辑:程序博客网 时间:2024/04/28 11:23

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讨论组:

http://groups.google.com/group/bitblaze-users/browse_thread/thread/447105c4bbaa3fd4/4e05944a6a50c256?lnk=gst&q=cpu_single_env-%3Eeip#4e05944a6a50c256