<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Серый форум &mdash; AHK: Разрабатываем собственный обфускатор и пр. для защиты]]></title>
	<link rel="self" href="http://forum.script-coding.com/extern.php?action=feed&amp;tid=10659&amp;type=atom" />
	<updated>2015-11-15T17:09:43Z</updated>
	<generator>PunBB</generator>
	<id>http://forum.script-coding.com/viewtopic.php?id=10659</id>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Разрабатываем собственный обфускатор и пр. для защиты]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=99059#p99059" />
			<content type="html"><![CDATA[<p><strong>OFF:</strong><br />Вообще довольно неплохая функция для авто-изменения размеров контролов для gui.<br /></p><div class="codebox"><pre><code>    Gui, +Resize +OwnDialogs
    Gui, Add, Edit, r10 w300 vtxtDialog ReadOnly hwndhtxtDialog
    Gui, Add, Edit, xm w250 vtxtInput hwndhtxtInput ReadOnly Limit65535
    Gui, Add, Button, x+5 w45 hp vbtnSend hwndhbtnSend Default Disabled , Send
    Gui, Add, Text, xm w300 vlblStatus hwndhlblStatus, Not connected...
    Gui, +MinSize
    Gui, Show
return


GuiSize:
    Anchor(htxtDialog, &quot;wh&quot;)
    Anchor(htxtInput, &quot;wy&quot;)
    Anchor(hbtnSend, &quot;xy&quot;)
    Anchor(hlblStatus, &quot;wy&quot;, 1)
Return
</code></pre></div><p>Правда код старый - нужно править <em>DLLCall</em> там где должно быть <em>Ptr</em>.</p>]]></content>
			<author>
				<name><![CDATA[Alectric]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=26027</uri>
			</author>
			<updated>2015-11-15T17:09:43Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=99059#p99059</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Разрабатываем собственный обфускатор и пр. для защиты]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=99058#p99058" />
			<content type="html"><![CDATA[<p>Разбираться в нём отдельно от контекста особого смысла нет. Если копнуть оригинал, то там далее процедура в маш.кодах, т.е. все cs, cx и прочее - скорее всего, названия регистров. Сама запись вышла такой от поставленной задачи, вряд ли автор хотел зашифровать, &quot;оно само получилось&quot;. <img src="//forum.script-coding.com/img/smilies/smile.png" width="15" height="15" /></p>]]></content>
			<author>
				<name><![CDATA[Irbis]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=27384</uri>
			</author>
			<updated>2015-11-15T16:58:22Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=99058#p99058</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Разрабатываем собственный обфускатор и пр. для защиты]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=99057#p99057" />
			<content type="html"><![CDATA[<p><strong>OFF:</strong><br />В этом коде есть две строки:<br /></p><div class="codebox"><pre><code>If (NumGet(g, cb := gs * (A_Index - 1)) == gp, &quot;UInt&quot;) {
If (NumGet(c, cb := cs * (A_Index - 1), &quot;UInt&quot;) == i) {
</code></pre></div><p>Это ошибка или для <em>NumGet</em> допускается выносить параметр (тип данных) за скобки?</p>]]></content>
			<author>
				<name><![CDATA[Alectric]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=26027</uri>
			</author>
			<updated>2015-11-15T16:52:23Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=99057#p99057</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Разрабатываем собственный обфускатор и пр. для защиты]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=99056#p99056" />
			<content type="html"><![CDATA[<p>Интересно мнение всех, этот код обфусцировали или вручную зашифровали?<br /></p><div class="codebox"><pre><code>;Anchor by Titan, adapted by TheGood
;http://www.autohotkey.com/forum/viewtopic.php?p=377395#377395
Anchor(i, a = &quot;&quot;, r = false) {
	static c, cs = 12, cx = 255, cl = 0, g, gs = 8, gl = 0, gpi, gw, gh, z = 0, k = 0xffff, ptr
	If z = 0
		VarSetCapacity(g, gs * 99, 0), VarSetCapacity(c, cs * cx, 0), ptr := A_PtrSize ? &quot;Ptr&quot; : &quot;UInt&quot;, z := true
	If (!WinExist(&quot;ahk_id&quot; . i)) {
		GuiControlGet, t, Hwnd, %i%
		If ErrorLevel = 0
			i := t
		Else ControlGet, i, Hwnd, , %i%
	}
	VarSetCapacity(gi, 68, 0), DllCall(&quot;GetWindowInfo&quot;, &quot;UInt&quot;, gp := DllCall(&quot;GetParent&quot;, &quot;UInt&quot;, i), ptr, &amp;gi)
		, giw := NumGet(gi, 28, &quot;Int&quot;) - NumGet(gi, 20, &quot;Int&quot;), gih := NumGet(gi, 32, &quot;Int&quot;) - NumGet(gi, 24, &quot;Int&quot;)
	If (gp != gpi) {
		gpi := gp
		Loop, %gl%
			If (NumGet(g, cb := gs * (A_Index - 1)) == gp, &quot;UInt&quot;) {
				gw := NumGet(g, cb + 4, &quot;Short&quot;), gh := NumGet(g, cb + 6, &quot;Short&quot;), gf := 1
				Break
			}
		If (!gf)
			NumPut(gp, g, gl, &quot;UInt&quot;), NumPut(gw := giw, g, gl + 4, &quot;Short&quot;), NumPut(gh := gih, g, gl + 6, &quot;Short&quot;), gl += gs
	}
	ControlGetPos, dx, dy, dw, dh, , ahk_id %i%
	Loop, %cl%
		If (NumGet(c, cb := cs * (A_Index - 1), &quot;UInt&quot;) == i) {
			If a =
			{
				cf = 1
				Break
			}
			giw -= gw, gih -= gh, as := 1, dx := NumGet(c, cb + 4, &quot;Short&quot;), dy := NumGet(c, cb + 6, &quot;Short&quot;)
				, cw := dw, dw := NumGet(c, cb + 8, &quot;Short&quot;), ch := dh, dh := NumGet(c, cb + 10, &quot;Short&quot;)
			Loop, Parse, a, xywh
				If A_Index &gt; 1
					av := SubStr(a, as, 1), as += 1 + StrLen(A_LoopField)
						, d%av% += (InStr(&quot;yh&quot;, av) ? gih : giw) * (A_LoopField + 0 ? A_LoopField : 1)
			DllCall(&quot;SetWindowPos&quot;, &quot;UInt&quot;, i, &quot;UInt&quot;, 0, &quot;Int&quot;, dx, &quot;Int&quot;, dy
				, &quot;Int&quot;, InStr(a, &quot;w&quot;) ? dw : cw, &quot;Int&quot;, InStr(a, &quot;h&quot;) ? dh : ch, &quot;Int&quot;, 4)
			If r != 0
				DllCall(&quot;RedrawWindow&quot;, &quot;UInt&quot;, i, &quot;UInt&quot;, 0, &quot;UInt&quot;, 0, &quot;UInt&quot;, 0x0101) ; RDW_UPDATENOW | RDW_INVALIDATE
			Return
		}
	If cf != 1
		cb := cl, cl += cs
	bx := NumGet(gi, 48, &quot;UInt&quot;), by := NumGet(gi, 16, &quot;Int&quot;) - NumGet(gi, 8, &quot;Int&quot;) - gih - NumGet(gi, 52, &quot;UInt&quot;)
	If cf = 1
		dw -= giw - gw, dh -= gih - gh
	NumPut(i, c, cb, &quot;UInt&quot;), NumPut(dx - bx, c, cb + 4, &quot;Short&quot;), NumPut(dy - by, c, cb + 6, &quot;Short&quot;)
		, NumPut(dw, c, cb + 8, &quot;Short&quot;), NumPut(dh, c, cb + 10, &quot;Short&quot;)
	Return, true
}
</code></pre></div><p>Разобраться в нем конечно можно, но желание пропадает после нескольких строк...</p>]]></content>
			<author>
				<name><![CDATA[Alectric]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=26027</uri>
			</author>
			<updated>2015-11-15T16:22:07Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=99056#p99056</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Разрабатываем собственный обфускатор и пр. для защиты]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=96301#p96301" />
			<content type="html"><![CDATA[<p>Взял совсем простой код для эксперимента: без записей в реестр и тому подобного. Пытаюсь действовать по инструкции, но не совсем её понимаю. В частности вот эту часть:<br /></p><div class="quotebox"><blockquote><p>compile:=ihidestr(&quot;A_IsCompiled&quot;)<br />oedit:=ihidestr(&quot;Введите свой текст&quot;)<br />obutton:=ihidestr(&quot;Проверить&quot;)<br />prog_name:=ihidestr(&quot;Example&quot;)<br />entered:=ihidestr(&quot;Вы ввели: &quot;)<br />bx:=ihidestr(&quot;205&quot;)<br />by:=ihidestr(&quot;175&quot;)<br />bw:=ihidestr(&quot;80&quot;)</p></blockquote></div><p>Мой исходный код:<br /></p><div class="codebox"><pre><code>global var5
global var6
 
 
 
var1 := &quot;Число?&quot;
var2 := 600
var3 := 500
var4 := 20
var7 := 0

 
InputBox,var5,%var1%,,,,,%va2%,%var3%,,%var4%,%var4%
MsgBox,0,%var5%,% f1(),%var7%
Exitapp



f1()
    {
    if (var5 &gt; A_DD)
        var6 := &quot;Больше&quot;
    else
        var6 := &quot;Меньше или равно&quot;
    return var6
    }</code></pre></div><p>Мой подготовленный код:<br /></p><div class="codebox"><pre><code>
;$OBFUSCATOR: $DUMP_SECFRAGS_FORCLASSES: common
;$OBFUSCATOR: $DUMP_TMESSFRAGS_FORCLASSES: common
;$OBFUSCATOR: $GLOBVARFRAGS_DUMPALL:
;$OBFUSCATOR: $LOSVARFRAGS_DUMPALL:
;$OBFUSCATOR: $PARAMFRAGS_DUMPALL:
;$OBFUSCATOR: $FUNCFRAGS_DUMPCLASS: unclassed
;$OBFUSCATOR: $FUNCFRAGS_DUMPCLASS: unsecclasses
;$OBFUSCATOR: $LABELFRAGS_DUMPCLASS: unclassed
;$OBFUSCATOR: $LABELFRAGS_DUMPCLASS: unsecclasses
;$OBFUSCATOR: $SYSFUNCFRAGS_DUMPALL: 
;$OBFUSCATOR: $DEFGLOBVARS: var1, var2, var3, var4, var5, var6, var7
;$OBFUSCATOR: $DEFSYSFUNCS:  f1
 
 
 
global var5
global var6
 
 
 
var1 := &quot;Число?&quot;
var2 := 600
var3 := 500
var4 := 20
var7 := 0


InputBox,var5,%var1%,,,,,%va2%,%var3%,,%var4%,%var4%
MsgBox,0,%var5%,% f1(),%var7%
Exitapp


;$OBFUSCATOR: $END_AUTOEXECUTE:
f1()
    {
    if (var5 &gt; A_DD)
        var6 := &quot;Больше&quot;
    else
        var6 := &quot;Меньше или равно&quot;
    return var6
    }
</code></pre></div><p>Выходной файл не работает. Что я делаю не так?</p>]]></content>
			<author>
				<name><![CDATA[Foma]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=31521</uri>
			</author>
			<updated>2015-08-07T10:21:55Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=96301#p96301</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Разрабатываем собственный обфускатор и пр. для защиты]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=96291#p96291" />
			<content type="html"><![CDATA[<p>Ну я знаю то, что код хранится в EXE файле, и если прямо в исполняемом файле его поменять, то изменения отобразятся. Т.е. он сначала создает копию такого себе сервера, который обрабатывает любой скрипт AHK и затем скармливает ему скрипт из EXE файла.<br />Понятно что происходит разбор кода, при котором токенизируются его элементы.<br />Но код AHK не компилируется в промежуточный код, по крайней мере в процессе создания исполняемого EXE скрипта.<br />И есть же ф-ция (тут я выкладывал), которая может запускать (выполнять) код из строковой переменной.</p>]]></content>
			<author>
				<name><![CDATA[_gruz]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=32863</uri>
			</author>
			<updated>2015-08-06T21:40:58Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=96291#p96291</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Разрабатываем собственный обфускатор и пр. для защиты]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=96290#p96290" />
			<content type="html"><![CDATA[<p>То, что вы пишете в файл *.ahk, и то что крутится во время выполнения, не одно и тоже. Перед выполнением все переменные токенизируются, выражения упрощаются. В отличие от интерактивного интерпретатора, AHK нельзя &quot;скормить&quot; код построчно, то есть как и сказал ранее <strong>YMP</strong>, код нужен не частями, а весь.</p>]]></content>
			<author>
				<name><![CDATA[Irbis]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=27384</uri>
			</author>
			<updated>2015-08-06T21:18:54Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=96290#p96290</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Разрабатываем собственный обфускатор и пр. для защиты]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=96289#p96289" />
			<content type="html"><![CDATA[<p>А вы попробуйте паузу поставить, предыдущая строка исполнится же, когда следующая еще нет, верно? Значит, часть программы может выполняться без остального кода.<br />Вся программа выполняет какую-то функцию, ее части в свою очередь выполняют более мелкие ф-ции, и все это в конечном счете представляет собой оперирование (вроде с помощью 3х операторов) над 0 и 1<br />Каждую строку можно исполнять в отдельной процедуре, связываться они будут только переменными глобальными ну и переходами и разветвлениями IF (которые тоже можно упростить до однострочных)</p>]]></content>
			<author>
				<name><![CDATA[_gruz]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=32863</uri>
			</author>
			<updated>2015-08-06T20:43:04Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=96289#p96289</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Разрабатываем собственный обфускатор и пр. для защиты]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=96288#p96288" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>_gruz пишет:</cite><blockquote><p>Ну почему, за раз одна строка как бы выполняется, а точнее один оператор или ф-ция.</p></blockquote></div><p>C чего вы так решили?</p>]]></content>
			<author>
				<name><![CDATA[Irbis]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=27384</uri>
			</author>
			<updated>2015-08-06T20:16:32Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=96288#p96288</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Разрабатываем собственный обфускатор и пр. для защиты]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=96287#p96287" />
			<content type="html"><![CDATA[<p>Форум не дает отправить такое длинное сообщение, прикрепляю в аттаче.</p>]]></content>
			<author>
				<name><![CDATA[sergeiplugatyr]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=30382</uri>
			</author>
			<updated>2015-08-06T20:06:01Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=96287#p96287</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Разрабатываем собственный обфускатор и пр. для защиты]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=96286#p96286" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>sergeiplugatyr пишет:</cite><blockquote><p>Для удобства сделал:<br /></p><div class="fancy_spoiler_switcher"><div class="fancy_spoiler_switcher_header" data-lang-open="открыть спойлер" data-lang-close="скрыть спойлер"><strong>+</strong>&nbsp;открыть спойлер</div><div class="fancy_spoiler"><div class="codebox"><pre><code>;$OBFUSCATOR: $DEFGLOBVARS: strText, strEdit, strUpDown, strPicture, strButton, strCheckbox, strRadio, strDropDownList, strComboBox, strListBox, strListView, strTreeView, strHotkey, strDateTime, strMonthCal, strSlider, strProgress, strGroupBox, strTab, strStatusBar, strAdd
strText:=ihidestr(&quot;Text&quot;)
strEdit:=ihidestr(&quot;Edit&quot;)
strUpDown:=ihidestr(&quot;UpDown&quot;)
strPicture:=ihidestr(&quot;Picture&quot;)
strButton:=ihidestr(&quot;Button&quot;)
strCheckbox:=ihidestr(&quot;Checkbox&quot;)
strRadio:=ihidestr(&quot;Radio&quot;)
strDropDownList:=ihidestr(&quot;DropDownList&quot;)
strComboBox:=ihidestr(&quot;ComboBox&quot;)
strListBox:=ihidestr(&quot;ListBox&quot;)
strListView:=ihidestr(&quot;ListView&quot;)
strTreeView:=ihidestr(&quot;TreeView&quot;)
strHotkey:=ihidestr(&quot;Hotkey&quot;)
strDateTime:=ihidestr(&quot;DateTime&quot;)
strMonthCal:=ihidestr(&quot;MonthCal&quot;)
strSlider:=ihidestr(&quot;Slider&quot;)
strProgress:=ihidestr(&quot;Progress&quot;)
strGroupBox:=ihidestr(&quot;GroupBox&quot;)
strTab:=ihidestr(&quot;Tab&quot;)
strStatusBar:=ihidestr(&quot;StatusBar&quot;)
strAdd:=ihidestr(&quot;Add&quot;)
/*
%strText%
%strEdit%
%strUpDown%
%strPicture%
%strButton%
%strCheckbox%
%strRadio%
%strDropDownList%
%strComboBox%
%strListBox%
%strListView%
%strTreeView%
%strHotkey%
%strDateTime%
%strMonthCal%
%strSlider%
%strProgress%
%strGroupBox%
%strTab%
%strStatusBar%
*/</code></pre></div></div></div></blockquote></div><p>&nbsp; Инструкцию почитал и даже попробовал раз действие скрипта. Получил только заголовок. Вот это под спойлером что такое? Это надо сначала самому зашифровать таким образом все переменные и операторы?</p>]]></content>
			<author>
				<name><![CDATA[Foma]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=31521</uri>
			</author>
			<updated>2015-08-06T19:31:07Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=96286#p96286</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Разрабатываем собственный обфускатор и пр. для защиты]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=96285#p96285" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>Странникх пишет:</cite><blockquote><p><a href="http://safenet-sentinel.ru/protection/apponchip/">http://safenet-sentinel.ru/protection/apponchip/</a><br />Может кто попробовать разобраться в этом?<br />Наткнулся там на интересную функцию:<br /></p><div class="quotebox"><blockquote><p>AppOnChip заставляет небольшую часть кода приложения исполняться на аппаратном ключе, и результат исполнения является необходимым для продолжения работы всего приложения. Соответственно, приложение не сможет работать без аппаратного ключа. Разработчики могут выбирать, какие конкретно части кода должны быть защищены, с помощью удобного в использовании графического интерфейса.</p></blockquote></div></blockquote></div><p>Наск. я понял, при таком методе &quot;откусываются&quot; куски кода с EXE файла и перемещаются на внешний модуль, где они будут выполнятся. В приложение передается результат, т.е. опять же, данные можно перехватить в программе, и такой метод ограничивается обменом информации, как считка с внешнего файла, а непосредственно из внешней флешки действия не могут влиять на процессы в компе (например рисование линии, выполнение файла и т д.) только передаваемые туда-сюда данные. С таким успехом можно и в сети где-то хранить кусок кода.</p>]]></content>
			<author>
				<name><![CDATA[_gruz]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=32863</uri>
			</author>
			<updated>2015-08-06T19:26:41Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=96285#p96285</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Разрабатываем собственный обфускатор и пр. для защиты]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=96284#p96284" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>YMP пишет:</cite><blockquote><p>Но ведь самому-то АНК код не частями нужен, а весь.</p></blockquote></div><p>Ну почему, за раз одна строка как бы выполняется, а точнее один оператор или ф-ция. Вполне можно построчно запускать (предв. все конструкции вида &quot;{&quot; &quot;}&quot; заменить на однострочные процедуры) код строчка за строчкой посылая их, а промежуточные переменные и данные запоминать глобально. как то так.</p>]]></content>
			<author>
				<name><![CDATA[_gruz]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=32863</uri>
			</author>
			<updated>2015-08-06T19:06:40Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=96284#p96284</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Разрабатываем собственный обфускатор и пр. для защиты]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=96283#p96283" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>Foma пишет:</cite><blockquote><p>Вот в этом <a href="http://www.autohotkey.com/board/topic/89357-obfuscator-for-autohotkey-scripts">http://www.autohotkey.com/board/topic/8 … ey-scripts</a> так и не удалось никому разобраться?</p></blockquote></div><br /><p>Так же хочу сделать, когда текст разбивается на максимально детализированные детали кода, которые переносятся в случайные подпрограммы (goto, gosub), куда последовательно передается управление. Переменные тоже переназначать по неск. раз и максимально запутывать.</p><p> -- уже сделал синтаксический анализатор и модель, пока для распознавания ситуаций вида var1, %var2%, 3,,&nbsp; ,N; (переменные, перечисление переменных включая пропуск &quot;,,&quot;, учет того что например второй знак % должен идти только после имени переменной, и тому подобное). <br />Данный пример будет иметь последовательность:</p><div class="codebox"><pre><code>Enter string: var1, %var2%, 3,,  ,N;
....../  SOURCE: &quot;var1, %var2%, 3,,  ,N;&quot;

EXEC POINT ...: [       VARNAME ]
EXEC POINT ...: [       zpt ]
EXEC POINT ...: [       prev_prc ]
EXEC POINT ...: [       VARNAME ]
EXEC POINT ...: [       next_prc ]
EXEC POINT ...: [       zpt ]
EXEC POINT ...: [       VARNAME ]
EXEC POINT ...: [       zpt ]
EXEC POINT ...: [       VARNAME ]
EXEC POINT ...: [       EOL ]
EXEC POINT ...: [       __endofsource ]
ERRCODE present: 10

==================== =[ LOG     ]= ==========================
VAR: &quot;&quot;,  id: [BEGIN]
VAR: &quot;VAR1&quot;,  id: [VARNAME]
VAR: &quot;,&quot;,  id: [zpt]
VAR: &quot;%&quot;,  id: [prev_prc]
VAR: &quot;VAR2&quot;,  id: [VARNAME]
VAR: &quot;%&quot;,  id: [next_prc]
VAR: &quot;,&quot;,  id: [zpt]
VAR: &quot;3&quot;,  id: [VARNAME]
VAR: &quot;,,,&quot;,  id: [zpt]
VAR: &quot;N&quot;,  id: [VARNAME]
VAR: &quot;;&quot;,  id: [EOL]
///==================== =[ DONE  ]= ==========================</code></pre></div><p>Дело в том, что видимо интерпретатор в AHK не строгий и возможны всякие конструкции, типа %1%2%var3 и т д. Во всяком случае пока не разбирался..<br />В подобных лексических схемах можно относительно легко прописать разбор всего кода AHK по составляющим, а там уже легче будет оперировать с теми же IF и вложенными параметрами.</p>]]></content>
			<author>
				<name><![CDATA[_gruz]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=32863</uri>
			</author>
			<updated>2015-08-06T18:58:48Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=96283#p96283</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Разрабатываем собственный обфускатор и пр. для защиты]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=96282#p96282" />
			<content type="html"><![CDATA[<p>Спасибо, постараюсь разобраться.</p>]]></content>
			<author>
				<name><![CDATA[Foma]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=31521</uri>
			</author>
			<updated>2015-08-06T16:53:14Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=96282#p96282</id>
		</entry>
</feed>
