首页
社区
课程
招聘
[讨论]谁能断下VC的rand()函数?
发表于: 2013-11-30 13:40 7081

[讨论]谁能断下VC的rand()函数?

2013-11-30 13:40
7081
我用VC6写了个小程序,主要代码和程序截图如下:

//定时器响应函数
void CRandDlg::OnTimer(UINT nIDEvent) 
{
     CDialog::OnTimer(nIDEvent);
    SetDlgItemInt(IDC_TXB,rand());//显示产生的随机数
}

----------------------------------------------------------------------------------------------------------

我使用的是win7系统,该程序的debug版本,bp   rand可以断下rand()函数
而bp  msvcrt.rand断不下rand()函数

-----------------------------------------------------------------------------------------------------
该程序的release版本,bp   rand和bp  msvcrt.rand都断不下 rand()函数
这是咋回事呢?

程序很小,release版本我上传上来了。

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

上传的附件:
收藏
免费 0
支持
分享
最新回复 (6)
雪    币: 159
活跃值: (16)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
vc6,弱爆了。哈哈!
2013-11-30 14:24
0
雪    币: 1462
活跃值: (374)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
加载符号表。然后bp Rand!rand
2013-11-30 14:25
0
雪    币: 7885
活跃值: (2285)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
1.哪来的符号表呢?

2.如何加载符号表呢?
2013-11-30 14:38
0
雪    币: 4390
活跃值: (4378)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
因为你是静态连接的.

rand 静态后此函数在.code段了 不再调用原始的API

00409393    E8 0B2D0000     call Rand.0040C0A3
00409398    8B48 14         mov ecx, dword ptr ds:[eax+0x14]
0040939B    69C9 FD430300   imul ecx, ecx, 0x343FD
004093A1    81C1 C39E2600   add ecx, 0x269EC3
004093A7    8948 14         mov dword ptr ds:[eax+0x14], ecx
004093AA    8BC1            mov eax, ecx
004093AC    C1E8 10         shr eax, 0x10
004093AF    25 FF7F0000     and eax, 0x7FFF
004093B4    C3              retn

原始函数是
77C071D3 >  E8 4D2D0000     call msvcrt.77C09F25
77C071D8    8B48 14         mov ecx, dword ptr ds:[eax+0x14]
77C071DB    69C9 FD430300   imul ecx, ecx, 0x343FD
77C071E1    81C1 C39E2600   add ecx, 0x269EC3
77C071E7    8948 14         mov dword ptr ds:[eax+0x14], ecx
77C071EA    8BC1            mov eax, ecx
77C071EC    C1E8 10         shr eax, 0x10
77C071EF    25 FF7F0000     and eax, 0x7FFF
77C071F4    C3              retn
2013-11-30 16:03
0
雪    币: 7885
活跃值: (2285)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
[QUOTE=Mxixihaha;1243538]因为你是静态连接的.

rand 静态后此函数在.code段了 不再调用原始的API

00409393    E8 0B2D0000     call Rand.0040C0A3
00409398    8B48 14         mov ecx, dword ptr ds:[eax+0x14...[/QUOTE]

嗯,算是明白了,多谢你的回答。

这样的话,如何才能下断rand()呢?难道断不了吗?
2013-11-30 18:42
0
雪    币: 4390
活跃值: (4378)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
直接搜索特征
8B 48 14 69 C9 FD 43 03 00 81 C1 C3 9E 26 00 89 48 14 8B C1 C1 E8 10 25 FF 7F 00 00 C3
2013-12-1 09:37
0
游客
登录 | 注册 方可回帖
返回
//