View difference between Paste ID: zd05Nf10 and APx26JWc
SHOW: | | - or go back to the newest paste.
1
; w $zmienne są oryginalne nazwy zmiennych
2
; w $zmienne2 są nowe, losowe nazwy tych zmiennych
3
global $zmienne[1]
4-
; dodaje zmienna
4+
5
6
; dodaje starą i nową nazwę zmiennej do tablic
7
func __AddVar($_SO,$_SO2)
8
	for $i = 0 to UBound($zmienne) -1
9
		if $zmienne[$i] = "" then
10
			$zmienne[$i]=$_SO
11
			$zmienne2[$i]=$_SO2
12
			return 0
13
		EndIf
14
	Next
15
16
	; powiekszanie tablic
17
	$bo = UBound($zmienne)
18
	ReDim $zmienne[$bo+1]
19
	$zmienne[$bo] = $_SO
20
21
	ReDim $zmienne2[$bo+1]
22
	$zmienne2[$bo] = $_SO2
23-
; usuwa zmienna
23+
24
25
; usuwa zmienną
26
; wlasciwie tutaj niepotrzebne ale moze byc przydatne przy innym zastosowaniu dynamicznych tablic
27
func __DelVar($_SO)
28
	for $i = 0 to UBound($zmienne) -1
29
		if $zmienne[$i] = $_SO then $zmienne[$i]=""
30-
; sprawdza czy zmienna istnieje
30+
31
EndFunc
32
33
; sprawdza czy zmienna już istnieje w tablicy
34
func __VarExists($_SO)
35
	for $i = 0 to UBound($zmienne) -1
36
		if $zmienne[$i] = $_SO then return true
37
	Next
38-
; zwraca nowa nazwe zmiennej
38+
39
EndFunc
40
41
; zwraca nową (losową) nazwę przyporządkowaną do starej nazwy zmiennej
42
func __VarName($_SO)
43
	for $i = 0 to UBound($zmienne) -1
44
		if $zmienne[$i] = $_SO then return $zmienne2[$i]
45
	Next
46
	return -1
47
endfunc
48
49
; wstawia string do stringa w miejsce ($iPOS)
50
func __StringInsert($sSTRING, $iPOS, $sNEW)
51
	return StringMid($sSTRING,1,$iPOS) & $sNEW & StringMid($sSTRING,$iPOS+1,stringlen($sSTRING)-$iPOS+1)
52
endfunc
53
54
; usuwa z stringa ($iLEN) liter od pozycji ($iPOS)
55
func __StringCut($sSTRING, $iPOS, $iLEN)
56
	return StringMid($sSTRING,1,$iPOS) & StringMid($sSTRING,$iPOS+1+$iLEN,stringlen($sSTRING)-$iPOS+1-$iLEN)
57
endfunc
58
59
; usuwa z stringa ($iLEN) liter od pozycji ($iPOS) i wstawia tam string ($sNEW)
60
func __StringReplace($sSTRING, $iPOS, $iLEN, $sNEW)
61-
; sprawdza czy znak jest inni niz litery+liczby
61+
62
endfunc
63
64
; sprawdza czy znak nie może znajdować się w nazwie zmiennej
65
func __CharCheck($sCHAR)
66
	return not ((asc($sCHAR) >= asc("a")) and (asc($sCHAR) <= asc("z"))) or _
67
	   ((asc($sCHAR) >= asc("A")) and (asc($sCHAR) <= asc("Z"))) or _
68
	   ((asc($sCHAR) >= asc("0")) and (asc($sCHAR) <= asc("9"))) or _
69
	   (asc($sCHAR) == asc("_"))
70
endfunc
71
72
; generuje losowy string o dlugosci ($iLEN)
73
func __RandomString($iLEN)
74
	local $i, $r
75
	local $s = ""
76
	for $i = 1 to $iLEN
77
		$r = random(1,3,1)
78
		if $r = 1 then $s &= chr(random(asc("a"),asc("z"),1))
79
		if $r = 2 then $s &= chr(random(asc("A"),asc("Z"),1))
80
		if $r = 3 then $s &= chr(random(asc("0"),asc("9"),1))
81
	next
82
	return $s
83
endfunc
84
85
func booltostring($b)
86
	if ($b) then
87
		return "true"
88
	else
89
		return "false"
90
	endif
91
endfunc
92
93
; parsuje tekst i podmienia nazwy zmiennych
94-
		if StringMid($s,$x,1) = ";" then
94+
95
96
	; kopia parametru $s (w sumie nie wiem czy to potrzebne)
97
	local $s = $_s
98
99
	; $x to aktualny znak z pliku
