-
-
[旧帖] [邀请码已发][原创]mfc成员函数使ollydbg断点无效 0.00雪花
-
发表于: 2009-9-17 21:18 1241
-
刚来看雪不久,对破解一点也不了解。
买了本看雪的《加密与解密》,进行学习。
在看到第二章学习使用ollydbg时,发现自己用mfc编的traceme程序无法被ollydbg捕捉到getdlgitemtext函数,查看程序源码,确实是用了getdlgitemtext函数,只是我用的是cwnd的成员函数,难道是这个原因?应该不会啊,成员函数肯定会去调用的getdlgitemtext这个api函数啊,效果应该一样啊,为了验证,我把cwnd的成员函数替换为全局的api函数,结果ollydbg能捕捉到这个函数了,这就奇了,难道是cwnd的成员函数没有调用全局的getdlgitemtext?
转到wincore.cpp查看cwnd成员函数的定义,发现了这样的定义代码
int CWnd::GetDlgItemText(int nID, CString& rString) const
{
ASSERT(::IsWindow(m_hWnd));
rString = _T(""); // empty without deallocating
#ifndef _AFX_NO_OCC_SUPPORT
if (m_pCtrlCont == NULL)
{
#endif
HWND hWnd = ::GetDlgItem(m_hWnd, nID);
if (hWnd != NULL)
{
int nLen = ::GetWindowTextLength(hWnd);
::GetWindowText(hWnd, rString.GetBufferSetLength(nLen), nLen+1);
rString.ReleaseBuffer();
}
#ifndef _AFX_NO_OCC_SUPPORT
}
else
{
CWnd* pWnd = GetDlgItem(nID);
if (pWnd != NULL)
pWnd->GetWindowText(rString);
}
#endif
return (int)rString.GetLength();
}
很明显了吧,确实没有调用getdlgitemtext这个api函数,而是用了GetDlgItem+GetWindowText这两个函数(注:cwnd::getdlgitemtext有两个重载函数,一个即上面所列的函数,另一个调用了getdlgitemtext这个api函数,而我做程序时用了第一个)
希望我的帖子能对和我一样的初学者起到一个借鉴作用
买了本看雪的《加密与解密》,进行学习。
在看到第二章学习使用ollydbg时,发现自己用mfc编的traceme程序无法被ollydbg捕捉到getdlgitemtext函数,查看程序源码,确实是用了getdlgitemtext函数,只是我用的是cwnd的成员函数,难道是这个原因?应该不会啊,成员函数肯定会去调用的getdlgitemtext这个api函数啊,效果应该一样啊,为了验证,我把cwnd的成员函数替换为全局的api函数,结果ollydbg能捕捉到这个函数了,这就奇了,难道是cwnd的成员函数没有调用全局的getdlgitemtext?
转到wincore.cpp查看cwnd成员函数的定义,发现了这样的定义代码
int CWnd::GetDlgItemText(int nID, CString& rString) const
{
ASSERT(::IsWindow(m_hWnd));
rString = _T(""); // empty without deallocating
#ifndef _AFX_NO_OCC_SUPPORT
if (m_pCtrlCont == NULL)
{
#endif
HWND hWnd = ::GetDlgItem(m_hWnd, nID);
if (hWnd != NULL)
{
int nLen = ::GetWindowTextLength(hWnd);
::GetWindowText(hWnd, rString.GetBufferSetLength(nLen), nLen+1);
rString.ReleaseBuffer();
}
#ifndef _AFX_NO_OCC_SUPPORT
}
else
{
CWnd* pWnd = GetDlgItem(nID);
if (pWnd != NULL)
pWnd->GetWindowText(rString);
}
#endif
return (int)rString.GetLength();
}
很明显了吧,确实没有调用getdlgitemtext这个api函数,而是用了GetDlgItem+GetWindowText这两个函数(注:cwnd::getdlgitemtext有两个重载函数,一个即上面所列的函数,另一个调用了getdlgitemtext这个api函数,而我做程序时用了第一个)
希望我的帖子能对和我一样的初学者起到一个借鉴作用
赞赏
他的文章
- drm视频加密反推 3424
- [分享]写的一个字符窜宏,给初学者使用 2855
- 如何在程序代码中指定程序名 2734
- [求助]高手帮个忙,很简单 2606
看原图
赞赏
雪币:
留言: