<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[Серый форум &mdash; WSH: обфускация и Microsoft Script Encoder]]></title>
		<link>https://forum.script-coding.com/viewtopic.php?id=2774</link>
		<atom:link href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=2774&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «WSH: обфускация и Microsoft Script Encoder».]]></description>
		<lastBuildDate>Fri, 02 Sep 2011 20:59:53 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: WSH: обфускация и Microsoft Script Encoder]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=51109#p51109</link>
			<description><![CDATA[<p>Не вижу смысла в SCRENC.EXE, ещё и маркеры с ключями расставлять...Не труЪ как-то.</p><br /><p>Разрешите представить - <strong>Обфускатор WSH</strong> (на основе WSH), или ласково SCRENC.VBS.</p><p><strong>&amp;#9679; Шифрует файл целиком</strong><br /><strong>&amp;#9679; Шифрует неопределяемые типы файлов движком VBEncode, независимо от расширения.</strong> Только текстовые файлы, но видимо что и с бинарными можно подружить.</p><p>На выходе получаете VBE/JSE/HT(A/M/ML) файл с аналогичным именем или суфикс-расширением &quot;enc.txt&quot;.</p><div class="codebox"><pre><code>
&#039;***********************************************
&#039;* Name:        Real Script for encrypt		*
&#039;* Language:   VBScript						*
&#039;* CommandLine: screnc.vbs script.ext		  *
&#039;* Description:  VBS/JS/HTML/HTA encryptor     *
&#039;* CopyLeft:     Аскет, spt 2011			   *
&#039;***********************************************

	Option Explicit
Dim FSO, ENC, file,ftype, code, deCode, sign, ext,newExt
IF WSCRIPT.ARGUMENTS.COUNT=0 THEN 
	msgbox &quot;Задай входной файл  [VBS]/JS/HTML&quot;,,&quot;Real Script for encrypt&quot;
	wscript.quit
 ELSE
	file = WSCRIPT.ARGUMENTS(0)
end if

sign = &quot;#@~^tgAAAA==@#@&amp;:dT4K6PrKMrl^P2+MkG[,tlk~2XwkMn[&quot;&quot;rPLP-4^.,[EA!zP	WA~6EVs~7+./bG	RE,[,mtM`8T#,[~m4DcqZ#PL~JDDERdmMkaY@$XCU9+aRM;J,[~Er~.$(	0GDsCDkG	~rI+mV,dmMk2Y,0G.,+x1.XaYP ~PDbl^P-+.dbWUJ@#@&amp;AzkAAA==^#~@&quot;

set FSO = CreateObject (&quot;Scripting.FileSystemObject&quot;)
ext = FSO.GetExtensionName(file)
code = FSO.OpenTextFile (file).ReadAll
file = FSO.GetParentFolderName(file) &amp; &quot;\&quot; &amp; FSO.GetBaseName (file)

SET enc = CreateObject (&quot;Scripting.Encoder&quot;)
ftype=&quot;&quot;
ftype=magic(ext)
deCode = enc.EncodeScriptFile ( &quot;.&quot; &amp; ext, code, 0,&quot;&quot; )

if (ext=&quot;vbs&quot;) AND (newext&lt;&gt;&quot;.enc.txt&quot;) Then
	deCode = mid(deCode,1,len(deCode)-1)
	FSO.OpenTextFile (file  &amp; newExt , 2, true).writeline ( sign &amp; decode )
elseif (ext=&quot;.js&quot;) Then
	deCode = mid(deCode,1,len(deCode)-1)
	FSO.OpenTextFile (file  &amp; newExt , 2, true).writeline ( decode )
 elseif (newext=&quot;.enc.txt&quot;) Then
	deCode = mid(deCode,1,len(deCode)-1)
	FSO.OpenTextFile (file  &amp; newExt , 2, true).writeline ( decode )
 else
	FSO.OpenTextFile (file  &amp; newExt , 2, true).writeline ( decode )
end if

function magic(byref ext)
	
	select case lcase(ext)
		case &quot;js&quot;
			newExt=&quot;.jse&quot;
			magic=&quot;JScript&quot;
		case &quot;vbs&quot;
			newExt=&quot;.vbe&quot;
			magic=&quot;VBScript&quot;
		case &quot;htm&quot;
			newExt=&quot;.HTML&quot;
		case &quot;html&quot;
			newExt=&quot;.HTM&quot;
		case &quot;hta&quot;
			ext=&quot;html&quot;
			newExt=&quot;.enc.HTA&quot;
		case else 
			ext=&quot;vbs&quot;
			newext=&quot;.enc.txt&quot;
			magic=&quot;VBScript&quot;
	end select
end function</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (Аскет)]]></author>
			<pubDate>Fri, 02 Sep 2011 20:59:53 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=51109#p51109</guid>
		</item>
		<item>
			<title><![CDATA[Re: WSH: обфускация и Microsoft Script Encoder]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=19407#p19407</link>
			<description><![CDATA[<p>Возможно и обратное раскодирование. Приведённый ниже скрипт получает в качестве параметра закодированный файл, и создаёт файл .txt с результатами расшифровки (скрипт найден на просторах Интернета, используйте на свой страх и риск):<br /></p><div class="codebox"><pre><code>Option Explicit
Dim oArgs, NomFichier
NomFichier = &quot;&quot;
Set oArgs = WScript.Arguments
Select Case oArgs.Count
Case 0
    NomFichier = &quot;&quot;
Case 1
    If Instr(oArgs(0), &quot;?&quot;)=0 Then
        NomFichier = oArgs(0)
    End If
Case Else
    WScript.Echo &quot;Слишком много параметров.&quot;
End Select
Set oArgs = Nothing
If NomFichier &lt;&gt; &quot;&quot; Then
    Dim fso
    Dim a
    Set fso = WScript.CreateObject(&quot;Scripting.FileSystemObject&quot;)
    If fso.FileExists(NomFichier) Then
        Dim fic,contenu
        Set fic = fso.OpenTextFile(NomFichier, 1)
        Contenu = fic.readAll
        fic.close
        Set fic = Nothing
        Const TagInit = &quot;#@~^&quot;
        Const TagFin = &quot;==^#~@&quot;
        Dim DebutCode, FinCode
        Do
            FinCode = 0
            DebutCode = Instr(Contenu, TagInit)
            If DebutCode &gt; 0 Then
                If (Instr(DebutCode, Contenu, &quot;==&quot;) - DebutCode) = 10 Then
                    FinCode = Instr(DebutCode , Contenu, TagFin)
                    If FinCode &gt; 0 Then
                        Contenu = Left(Contenu, DebutCode - 1) &amp; _
                        Decode(Mid(Contenu, DebutCode + 12, FinCode - DebutCode - 12 - 6)) &amp; _
                        Mid(Contenu, FinCode + 6)
                    End If
                End If
            End If
        Loop Until FinCode = 0
        Set a = fso.CreateTextFile(NomFichier &amp; &quot;.txt&quot;, 1)
        a.WriteLine Contenu
        a.Close
    Else
        WScript.Echo Nomfichier &amp; &quot; не найден.&quot;
    End If
    Set fso = Nothing
Else
    WScript.Echo &quot;Укажите имя файла.&quot;
    WScript.Echo &quot;Использование: &quot; &amp; wscript.fullname &amp; &quot; &quot; &amp; WScript.ScriptFullName &amp; &quot; &quot;
End If
&#039;========================================================================================
Function Decode(Chaine)
    Dim se, i, c, j, index, ChaineTemp
    Dim tDecode(127)
    Const Combinaison = &quot;1231232332321323132311233213233211323231311231321323112331123132&quot;

    Set se = WSCript.CreateObject(&quot;Scripting.Encoder&quot;)
    For i=9 to 127
        tDecode(i) = &quot;JLA&quot;
    Next
    For i=9 to 127
        ChaineTemp = Mid(se.EncodeScriptFile(&quot;.vbs&quot;, string(3,i), 0, &quot;&quot;), 13, 3)
        For j=1 to 3
            c = Asc(Mid(ChaineTemp,j,1))
            tDecode(c) = Left(tDecode(c), j-1) &amp; chr(i) &amp; Mid(tDecode(c), j+1)
        Next
    Next
    tDecode(42) = Left(tDecode(42), 1) &amp; &quot;)&quot; &amp; Right(tDecode(42), 1)
    Set se = Nothing
    Chaine = Replace(Replace(Chaine,&quot;@&amp;&quot;,chr(10)),&quot;@#&quot;,chr(13))
    Chaine = Replace(Replace(Chaine,&quot;@*&quot;,&quot;&gt;&quot;),&quot;@!&quot;,&quot;&lt;&quot;)
    Chaine = Replace(Chaine,&quot;@$&quot;,&quot;@&quot;)
    index = -1
    For i=1 to Len(Chaine)
        c=asc(Mid(Chaine,i,1))
        If c &lt; 128 Then index=index+1
        If (c=9) or ((c&gt;31) and (c&lt;128)) Then
            If (c&lt;&gt;60) and (c&lt;&gt;62) and (c&lt;&gt;64) Then
                Chaine = Left(Chaine,i-1) &amp; _
                         Mid(tDecode(c), Mid(Combinaison, (index mod 64)+1, 1), 1) &amp; _
                         Mid(Chaine, i+1)
            End If
        End If
    Next
    Decode = Chaine
End Function</code></pre></div><p>Ещё одна программа для обратного раскодирования скриптов — <a href="http://www.virtualconspiracy.com/content/scrdec/intro">Windows Script Decoder</a>, это инструмент командной строки (бесплатен). Работает чуть аккуратнее, чем вышеприведённый скрипт (не оставляет NULL в конце), и можно указать кодировку.</p>]]></description>
			<author><![CDATA[null@example.com (The gray Cardinal)]]></author>
			<pubDate>Thu, 12 Feb 2009 07:11:37 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=19407#p19407</guid>
		</item>
		<item>
			<title><![CDATA[Re: WSH: обфускация и Microsoft Script Encoder]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=19406#p19406</link>
			<description><![CDATA[<p>Файлы <strong>html</strong> и <strong>hta</strong> с помощью Script Encoder можно обработать примерно такой командой:<br /></p><div class="codebox"><pre><code>screnc /e html test.hta test1.hta</code></pre></div><p>Теги закодированных скриптов в HTML-коде будут выглядеть следующим образом:<br /></p><div class="codebox"><pre><code>&lt;SCRIPT LANGUAGE=&quot;VBScript.Encode&quot;&gt;
&lt;SCRIPT LANGUAGE=&quot;JScript.Encode&quot;&gt;</code></pre></div><p>Аналогично можно обработать и файлы сценариев <strong>wsf</strong>. Однако, такие файлы не должны содержать &quot;жёсткий&quot; XML, т.е. теги &lt;?xml?&gt; и &lt;[CDATA[…&gt;, иначе Script Encoder выдаст ошибку. В справке Script Encoder также заявлена обработка скриптлетов <strong>sct</strong> (т.е. <strong>wsc</strong>).</p><p>Можно кодировать скрипты и программно, с помощью объекта &quot;Scripting.Encoder&quot;. Объект имеет единственный метод:<br /></p><div class="codebox"><pre><code>Function EncodeScriptFile(ByVal szExt As String,
                          ByVal bstrStreamIn As String,
                          ByVal cFlags As Long,
                          ByVal bstrDefaultLang As String) As String</code></pre></div><p>Параметры:<br />&nbsp; &nbsp; * szExt — расширение файла, например &quot;.vbs&quot;, &quot;.js&quot;, &quot;.htm&quot;, &quot;.html&quot;;<br />&nbsp; &nbsp; * bstrStreamIn — текст скрипта для кодирования;<br />&nbsp; &nbsp; * cFlags — всегда 0;<br />&nbsp; &nbsp; * bstrDefaultLang — язык, например, &quot;VBScript&quot;, &quot;JScript&quot;.<br />Метод возвращает закодированный текст скрипта. Пример использования на VBScript:<br /></p><div class="codebox"><pre><code>Set objIScriptEncoder = WScript.CreateObject(&quot;Scripting.Encoder&quot;)
Set objFSO            = WScript.CreateObject(&quot;Scripting.FileSystemObject&quot;)
Set objTS             = objFSO.OpenTextFile(&quot;C:\Temp\script.hta&quot;)
strTempString         = objTS.ReadAll
objTS.Close
Set objTS             = objFSO.CreateTextFile(&quot;C:\Temp\scripte.hta&quot;, True)
objTS.Write objIScriptEncoder.EncodeScriptFile(&quot;.html&quot;, strTempString, 0, &quot;VBScript&quot;)
objTS.Close</code></pre></div><p>Благодарность за помощь при написании этого обзора — <strong>YMP</strong> и <strong>alexii</strong>.</p>]]></description>
			<author><![CDATA[null@example.com (The gray Cardinal)]]></author>
			<pubDate>Thu, 12 Feb 2009 07:09:42 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=19406#p19406</guid>
		</item>
		<item>
			<title><![CDATA[WSH: обфускация и Microsoft Script Encoder]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=19405#p19405</link>
			<description><![CDATA[<p>Обфускация (англ. obfuscate — затемнять) — это приведение исходного текста скрипта к виду, сохраняющему его функциональность, но затрудняющему анализ, понимание алгоритмов его работы и модификацию. Цели обфускации — это защита кода от слишком любопытных глаз и рук, и, возможно, небольшая оптимизация интерпретируемой программы: уменьшение её размера и ускорение работы. Обфускация может использоваться и для неблаговидных целей, таких, как обход спам-фильтров или скрытие авторства программ.</p><p><a href="http://www.microsoft.com/downloads/details.aspx?familyid=E7877F67-C447-4873-B1B0-21F0626A6329&amp;displaylang=en">Script Encoder</a> — это бесплатный простой инструмент командной строки, который даёт возможность закодировать скрипт Windows Script Host или ASP. Script Encoder будет работать в Windows 98/Me/NT4/2000/XP. Дистрибутив Script Encoder имеет размер менее 200 Кб.</p><p>Чтобы использовать Script Encoder, разработайте и отладьте свой сценарий обычным способом, а затем используйте эту утилиту, чтобы закодировать конечный сценарий. Script Encoder использует специальные маркеры в исходном коде скрипта, чтобы определить, где должно начаться кодирование. Маркер для VBScript выглядит так:<br /></p><div class="codebox"><pre><code>&#039;**Start Encode**</code></pre></div><p>Маркер для JScript выглядит так:<br /></p><div class="codebox"><pre><code>//**Start Encode**</code></pre></div><p>Если маркеры не используются, кодируется весь сценарий. Script Encoder используется в командной строке следующим образом:<br /></p><div class="codebox"><pre><code>screnc [опции] &lt;source&gt; &lt;destination&gt;</code></pre></div><p>Подробное описание опций командной строки вы найдёте в справочном файле в поставке. При обработке файлов .js и .vbs они должны превращаться в результате в файлы .jse и .vbe. Пример скрипта на VBScript:<br /></p><div class="codebox"><pre><code>Wscript.Echo(&quot;Привет, Script Encoder!&quot;)
&#039;**Start Encode**
Wscript.Echo(&quot;Привет ещё раз, Script Encoder!&quot;)</code></pre></div><p>После обработки командой наподобие <strong>screnc test.vbs test.vbe</strong> этот скрипт будет выглядеть примерно так (здесь приведён только пример внешнего вида, этот код не запустится):<br /></p><div class="codebox"><pre><code>Wscript.Echo(&quot;Привет, Script Encoder!&quot;)
&#039;**Start Encode**#@~^NwAAAA==@#@&amp;d1DbwYc214WvJПривет~ещёPразBPj^MkwD~2    mW9n.&quot;r#@#@&amp;XgsAAA==^#~@</code></pre></div><p>Полученный файл <strong>test.vbe</strong> будет таким же скриптом, как и <strong>test.vbs</strong> — его можно будет запустить как двойным щелчком в Проводнике, так и с помощью <strong>cscript.exe</strong> из командной строки.</p>]]></description>
			<author><![CDATA[null@example.com (The gray Cardinal)]]></author>
			<pubDate>Thu, 12 Feb 2009 07:04:14 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=19405#p19405</guid>
		</item>
	</channel>
</rss>
