首页
社区
课程
招聘
[注意]报告一处错误,第15页
发表于: 2011-10-30 18:31 4989

[注意]报告一处错误,第15页

2011-10-30 18:31
4989
//检查是否超出分析范围
if(nLen<Index)
应该改为
if(nLen <= pCode + nIndex - szAsmData)

如果有不同意见请联系我。

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (3)
雪    币: 19
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
Decode2Asm 中 nIndex返回的是机器码指令的大小, nLen 获取是机器码的总长度也就是Decode结构体的大小, 如果获取到的nIndex的长度大于结构体大小,那么解析就会出现问题。
pCode + nIndex - szAsmData  ;pCode  = pCode + nIndex 循环中  而szAsmData 值没变等于 这样 pCode + nIndex - szAsmData 在下次的时候就等于 pCode + nIndex + nIndex - szAsmData ,因为pCode 大于szAsmData 所以 这个结果肯定是大于2*nIndex的。你再拿这个值去判断的话 就大于了结构体的大小,Decode2Asm就无法解析了 不知道我分析的对不对 ,你可以测试下!这些代码是公开的源代码,应该是借鉴的,并不是作者写的!
2011-11-17 08:07
0
雪    币: 35
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
这个我试过,原来的代码确实无法正确执行,会无限执行下去,程序我运行过,你试一下吧。
2011-11-19 12:26
0
雪    币: 278
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
原来的代码确实无法正确执行,会无限执行下去,程序我也运行过了。。
2012-1-10 13:07
0
游客
登录 | 注册 方可回帖
返回
//