首页
社区
课程
招聘
[原创]第一阶段<>第三题答题结果
发表于: 2008-10-10 02:09 2834

[原创]第一阶段<>第三题答题结果

2008-10-10 02:09
2834
1、通过ollice+GODUP插件,结合IDA分析找到Crash按钮单击后OnBnClickedBtnCrash处理过程,即420d20处。
2、在420D20处下F2断点,运行后通过GODUP插件,可以.map文件的信息导入到Ollyice的注释里,方便查看。
/*420D20*/  push    ebp  //?OnBnClickedBtnCrash@CTestFloatDlg@@QAEXXZ 00420d20 f   TestFloatDlg.obj
/*420D21*/  mov     ebp, esp
/*420D23*/  sub     esp, 94
/*420D29*/  mov     eax, dword ptr [429DA8]
/*420D2E*/  xor     eax, ebp
/*420D30*/  mov     dword ptr [ebp-C], eax
/*420D33*/  mov     dword ptr [ebp-94], ecx
/*420D39*/  mov     ax, word ptr [425A30]
/*420D3F*/  mov     word ptr [ebp-90], ax
/*420D46*/  push    7E
/*420D48*/  push    0
/*420D4A*/  lea     ecx, dword ptr [ebp-8E]
/*420D50*/  push    ecx
/*420D51*/  call    0040FD40
/*420D56*/  add     esp, 0C
/*420D59*/  fld     qword ptr [425DC0]
/*420D5F*/  fstp    qword ptr [ebp-8]
/*420D62*/  fld     qword ptr [ebp-8]
/*420D65*/  fadd    st, st
/*420D67*/  fstp    qword ptr [ebp-8]
/*420D6A*/  sub     esp, 8
/*420D6D*/  fld     qword ptr [ebp-8]
/*420D70*/  fstp    qword ptr [esp]
/*420D73*/  push    00425A34  //p
/*420D78*/  push    40
/*420D7A*/  lea     edx, dword ptr [ebp-90]
/*420D80*/  push    edx
/*420D81*/  call    0040EE02
/*420D86*/  add     esp, 14
/*420D89*/  push    40
/*420D8B*/  push    00425A4C  //t
/*420D90*/  lea     eax, dword ptr [ebp-90]
/*420D96*/  push    eax
/*420D97*/  mov     ecx, dword ptr [ebp-94]
/*420D9D*/  call    00405C75
/*420DA2*/  mov     ecx, dword ptr [ebp-C]
/*420DA5*/  xor     ecx, ebp
/*420DA7*/  call    0040ECBD
/*420DAC*/  mov     esp, ebp
/*420DAE*/  pop     ebp
/*420DAF*/  retn

3、在420D81处,函数在浮点计算过后,调用了处理过程,来将浮点计算结果输出。
4、在40EE02处,可以看到函数__snwprintf
/*40EE02*/  push    ebp  //__snwprintf                0040ee02 f   libcmt:snwprint.obj
/*40EE03*/  mov     ebp, esp
/*40EE05*/  sub     esp, 20
/*40EE08*/  push    ebx
/*40EE09*/  xor     ebx, ebx
/*40EE0B*/  cmp     dword ptr [ebp+10], ebx
/*40EE0E*/  jnz     short 0040EE30
/*40EE10*/  call    0040FCF2
......
5、在413871处,函数主要完成输出任务,在函数体内通过判断输出格式字符,输出相应的格式串
/*413871*/  push    ebp  //__woutput_l                00413871 f   libcmt:woutput.obj
/*413872*/  lea     ebp, dword ptr [esp-3F4]
/*413879*/  sub     esp, 474
/*41387F*/  mov     eax, dword ptr [429DA8]
/*413884*/  xor     eax, ebp
/*413886*/  mov     dword ptr [ebp+3F0], eax
/*41388C*/  mov     eax, dword ptr [ebp+3FC]
......
/*413DFD*/  lea     eax, dword ptr [ebp-78]
/*413E00*/  push    esi
/*413E01*/  push    eax
/*413E02*/  push    dword ptr [42A0C8]
/*413E08*/  call    00412D4C
/*413E0D*/  pop     ecx
/*413E0E*/  call    eax                        //TestFloa.0041AE1F,错误处理及提示函数
/*413E10*/  mov     ebx, dword ptr [ebp-14]
/*413E13*/  add     esp, 1C
/*413E16*/  and     ebx, 80
/*413E1C*/  je      short 00413E39
/*413E1E*/  cmp     dword ptr [ebp-18], 0
/*413E22*/  jnz     short 00413E39
/*413E24*/  lea     eax, dword ptr [ebp-64]
/*413E27*/  push    eax
/*413E28*/  push    esi
/*413E29*/  push    dword ptr [42A0D4]
/*413E2F*/  call    00412D4C
......

5、通过分析原因为:由于需要浮点输出,但由于前面没有定义浮点变量,导致编译器没有链接浮点库,输出时引发R6002错误。

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (1)
雪    币: 264
活跃值: (30)
能力值: ( LV12,RANK:250 )
在线值:
发帖
回帖
粉丝
2
请再认真考虑下!!
2008-10-14 14:53
0
游客
登录 | 注册 方可回帖
返回
//