'用ServerXMLHTTP从ip138获取IP地址
Dim WinHttpReq
Set WinHttpReq = CreateObject("Msxml2.ServerXMLHTTP")
WinHttpReq.Open "GET", "
http://www.ip138.com/ips1388.asp"
WinHttpReq.Send
'正则表达式解析出外网IP
Dim MyRegExp
Set MyRegExp = CreateObject("VBScript.RegExp")
MyRegExp.Pattern = "((2[0-4]\d|25[0-5]|[01]?\d\d?)\.){3}(2[0-4]\d|25[0-5]|[01]?\d\d?)"
MyRegExp.IgnoreCase = True
MyRegExp.Global = True
Dim Matches
Set Matches = MyRegExp.Execute(WinHttpReq.ResponseText)
MsgBox Matches.Item(0).Value
posted @
2010-11-05 21:16 张志松 阅读(2177) |
评论 (1) |
编辑 收藏
BOOL IsCtrlPressed()
{
return ((GetKeyState(VK_CONTROL) & (1<<(sizeof(SHORT)*8-1))) != 0);
}
BOOL IsAltPressed()
{
return ((GetKeyState(VK_MENU) & (1<<(sizeof(SHORT)*8-1))) != 0);
}
BOOL IsShiftPressed()
{
return ((GetKeyState(VK_SHIFT) & (1<<(sizeof(SHORT)*8-1))) != 0);
}
posted @
2010-10-18 10:53 张志松 阅读(2406) |
评论 (3) |
编辑 收藏
首先要导入jmail.dll
#import "jmail.dll"
还要初始化COM套间
CoInitialize(NULL);
调用代码如下
typedef HRESULT (__stdcall* pfnDllGetClassObject)(REFCLSID, REFIID, void**);
HINSTANCE hDllInst = LoadLibrary(_T("jmail.dll"));
pfnDllGetClassObject fnDllGetClassObject = (pfnDllGetClassObject)GetProcAddress(hDllInst, "DllGetClassObject");
if (fnDllGetClassObject != NULL)
{
IClassFactory* lpClassFactory = NULL;
HRESULT hr = (fnDllGetClassObject)(__uuidof(jmail::Message), IID_IClassFactory, (void**)&lpClassFactory);
if (SUCCEEDED(hr) && (lpClassFactory != NULL))
{
IUnknown* lpUnknown = NULL;
hr = lpClassFactory->CreateInstance(NULL, __uuidof(jmail::IMessage), (void**)&lpUnknown);
if (SUCCEEDED(hr) && (lpUnknown != NULL))
{
jmail::IMessagePtr MyMessage(lpUnknown);
//不抛出错误
MyMessage->PutSilent(VARIANT_TRUE);
MyMessage->PutISOEncodeHeaders(VARIANT_TRUE);
//字符集,缺省为"US-ASCII"
MyMessage->PutCharset(_T("GB2312"));
//发件人姓名
MyMessage->PutFromName(_T("test"));
//发件人邮箱
MyMessage->PutFrom(_T("***@***.com"));
//发件人邮件用户名
MyMessage->PutMailServerUserName(_T("***"));
//发件人邮件密码
MyMessage->PutMailServerPassWord(_T("***"));
//设置邮件标题
MyMessage->PutSubject(_T("邮件标题"));
//邮件内容
MyMessage->PutBody(_T("邮件内容"));
//发送对象
MyMessage->AddRecipient(_T("***@***.com"), _T(""), _T(""));
//Jmail发送的方法
MyMessage->Send(_T("smtp.***.com"), VARIANT_FALSE);
MyMessage->Close();
MyMessage.Release();
}
lpClassFactory->Release();
}
}
FreeLibrary(hDllInst);
posted @
2010-10-09 13:44 张志松 阅读(3260) |
评论 (3) |
编辑 收藏
C:\WINDOWS\system32\drivers\swmidi.sys 被篡改了,替换成原来的文件重启就可以。
解决办法参考:http://hi.baidu.com/fuxudong/blog/item/8e363cf4fe85c162ddc474ee.html
关于netbios.sys 被检测为危险程序.netbios.sys无法删除
1 某个流氓软件篡改了系统文件netbios.sys
2 这个netbios.sys hook了IoCreateFile函数吧导致不能正常删除
3 使用antirootkit 工具 unhook netbios.sys的挂钩,删除以后使用正常的netbios.sys替换即可
变种1 采用的是插apc的方式注入explorer.exe
变种2 病毒原理分析,感谢楼下的“猪”同学(目前无法删除的那个)
1. 调用PsSetCreateProcessNotifyRoutine 挂一个进程回调.
2. 过滤函数中判断若子进程iexplore.exe的父进程, 只关心以下3个进程名(已加密):
explorer.exe
svchost.exe
lsass.exe
若满足以上条件则进入步骤3,否则放行之
3. 硬编码通过 PID->EPROCESS->PEB->ProcessParameters ->CommandLine 得到命令行内容
4. 解密病毒网址,解密后内容为:http://www.ie7.com.cn
5. 修改命令行内容为:"C:\Program Files\Internet Explorer\IEXPLORE.EXE" http://www.ie7.com.cn"
posted @
2010-08-28 13:04 张志松 阅读(482) |
评论 (0) |
编辑 收藏
用Dependency Walker 打开系统目录下的ADVAPI32.DLL,可以发现ADVAPI32.DLL导出了MD5的三个函数:MD5Init,MD5Update,MD5Final。如下图所示:
这个三个函数的原型如下:
void WINAPI MD5Init(MD5_CTX* lpCtx);
void WINAPI MD5Update(MD5_CTX* lpCtx, const void * lpBuf, unsigned int nLen);
void WINAPI MD5Final(MD5_CTX* lpCtx);
其中MD5_CTX结构体为:
struct MD5_CTX
{
ULONG num[2]; /* number of _bits_ handled mod 2^64 */
ULONG buf[4]; /* scratch buffer */
BYTE input[64]; /* input buffer */
BYTE digest[16]; /* actual digest after MD5Final call */
};
现在我们用这个三个函数来计算字符串的MD5:
CString CalcStringMD5(CString strSrc)
{
MD5_CTX ctx = {0};
MD5Init(&ctx);
MD5Update(&ctx, strSrc.GetBuffer(), strSrc.GetLength());
MD5Final(&ctx);
strSrc.ReleaseBuffer();
TCHAR szTmp[33] = {0};
for (UINT i = 0; i < 16; i++)
{
wsprintf(szTmp + i * 2, _T("%02x"), ctx.digest[i]);
}
CString strMD5 = szTmp;
return strMD5;
}
该函数只支持多字节编码,UNICODE编码请自行转换,编译需要MD5.lib链接库。以上代码在VS2003+XP下测试成功。
posted @
2010-07-25 16:01 张志松 阅读(1591) |
评论 (0) |
编辑 收藏
template <class R, class P1, class P2>
class IDelegate
{
public:
virtual R Invoke(P1, P2) = 0;
};
template <class T, class R, class P1, class P2>
class CDelegate : public IDelegate<R, P1, P2>
{
protected:
typedef R (T::*pfnHandle)(P1, P2);
const pfnHandle m_pfn;
T* const m_pThis;
public:
CDelegate(T* const pThis, const pfnHandle pfn)
:m_pThis(pThis), m_pfn(pfn)
{
if (m_pThis == NULL || m_pfn == NULL)
{
throw;
}
}
virtual R Invoke(P1 p1, P2 p2)
{
return (m_pThis->*m_pfn)(p1, p2);
}
};
class CDelegateSource
{
public:
CDelegateSource()
: m_lpCallBack(NULL)
{
}
void SetCallBack(IDelegate<bool, int, int>* newVal)
{
m_lpCallBack = newVal;
}
void DoSomething()
{
for (int i = 0; i < 10; i++)
{
if (m_lpCallBack != NULL)
{
m_lpCallBack->Invoke(i, i * i);
}
}
}
private:
IDelegate<bool, int, int>* m_lpCallBack;
};
class CDelegateTester
{
private:
bool OnCallBack(int nParam1, int nParam2)
{
printf("OnCallBack -> nParam1:%d, nParam2:%d\r\n", nParam1, nParam2);
return true;
}
CDelegate<CDelegateTester, bool, int, int> m_OnCallBack;
public:
CDelegateTester()
: m_OnCallBack(this, OnCallBack)
{
}
void Execute()
{
CDelegateSource src;
src.SetCallBack(&m_OnCallBack);
src.DoSomething();
}
};
void main()
{
CDelegateTester Tester;
Tester.Execute();
getchar();
}
posted @
2010-07-25 15:57 张志松 阅读(834) |
评论 (0) |
编辑 收藏
假设我们要把IE的首页改http://www.dodonew.com/。
1、最简单的办法。
直接修改HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main下面Start Page的值为http://www.dodonew.com/。
2、比较隐蔽的办法,也是流氓软件经常使用的办法之一。
修改HKEY_CLASSES_ROOT\CLSID\{871C5380-42A0-1069-A2EA-08002B30309D}\shell\OpenHomePage\Command
的默认值为 "C:\Program Files\Internet Explorer\iexplore.exe" http://www.dodonew.com/。
3、修改桌面快捷方式。
隐藏桌面(快速启动栏)默认的IE快捷,创建自己的IE快捷方式。
把HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\HideDesktopIcons\NewStartPanel(或者ClassicStartMenu,取决于是不是选择经典的开始菜单)下面{871C5380-42A0-1069-A2EA-08002B30309D}的值改为1,然后刷新桌面即可隐藏默认的IE快捷方式。
创建桌面快捷方式有两种办法:
第一种办法就是直接创建快捷方式文件,并把目标指向"C:\Program Files\Internet Explorer\iexplore.exe" http://www.dodonew.com/。
第二种办法是创建类似我的电脑的快捷方式。
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\CLSID\{16AEFBE8-563F-0657-819C-A93578895D87}]
"InfoTip"="哈哈!我的IE快捷方式!"
"LocalizedString"="Internet Explorer"
[HKEY_CLASSES_ROOT\CLSID\{16AEFBE8-563F-0657-819C-A93578895D87}\DefaultIcon]
@="C:\\Program Files\\Internet Explorer\\iexplore.exe"
[HKEY_CLASSES_ROOT\CLSID\{16AEFBE8-563F-0657-819C-A93578895D87}\Shell\Open]
@="打开主页(&H)"
[HKEY_CLASSES_ROOT\CLSID\{16AEFBE8-563F-0657-819C-A93578895D87}\Shell\Open\Command]
@="\"C:\\Program Files\\Internet Explorer\\iexplore.exe\" http://www.dodonew.com/"
[HKEY_CLASSES_ROOT\CLSID\{16AEFBE8-563F-0657-819C-A93578895D87}\Shell\Prop]
@="属性(&R)"
[HKEY_CLASSES_ROOT\CLSID\{16AEFBE8-563F-0657-819C-A93578895D87}\Shell\Prop\Command]
@="Rundll32.exe Shell32.dll,Control_RunDLL Inetcpl.cpl"
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Desktop\NameSpace\{16AEFBE8-563F-0657-819C-A93578895D87}]
@="Internet Exploer"
posted @
2010-07-18 16:32 张志松 阅读(605) |
评论 (0) |
编辑 收藏
有时候我们的需要MFC对话框程序一开始就隐藏窗口,在后台运行。
1、修改对话框资源的Visible属性的值为False.
2、修改CXXXApp::InitInstance()中的代码。
CXXXDlg dlg;
m_pMainWnd = &dlg;
INT_PTR nResponse = dlg.DoModal();
if (nResponse == IDOK)
{
}
else if (nResponse == IDCANCEL)
{
}
return FALSE;
把上面的代码改为:
CXXXDlg* pDlg = new CXXXDlg;
pDlg->Create(CXXXDlg::IDD);
pDlg->ShowWindow(SW_HIDE);
m_pMainWnd = pDlg;
return TRUE;
3、为了不让程序运行时抢焦点,CXXXDlg::OnInitDialog() 应该返回FALSE;
4、在 CXXXDlg::OnNcDestroy() 中加入 delete this;
posted @
2010-07-10 18:43 张志松 阅读(599) |
评论 (0) |
编辑 收藏