首页
社区
课程
招聘
[原创]第1阶段第3题
发表于: 2008-10-9 00:07 2483

[原创]第1阶段第3题

2008-10-9 00:07
2483
.text:00420D20 sub_420D20      proc near
.text:00420D20
.text:00420D20 var_9C          = qword ptr -9Ch
.text:00420D20 var_94          = dword ptr -94h
.text:00420D20 Text            = word ptr -90h
.text:00420D20 Dst             = byte ptr -8Eh
.text:00420D20 var_C           = dword ptr -0Ch
.text:00420D20 var_8           = qword ptr -8
.text:00420D20
.text:00420D20                 push    ebp
.text:00420D21                 mov     ebp, esp
.text:00420D23                 sub     esp, 94h
.text:00420D29                 mov     eax, dword_429DA8
.text:00420D2E                 xor     eax, ebp
.text:00420D30                 mov     [ebp+var_C], eax
.text:00420D33                 mov     [ebp+var_94], ecx
.text:00420D39                 mov     ax, ds:word_425A30
.text:00420D3F                 mov     [ebp+Text], ax
.text:00420D46                 push    7Eh             ; Size
.text:00420D48                 push    0               ; Val
.text:00420D4A                 lea     ecx, [ebp+Dst]
.text:00420D50                 push    ecx             ; Dst
.text:00420D51                 call    _memset
.text:00420D56                 add     esp, 0Ch
.text:00420D59                 fld     ds:dbl_425DC0
.text:00420D5F                 fstp    [ebp+var_8]
.text:00420D62                 fld     [ebp+var_8]
.text:00420D65                 fadd    st, st
.text:00420D67                 fstp    [ebp+var_8]
.text:00420D6A                 sub     esp, 8
.text:00420D6D                 fld     [ebp+var_8]
.text:00420D70                 fstp    [esp+9Ch+var_9C]
.text:00420D73                 push    offset aPi2F    ; "PI * 2 = %f"
.text:00420D78                 push    40h             ; Count
.text:00420D7A                 lea     edx, [ebp+Text]
.text:00420D80                 push    edx             ; Dest
.text:00420D81                [COLOR="Red"] call    __snwprintf    ; 当调用此函数时错误发生[/COLOR]
.text:00420D86                 add     esp, 14h
.text:00420D89                 push    40h             ; uType
.text:00420D8B                 push    offset Caption  ; "TestFloag"
.text:00420D90                 lea     eax, [ebp+Text]
.text:00420D96                 push    eax             ; lpText
.text:00420D97                 mov     ecx, [ebp+var_94]
.text:00420D9D                 call    sub_405C75
.text:00420DA2                 mov     ecx, [ebp+var_C]
.text:00420DA5                 xor     ecx, ebp
.text:00420DA7                 call    sub_40ECBD
.text:00420DAC                 mov     esp, ebp
.text:00420DAE                 pop     ebp
.text:00420DAF                 retn
.text:00420DAF sub_420D20      endp


原因不知道说的对不对  试着说下看看
正常情况下,处理浮点数需要相关的浮点函数支持,当没有用到浮点数包括浮点数没有被初始化时,编译器将不链接相关浮点处理的库
而此代码中直接以内嵌汇编方式处理来这个浮点数,导致编译器没有检测到有初始化的浮点数,在链接时也就没有链接处理浮点数的一些相关库,导致发生r6002 :floating point support not loaded这个错误
  __asm
  {
    fld     ds:dbl_425DC0
    fstp    [ebp+var_8]
    fld     [ebp+var_8]
    fadd    st, st
    fstp    [ebp+var_8]
    fld     [ebp+var_8]
    fstp    [esp+9Ch+var_9C]
  }


修正方法:
在输入表添加个_snwprintf(msvcrt.dll中),将
.text:00420D81                call    __snwprintf    ; 当调用此函数时错误发生
改为
00420D81      E8 3C000000   call    [420dc2]  ;<jmp.&msvcrt._snwprintf>

00420DC2    - FF25 18B04300 jmp     dword ptr [<&msvcrt._snwprintf>] ;  msvcrt._snwprintf

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

上传的附件:
收藏
免费 0
支持
分享
最新回复 (1)
雪    币: 264
活跃值: (30)
能力值: ( LV12,RANK:250 )
在线值:
发帖
回帖
粉丝
2
请重新考虑!!!
2008-10-9 12:56
0
游客
登录 | 注册 方可回帖
返回
//