飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 3194|回复: 7

[求助] OD如何定位CTime::GetCurrentTime()?

[复制链接]
  • TA的每日心情
    擦汗
    2016-2-28 18:22
  • 签到天数: 38 天

    [LV.5]常住居民I

    发表于 2015-1-27 11:06:44 | 显示全部楼层 |阅读模式
    本帖最后由 Armboy2010 于 2015-1-27 11:09 编辑

    我用MFC写了简单的demo


    代码如下:

    // 按钮单击事件
    void CTestBtnClickDlg::OnBnClickedBtnClick()
    {
        CTime curTime = CTime::GetCurrentTime();
        CString strTime = curTime.Format("%Y-%m-%d %H:%M:%S");
        SetDlgItemText(IDC_EDIT_MSG, strTime);
    }

    编译选项选择静态链接到MFC,编译Release版本,OD载入,
    设置断点SetDlgItemTextA,断下后反汇编代码如下:
    00A5220C  /$  8BFF          MOV EDI,EDI
    00A5220E  |.  55            PUSH EBP
    00A5220F  |.  8BEC          MOV EBP,ESP
    00A52211  |.  8379 68 00    CMP DWORD PTR DS:[ECX+68],0
    00A52215  |.  75 15         JNZ SHORT TestBtnC.00A5222C
    00A52217  |.  FF75 08       PUSH DWORD PTR SS:[EBP+8]                ; /ControlID
    00A5221A  |.  FF71 20       PUSH DWORD PTR DS:[ECX+20]               ; |hWnd
    00A5221D  |.  FF15 0468B600 CALL DWORD PTR DS:[<&USER32.GetDlgItem>] ; \GetDlgItem
    00A52223  |.  8B4D 0C       MOV ECX,DWORD PTR SS:[EBP+C]
    00A52226  |.  8901          MOV DWORD PTR DS:[ECX],EAX
    00A52228  |.  5D            POP EBP
    00A52229  |.  C2 0800       RETN 8
    00A5222C  |>  8B49 68       MOV ECX,DWORD PTR DS:[ECX+68]
    00A5222F  |.  8B01          MOV EAX,DWORD PTR DS:[ECX]
    00A52231  |.  5D            POP EBP
    00A52232  \.  FF60 70       JMP DWORD PTR DS:[EAX+70]
    00A52235      8BFF          MOV EDI,EDI
    00A52237  /.  55            PUSH EBP                                 ;  断在这里
    00A52238  |.  8BEC          MOV EBP,ESP
    00A5223A  |.  8379 68 00    CMP DWORD PTR DS:[ECX+68],0
    00A5223E  |.  75 13         JNZ SHORT TestBtnC.00A52253
    00A52240  |.  FF75 0C       PUSH DWORD PTR SS:[EBP+C]                ; /Text
    00A52243  |.  FF75 08       PUSH DWORD PTR SS:[EBP+8]                ; |ControlID
    00A52246  |.  FF71 20       PUSH DWORD PTR DS:[ECX+20]               ; |hWnd
    00A52249  |.  FF15 3466B600 CALL DWORD PTR DS:[<&USER32.SetDlgItemTe>; \SetDlgItemTextA
    00A5224F  |.  5D            POP EBP
    00A52250  |.  C2 0800       RETN 8
    00A52253  |>  8B49 68       MOV ECX,DWORD PTR DS:[ECX+68]
    00A52256  |.  8B01          MOV EAX,DWORD PTR DS:[ECX]
    00A52258  |.  5D            POP EBP
    00A52259  \.  FFA0 88000000 JMP DWORD PTR DS:[EAX+88]

    此时的栈内存如下:
    0044F368   00A41FDC  TestBtnC.00A41FDC
    0044F36C   000003E9
    0044F370   022C5A10  ASCII "2015-01-27 10:52:07"
    0044F374   74B9B92B
    0044F378   00000111
    0044F37C   00B8EDB0  TestBtnC.00B8EDB0
    0044F380   54C6FD57
    0044F384   00000000
    0044F388   022C5A10  ASCII "2015-01-27 10:52:07"
    0044F38C   0044F50C  指向下一个 SEH 记录的指针
    0044F390   00B63C08  SE处理程序
    0044F394   00000000
    0044F398  /0044F3A8
    0044F39C  |00A49117  返回到 TestBtnC.00A49117
    0044F3A0  |00B8EDB0  TestBtnC.00B8EDB0
    0044F3A4  |0044FA64

    通过栈内存,我在地址022C5A10处下了内存写入断点,继续跑程序点击按钮,程序断了几次,
    我跟了好久,就是找不到以下两行代码对应的反汇编代码:
    CTime curTime = CTime::GetCurrentTime();
    CString strTime = curTime.Format("%Y-%m-%d %H:%M:%S");

    知道的大神,忘能指点一二,感激不尽!该例子程序打包在附件中了。





    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有账号?加入我们

    x
    PYG19周年生日快乐!
  • TA的每日心情
    无聊
    2024-3-21 17:38
  • 签到天数: 521 天

    [LV.9]以坛为家II

    发表于 2015-1-27 14:12:35 | 显示全部楼层
    一,程序用的debug模式吧?
    二,如果你看不到,往往还需要pdb调度符号的,
    PYG19周年生日快乐!
  • TA的每日心情
    擦汗
    2016-2-28 18:22
  • 签到天数: 38 天

    [LV.5]常住居民I

     楼主| 发表于 2015-1-27 15:01:55 | 显示全部楼层
    wyqzm 发表于 2015-1-27 14:12
    一,程序用的debug模式吧?
    二,如果你看不到,往往还需要pdb调度符号的,

    1. 程序是Release版本的
    2. 如果是别人的程序,怎么可能拿到pdb文件?所有要彻底模拟!

    点评

    你这个应该不是Release版本的,因为我即使用VC10编译也不可能有这么大的exe。 如果你没有调试符号,或许只能去微软的网站下载相应的调试文件和库文件。  详情 回复 发表于 2015-1-27 17:23
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2015-1-27 16:43:14 | 显示全部楼层
    本帖最后由 goushibee 于 2015-1-27 16:45 编辑

    1.搜索字符串“%Y-%m-%d %H:%M:%S”
    2.看导入表中 SetDlgItemText
    3.api断点 和时间相关的都给下了4.还有N多方法

    你都找到SetDlgItemTextA位置了,向上返回一层就到了

    00401F9D  |.  50            push eax
    00401F9E  |.  8D45 F4       lea eax,dword ptr ss:[ebp-0xC]
    00401FA1  |.  64:A3 0000000>mov dword ptr fs:[0],eax
    00401FA7  |.  8BF9          mov edi,ecx
    00401FA9  |.  6A 00         push 0x0
    00401FAB  |.  E8 2AF00F00   call TestBtnC.00500FDA                   ;  CTime curTime = CTime::GetCurrentTime();
    00401FB0  |.  8945 E8       mov dword ptr ss:[ebp-0x18],eax
    00401FB3  |.  83C4 04       add esp,0x4
    00401FB6  |.  8D45 E8       lea eax,dword ptr ss:[ebp-0x18]
    00401FB9  |.  50            push eax
    00401FBA  |.  8D75 F0       lea esi,dword ptr ss:[ebp-0x10]
    00401FBD  |.  8955 EC       mov dword ptr ss:[ebp-0x14],edx
    00401FC0  |.  E8 9B000000   call TestBtnC.00402060                   ;  CString strTime = curTime.Format("%Y-%m-%d %H:%M:%S");
    00401FC5  |.  C745 FC 00000>mov dword ptr ss:[ebp-0x4],0x0
    00401FCC  |.  8B4D F0       mov ecx,dword ptr ss:[ebp-0x10]
    00401FCF  |.  51            push ecx
    00401FD0  |.  68 E9030000   push 0x3E9
    00401FD5  |.  8BCF          mov ecx,edi
    00401FD7  |.  E8 59020100   call TestBtnC.00412235                   ;  SetDlgItemText(IDC_EDIT_MSG, strTime);


    PYG19周年生日快乐!
  • TA的每日心情
    无聊
    2024-3-21 17:38
  • 签到天数: 521 天

    [LV.9]以坛为家II

    发表于 2015-1-27 17:23:23 | 显示全部楼层
    Armboy2010 发表于 2015-1-27 15:01
    1. 程序是Release版本的
    2. 如果是别人的程序,怎么可能拿到pdb文件?所有要彻底模拟!

    你这个应该不是Release版本的,因为我即使用VC10编译也不可能有这么大的exe。

    如果你没有调试符号,或许只能去微软的网站下载相应的调试文件和库文件。

    PYG19周年生日快乐!
  • TA的每日心情
    奋斗
    2024-4-13 20:08
  • 签到天数: 2046 天

    [LV.Master]伴坛终老

    发表于 2015-1-27 18:39:04 | 显示全部楼层
    哈哈。谢谢分享呀。。。。学习了呀。
    PYG19周年生日快乐!
  • TA的每日心情
    擦汗
    2016-2-28 18:22
  • 签到天数: 38 天

    [LV.5]常住居民I

     楼主| 发表于 2015-1-27 19:00:58 | 显示全部楼层
    goushibee 发表于 2015-1-27 16:43
    1.搜索字符串“%Y-%m-%d %H:%M:%S”
    2.看导入表中 SetDlgItemText
    3.api断点 和时间相关的都给下了4.还有 ...

    太感谢你了,初学逆向,基础还不是很好!{:soso_e181:}
    PYG19周年生日快乐!
  • TA的每日心情
    奋斗
    2020-3-7 22:57
  • 签到天数: 170 天

    [LV.7]常住居民III

    发表于 2015-1-29 11:20:24 | 显示全部楼层
    谢谢分享呀。。。。学习了呀。
    PYG19周年生日快乐!
    您需要登录后才可以回帖 登录 | 加入我们

    本版积分规则

    快速回复 返回顶部 返回列表