100-
		if StringMid($s,$x,1) = '"' then
100+
101
102
	; czy aktualny znak jest w komentarzu (po średniku)
103
	local $bCOMMENT = False
104
105
	; czy znak jest w stringu (pomiędzy ' i ')
106-
		if StringMid($s,$x,1) = "'" then
106+
107
108
	; czy znak jest w stringu (pomiędzy " i ")
109
	local $bDQUOTE  = False
110
111
	While($x<stringlen($s))
112
113
		msgbox(0,StringMid($s,$x,1),"C: "&booltostring($bCOMMENT)&", Q: "&booltostring($bQUOTE)&", D: "&booltostring($bDQUOTE))
114
115
		; jeśli znak jest średnikiem, to rozpoczyna się komentarz
116
		; omijamy resztę pętli jeśli tak jest i ustawiamy $bCOMMENT
117
		; przy okazji trzeba sprawdzic czy ten srednik nie znajduje się w jakimś stringu
118
		if (not $bQUOTE) and (not $bDQUOTE) and (StringMid($s,$x,1) = ";") then
119
			$bCOMMENT = True
120
			$x+=1
121
			ContinueLoop
122
		EndIf
123
124
		; jeśli znak jest cudzysłowiem, to znaczy że rozpoczyna lub kończy się string
125
		if (not $bCOMMENT) and (not $bQUOTE) and (StringMid($s,$x,1) = '"') then
126
			$bDQUOTE = not $bDQUOTE
127
			$x+=1
128
			ContinueLoop
129
		EndIf
130
131
		; jeśli znak jest apostrofem to tak samo
132
		if (not $bCOMMENT) and (not $bDQUOTE) and (StringMid($s,$x,1) = "'") then
133
			$bQUOTE = not $bQUOTE
134
			$x+=1
135
			ContinueLoop
136
		EndIf
137
138
		; jeśli znak jest znakiem nowej linii, to komentarz się kończy
139
		if (StringMid($s,$x,1) = chr(10)) or (StringMid($s,$x,1) = chr(13)) then
140
			$bCOMMENT = false
141
			$x+=1
142
			ContinueLoop
143
		EndIf
144
145
		; jeśli aktualnie nie jesteśmy w komentarzu lub stringu
146
		if (not $bCOMMENT) and (not $bQUOTE) and (not $bDQUOTE) Then
147
148
			; czy aktualny znak to początek nazwy zmiennej ($)
149
			if StringMid($s,$x,1) = '$' Then
150
151
				; zmienne tymczasowe
152
				local $bTEMP = true
153
				local $y = 1
154
				local $varname = ""
155
156
				; odczytujemy kolejne litery nazwy zmiennej do $varname
157
				while ($bTEMP)
158
159
					if __CharCheck(stringmid($s,$x+$y,1)) then
160
161
						$bTEMP = False
162
						ExitLoop
163
164
					EndIf
165
166
					$varname &= stringmid($s,$x+$y,1)
167
168
					$y+=1
169
170
				WEnd
171
172
				; jeśli zmienna jest już w tablicy
173
				;  to zamieniamy ją na jej nową nazwę
174
				if __VarExists($varname) Then
175
176
					$s = __StringReplace($s,$x,stringlen($varname),__VarName($varname))
177
					$x += stringlen(__VarName($varname)) - stringlen($varname)
178
179
				; jeśli nie to napierw nazwę generujemy a potem ją zamieniamy
180
				Else
181
182
					__AddVar($varname,__RandomString(random(15,30,1))) ;random
183
					$s = __StringReplace($s,$x,stringlen($varname),__VarName($varname))
184
					$x += stringlen(__VarName($varname)) - stringlen($varname)
185
186
				EndIf
187
188
			EndIf
189
190
		EndIf
191
192
		$x+=1
193
194
	WEnd
195
196
	return $s
197
198
EndFunc
199
200
; te zmienne są macrami, więc ich nazwy nie powinny być zmieniane
201
__AddVar("CmdLine","CmdLine")
202
__AddVar("CmdLineRaw","CmdLineRaw")
203
204
; odczytanie pliku z commandline i zparsowanie go do nazwa_obf.au3
205
if ($CmdLine[0]>0) Then
206
207
	local $f = FileOpen($CmdLine[1],0)
208
	local $s = fileread($f)
209
	fileclose($f)
210
211
	if ($s<>'') Then
212
213
		$s = parse($s)
214
		$f = FileOpen($CmdLine[1]&'_obf.au3',2)
215
		FileWrite($f,$s)
216
		fileclose($f)
217
218
	endif
219
220
EndIf