对于某些特定的函数,想要对其防止下软断,不毕那么大动干戈地操作输入表,循环啊循环!
用函数指针直接操作,效果一模一样,而且更简单直观:
下面是对GetDlgItemText防软断的具体代码,当然大家可以扩展了,像什么GetWindowText
SendMessage ExitProcess等等,一样的原理!
//将以下代码片段放在某个隐蔽线程中检测,效果更好,哈哈,大家自由发挥!
void CTestDlg::OnOK()
{
// TODO: Add extra validation here
typedef UINT (__stdcall * pGetDlgItemText)(HWND, INT, LPTSTR, INT); //函数指针申明
PBYTE pByte = (PBYTE)(pGetDlgItemText)::GetDlgItemText;
for (int i = 0; i < 5; i ++){ //检查前五字节
if (0 == (*pByte++^0xcc) ){
//这里只是简单的异或处理,大家仁者见仁,智者见智咯!!!
MessageBox("Find debuger!");
}
}
CDialog::OnOK();
}
效果图:
- 标 题:简单对特定函数防软断法,高手飘过,嘿嘿
- 作 者:不问年少
- 时 间:2010-01-21 20:45:33
- 链 接:http://bbs.pediy.com/showthread.php?t=105660