能力值:
( LV12,RANK:530 )
|
-
-
2 楼
抢个沙发慢慢看了
我直接用OD调试的,map文件不会用...
调试到这个函数处理到f时会跳向
00413e08 e83fefffff call TestFloat!_decode_pointer (00412d4c)
00413e0d 59 pop ecx
00413e0e ffd0 call eax
接着就出错了,我把f改成大写F就不出错了,但是没有答案了,后来翻了下书,没有F这种格式,改成g也错,就直接放弃了
|
能力值:
( LV2,RANK:10 )
|
-
-
3 楼
我竟然没有注意到map文件。
有时间了慢慢学习一下。
|
能力值:
( LV4,RANK:50 )
|
-
-
4 楼
座第一排........
标准答案来了
|
能力值:
( LV15,RANK:2473 )
|
-
-
5 楼
大家分析一下,微软为什么增加这个_IsNonwritableInCurrentImage的判断?
以前版本的VC没有这个判断
|
能力值:
( LV4,RANK:50 )
|
-
-
6 楼
哇,第一排居然没座起,前面两个也太快了
|
能力值:
(RANK:1060 )
|
-
-
7 楼
upx分析过了
|
能力值:
( LV15,RANK:2473 )
|
-
-
8 楼
那只是upx从解决自身兼容性考虑的
我们需要进一步了解一下微软增加_IsNonwritableInCurrentImage判断的必要性
没有这个判断会对程序产生什么样负面的影响
|
能力值:
( LV4,RANK:50 )
|
-
-
9 楼
这话怎么解?
|
能力值:
(RANK:1130 )
|
-
-
10 楼
|
能力值:
( LV8,RANK:130 )
|
-
-
11 楼
多看一会儿运行时源码可以找到答案,这题可惜了
|
能力值:
( LV15,RANK:2473 )
|
-
-
12 楼
|
能力值:
(RANK:1130 )
|
-
-
13 楼
提kbys是因为shoooo第一个提交了,也许有什么关联
其实upx1.25也有这个BUG,大家可以试试
|
能力值:
( LV9,RANK:180 )
|
-
-
14 楼
initialize floating point package, ** if present **
不知对不对 ?
用这个来判断 if present ?
|
能力值:
( LV15,RANK:2473 )
|
-
-
15 楼
这个高的版本没用过,我用习惯了upx0.70
|
能力值:
( LV4,RANK:50 )
|
-
-
16 楼
少看了上面几行,就离标准答案。。唉
|
能力值:
( LV12,RANK:290 )
|
-
-
17 楼
同意,那是为什么呢?
|
能力值:
( LV12,RANK:450 )
|
-
-
18 楼
kbys 是啥?
_IsNonwritableInCurrentImage 微软为啥添加这个估计比较难分析,最后只能是猜测。
|
能力值:
( LV13,RANK:280 )
|
-
-
19 楼
int __cdecl _cinit (
int initFloatingPrecision
)
{
int initret;
/*
* initialize floating point package, if present
*/
#ifdef CRTDLL
_fpmath(initFloatingPrecision);
#else /* CRTDLL */
if (_FPinit != NULL &&
_IsNonwritableInCurrentImage((PBYTE)&_FPinit))
{
(*_FPinit)(initFloatingPrecision);
}
_initp_misc_cfltcvt_tab();
#endif /* CRTDLL */
发段代码,大家看看,是不是和CRTDLL 这个有关呢
|
能力值:
( LV4,RANK:50 )
|
-
-
20 楼
VC6没问题,VC2005有这个问题
|
能力值:
( LV3,RANK:25 )
|
-
-
21 楼
捉摸不透的微软
|
能力值:
( LV2,RANK:10 )
|
-
-
22 楼
收获很多,谢谢评委出题了
|
能力值:
( LV6,RANK:90 )
|
-
-
23 楼
为什么 重新导入一个 snwprintf 也能正确执行呢。。 奇怪
|
能力值:
( LV2,RANK:10 )
|
-
-
24 楼
又自己跟了一下,发现这个题如果有耐心的话还是能找到出错地方的,个人感觉有点被google误导了的感觉,不过只能怪自己不会google了,再次感谢评委出的如此优秀的题目
|
能力值:
( LV2,RANK:10 )
|
-
-
25 楼
个人猜测是系统自带的snwprintf是没有程序里的那些判断的,调用的函数也是系统已经初始化好的程序,为了给整个系统使用,限制条件就要少些。而程序里的函数是在程序加载的时候初始化的,于是有了那个rdata是否可写的判断,纯猜测,可以无视
|
|
|