├── .gitattributes
├── LICENSE
├── README.md
├── pics
├── 1.png
└── 2.png
└── source
├── App.config
├── BatchOptimizer.vb
├── BatchToApp.sln
├── BatchToApp.vbproj
├── BonfireUI.vb
├── Builder
├── headers.cmd
└── stub.cs
├── Compressor.vb
├── MainWindow.Designer.vb
├── MainWindow.resx
├── MainWindow.vb
├── My Project
├── Application.Designer.vb
├── Application.myapp
├── AssemblyInfo.vb
├── Resources.Designer.vb
├── Resources.resx
├── Settings.Designer.vb
└── Settings.settings
├── Obfuscator.vb
├── Resources
└── help.rtf
├── icon.ico
└── logo.png
/.gitattributes:
--------------------------------------------------------------------------------
1 | *.rtf linguist-language=Ignore
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2024 DosX
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # BatchToApp
2 | ### Program that allows you to **pack** and **obfuscate** your Batch scripts (`.bat`/`.cmd`) into a Windows applications (`.exe`)
3 |
4 | ### > **[Download for Windows](https://github.com/DosX-dev/BatchToApp/releases/tag/Builds)**
5 |
6 | ---
7 |
8 | > Screenshots
9 | >
10 | > 
11 | > 
12 |
13 | The script file after conversion can still:
14 | * Receive and process command line arguments
15 | * Return value of `%ERRORLEVEL%`
16 |
17 | ## Functionality
18 | **BatchToApp** can create 32 or 64 bit applications, with or without hiding the console. There are also completely unique script trimming functions that include:
19 | * Comments removing (all lines starting with `::` or `rem` will be removed)
20 | * Unnecessary characters removing (this means reducing the number of line breaks, removing extra spaces)
21 |
22 | How does BatchToApp obfuscate scripts?
23 | Labels obfuscation modes:
24 | * `Labels mutation` (only changes names)
25 | * `Labels mutation` (changes names and adds junks)
26 |
27 | To visually obfuscate many commands, you can use the `Mutate calls` option.
28 |
29 | ## Developer notes
30 | > [!WARNING]
31 | > Antiviruses treat packed files with contempt, so false positives may appear. It's sad, but these are the realities. Ignore this or install a valid CodeSigning digital signature on the file
--------------------------------------------------------------------------------
/pics/1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DosX-dev/BatchToApp/d64ef0eacd2f0db28957367a0eda87a2820ea37d/pics/1.png
--------------------------------------------------------------------------------
/pics/2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DosX-dev/BatchToApp/d64ef0eacd2f0db28957367a0eda87a2820ea37d/pics/2.png
--------------------------------------------------------------------------------
/source/App.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/source/BatchOptimizer.vb:
--------------------------------------------------------------------------------
1 | Imports System.Text.RegularExpressions
2 |
3 | Module BatchOptimizer
4 | Function RemoveBatchComments(source As String) As String
5 | source = Regex.Replace(source, "^\s*::.*$", "", RegexOptions.IgnoreCase Or RegexOptions.Multiline)
6 | source = Regex.Replace(source, "^\s*REM\s+.*$", "", RegexOptions.IgnoreCase Or RegexOptions.Multiline)
7 |
8 | Return source
9 | End Function
10 |
11 | Function TrimBatchUnnecessaryCharacters(source As String) As String
12 | source = Regex.Replace(source, "^\s+", "", RegexOptions.Multiline)
13 | source = Regex.Replace(source, "\r?\n\r?\n+", "\r\n", RegexOptions.Multiline)
14 |
15 | Return source
16 | End Function
17 | End Module
18 |
--------------------------------------------------------------------------------
/source/BatchToApp.sln:
--------------------------------------------------------------------------------
1 |
2 | Microsoft Visual Studio Solution File, Format Version 12.00
3 | # Visual Studio Version 17
4 | VisualStudioVersion = 17.9.34902.65
5 | MinimumVisualStudioVersion = 10.0.40219.1
6 | Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "BatchToApp", "BatchToApp.vbproj", "{E107B54E-0064-4CD0-BD47-B5858DE2AFF5}"
7 | EndProject
8 | Global
9 | GlobalSection(SolutionConfigurationPlatforms) = preSolution
10 | Debug|Any CPU = Debug|Any CPU
11 | Release|Any CPU = Release|Any CPU
12 | EndGlobalSection
13 | GlobalSection(ProjectConfigurationPlatforms) = postSolution
14 | {E107B54E-0064-4CD0-BD47-B5858DE2AFF5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
15 | {E107B54E-0064-4CD0-BD47-B5858DE2AFF5}.Debug|Any CPU.Build.0 = Debug|Any CPU
16 | {E107B54E-0064-4CD0-BD47-B5858DE2AFF5}.Release|Any CPU.ActiveCfg = Release|Any CPU
17 | {E107B54E-0064-4CD0-BD47-B5858DE2AFF5}.Release|Any CPU.Build.0 = Release|Any CPU
18 | EndGlobalSection
19 | GlobalSection(SolutionProperties) = preSolution
20 | HideSolutionNode = FALSE
21 | EndGlobalSection
22 | GlobalSection(ExtensibilityGlobals) = postSolution
23 | SolutionGuid = {DCBEDD03-556E-4017-B782-0ED00038B96B}
24 | EndGlobalSection
25 | EndGlobal
26 |
--------------------------------------------------------------------------------
/source/BatchToApp.vbproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Debug
6 | AnyCPU
7 | {E107B54E-0064-4CD0-BD47-B5858DE2AFF5}
8 | WinExe
9 | BatchToApp.My.MyApplication
10 | BatchToApp
11 | BatchToApp
12 | 512
13 | WindowsForms
14 | v4.7.2
15 | true
16 | true
17 |
18 |
19 | AnyCPU
20 | true
21 | full
22 | true
23 | true
24 | bin\Debug\
25 |
26 |
27 | 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022
28 |
29 |
30 | AnyCPU
31 | none
32 | false
33 | true
34 | true
35 | bin\Release\
36 |
37 |
38 | 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022
39 | false
40 |
41 |
42 | On
43 |
44 |
45 | Binary
46 |
47 |
48 | Off
49 |
50 |
51 | On
52 |
53 |
54 | icon.ico
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 | Form
86 |
87 |
88 | MainWindow.vb
89 | Form
90 |
91 |
92 |
93 | True
94 | Application.myapp
95 | True
96 |
97 |
98 | True
99 | True
100 | Resources.resx
101 |
102 |
103 | True
104 | Settings.settings
105 | True
106 |
107 |
108 | Component
109 |
110 |
111 |
112 |
113 |
114 | MainWindow.vb
115 |
116 |
117 | VbMyResourcesResXFileCodeGenerator
118 | My.Resources
119 | Designer
120 | Resources.Designer.vb
121 |
122 |
123 |
124 |
125 | MyApplicationCodeGenerator
126 | Application.Designer.vb
127 |
128 |
129 | SettingsSingleFileGenerator
130 | My
131 | Settings.Designer.vb
132 |
133 |
134 |
135 |
136 |
137 |
138 |
139 |
140 |
141 |
142 |
143 |
144 |
145 |
146 |
147 |
--------------------------------------------------------------------------------
/source/BonfireUI.vb:
--------------------------------------------------------------------------------
1 | Imports System.Drawing.Drawing2D
2 | Imports System.ComponentModel
3 |
4 | Module Drawing
5 |
6 | Public Function RoundRect(ByVal rect As Rectangle, ByVal slope As Integer) As GraphicsPath
7 | Dim gp As GraphicsPath = New GraphicsPath()
8 | Dim arcWidth As Integer = slope * 2
9 | gp.AddArc(New Rectangle(rect.X, rect.Y, arcWidth, arcWidth), -180, 90)
10 | gp.AddArc(New Rectangle(rect.Width - arcWidth + rect.X, rect.Y, arcWidth, arcWidth), -90, 90)
11 | gp.AddArc(New Rectangle(rect.Width - arcWidth + rect.X, rect.Height - arcWidth + rect.Y, arcWidth, arcWidth), 0, 90)
12 | gp.AddArc(New Rectangle(rect.X, rect.Height - arcWidth + rect.Y, arcWidth, arcWidth), 90, 90)
13 | gp.CloseAllFigures()
14 | Return gp
15 | End Function
16 |
17 | End Module
18 |
19 | Class BonfireButton
20 | Inherits Control
21 |
22 | Enum Style
23 | Blue
24 | Dark
25 | Light
26 | End Enum
27 |
28 | Private _style As Style
29 | Public Property ButtonStyle As Style
30 | Get
31 | Return _style
32 | End Get
33 | Set(ByVal value As Style)
34 | _style = value
35 | Invalidate()
36 | End Set
37 | End Property
38 |
39 | Private _image As Image
40 | Public Property Image As Image
41 | Get
42 | Return _image
43 | End Get
44 | Set(ByVal value As Image)
45 | _image = value
46 | Invalidate()
47 | End Set
48 | End Property
49 |
50 | Private _rounded As Boolean
51 | Public Property RoundedCorners As Boolean
52 | Get
53 | Return _rounded
54 | End Get
55 | Set(ByVal value As Boolean)
56 | _rounded = value
57 | Invalidate()
58 | End Set
59 | End Property
60 |
61 | Enum State
62 | None
63 | Over
64 | Down
65 | End Enum
66 |
67 | Private MouseState As State
68 |
69 | Sub New()
70 | SetStyle(ControlStyles.AllPaintingInWmPaint Or ControlStyles.OptimizedDoubleBuffer Or _
71 | ControlStyles.UserPaint Or ControlStyles.ResizeRedraw, True)
72 | MouseState = State.None
73 | Size = New Size(65, 25)
74 | Font = New Font("Verdana", 8)
75 | Cursor = Cursors.Hand
76 | End Sub
77 |
78 | Protected Overrides Sub OnPaint(ByVal e As System.Windows.Forms.PaintEventArgs)
79 | MyBase.OnPaint(e)
80 |
81 | Dim G As Graphics = e.Graphics
82 |
83 | G.Clear(Parent.BackColor)
84 | G.SmoothingMode = Drawing2D.SmoothingMode.HighQuality
85 |
86 | Dim slope As Integer = 3
87 |
88 | Dim shadowRect As New Rectangle(0, 0, Width - 1, Height - 1)
89 | Dim shadowPath As GraphicsPath = RoundRect(shadowRect, slope)
90 | Dim mainRect As New Rectangle(0, 0, Width - 2, Height - 2)
91 | Select Case ButtonStyle
92 | Case Style.Blue
93 | If _rounded Then
94 | G.FillPath(New SolidBrush(Color.FromArgb(20, 135, 195)), shadowPath)
95 | G.FillPath(New SolidBrush(Color.FromArgb(20, 160, 230)), RoundRect(mainRect, slope))
96 | Else
97 | G.FillRectangle(New SolidBrush(Color.FromArgb(20, 135, 195)), shadowRect)
98 | G.FillRectangle(New SolidBrush(Color.FromArgb(20, 160, 230)), mainRect)
99 | End If
100 | Case Style.Dark
101 | If _rounded Then
102 | G.FillPath(New SolidBrush(Color.FromArgb(45, 45, 45)), shadowPath)
103 | G.FillPath(New SolidBrush(Color.FromArgb(75, 75, 75)), RoundRect(mainRect, slope))
104 | Else
105 | G.FillRectangle(New SolidBrush(Color.FromArgb(45, 45, 45)), shadowRect)
106 | G.FillRectangle(New SolidBrush(Color.FromArgb(75, 75, 75)), mainRect)
107 | End If
108 | Case Style.Light
109 | If _rounded Then
110 | G.FillPath(New SolidBrush(Color.FromArgb(145, 145, 145)), shadowPath)
111 | G.FillPath(New SolidBrush(Color.FromArgb(170, 170, 170)), RoundRect(mainRect, slope))
112 | Else
113 | G.FillRectangle(New SolidBrush(Color.FromArgb(145, 145, 145)), shadowRect)
114 | G.FillRectangle(New SolidBrush(Color.FromArgb(170, 170, 170)), mainRect)
115 | End If
116 | End Select
117 |
118 | If _image Is Nothing Then
119 | Dim textX As Integer = ((Me.Width - 1) / 2) - (G.MeasureString(Text, Font).Width / 2)
120 | Dim textY As Integer = ((Me.Height - 1) / 2) - (G.MeasureString(Text, Font).Height / 2)
121 | G.DrawString(Text, Font, Brushes.White, textX, textY)
122 | Else
123 | Dim textSize As Size = New Size(G.MeasureString(Text, Font).Width, G.MeasureString(Text, Font).Height)
124 | Dim imageWidth As Integer = Me.Height - 19, imageHeight As Integer = Me.Height - 19
125 | Dim imageX As Integer = ((Me.Width - 1) / 2) - ((imageWidth + 4 + textSize.Width) / 2)
126 | Dim imageY As Integer = ((Me.Height - 1) / 2) - (imageHeight / 2)
127 | G.DrawImage(_image, imageX, imageY, imageWidth, imageHeight)
128 | G.DrawString(Text, Font, Brushes.White, New Point(imageX + imageWidth + 4, ((Me.Height - 1) / 2) - textSize.Height / 2))
129 | End If
130 |
131 | If MouseState = State.Over Then
132 | G.FillPath(New SolidBrush(Color.FromArgb(25, Color.White)), shadowPath)
133 | ElseIf MouseState = State.Down Then
134 | G.FillPath(New SolidBrush(Color.FromArgb(40, Color.White)), shadowPath)
135 | End If
136 |
137 | End Sub
138 |
139 | Protected Overrides Sub OnMouseEnter(ByVal e As System.EventArgs)
140 | MyBase.OnMouseEnter(e)
141 | MouseState = State.Over
142 | Invalidate()
143 | End Sub
144 |
145 | Protected Overrides Sub OnMouseLeave(ByVal e As System.EventArgs)
146 | MyBase.OnMouseLeave(e)
147 | MouseState = State.None
148 | Invalidate()
149 | End Sub
150 |
151 | Protected Overrides Sub OnMouseUp(ByVal e As System.Windows.Forms.MouseEventArgs)
152 | MyBase.OnMouseUp(e)
153 | MouseState = State.Over
154 | Invalidate()
155 | End Sub
156 |
157 | Protected Overrides Sub OnMouseDown(ByVal e As System.Windows.Forms.MouseEventArgs)
158 | MyBase.OnMouseDown(e)
159 | MouseState = State.Down
160 | Invalidate()
161 | End Sub
162 | End Class
163 |
164 | Class BonfireTabControl
165 | Inherits TabControl
166 |
167 | Sub New()
168 | SetStyle(ControlStyles.AllPaintingInWmPaint Or ControlStyles.ResizeRedraw Or _
169 | ControlStyles.UserPaint Or ControlStyles.DoubleBuffer, True)
170 | ItemSize = New Size(0, 30)
171 | Font = New Font("Verdana", 8)
172 | End Sub
173 |
174 | Protected Overrides Sub CreateHandle()
175 | MyBase.CreateHandle()
176 | Alignment = TabAlignment.Top
177 | End Sub
178 |
179 | Protected Overrides Sub OnPaint(ByVal e As PaintEventArgs)
180 |
181 | Dim G As Graphics = e.Graphics
182 |
183 | Dim borderPen As New Pen(Color.FromArgb(225, 225, 225))
184 |
185 | G.SmoothingMode = SmoothingMode.HighQuality
186 | G.Clear(Parent.BackColor)
187 |
188 | Dim fillRect As New Rectangle(2, ItemSize.Height + 2, Width - 6, Height - ItemSize.Height - 3)
189 | G.FillRectangle(Brushes.White, fillRect)
190 | G.DrawRectangle(borderPen, fillRect)
191 |
192 | Dim FontColor As New Color
193 |
194 | For i = 0 To TabCount - 1
195 |
196 | Dim mainRect As Rectangle = GetTabRect(i)
197 |
198 | If i = SelectedIndex Then
199 |
200 | G.FillRectangle(New SolidBrush(Color.White), mainRect)
201 | G.DrawRectangle(borderPen, mainRect)
202 | G.DrawLine(New Pen(Color.FromArgb(20, 160, 230)), New Point(mainRect.X + 1, mainRect.Y), New Point(mainRect.X + mainRect.Width - 1, mainRect.Y))
203 | G.DrawLine(Pens.White, New Point(mainRect.X + 1, mainRect.Y + mainRect.Height), New Point(mainRect.X + mainRect.Width - 1, mainRect.Y + mainRect.Height))
204 | FontColor = Color.FromArgb(20, 160, 230)
205 |
206 | Else
207 |
208 | G.FillRectangle(New SolidBrush(Color.FromArgb(245, 245, 245)), mainRect)
209 | G.DrawRectangle(borderPen, mainRect)
210 | FontColor = Color.FromArgb(160, 160, 160)
211 |
212 | End If
213 |
214 | Dim titleX As Integer = (mainRect.Location.X + mainRect.Width / 2) - (G.MeasureString(TabPages(i).Text, Font).Width / 2)
215 | Dim titleY As Integer = (mainRect.Location.Y + mainRect.Height / 2) - (G.MeasureString(TabPages(i).Text, Font).Height / 2)
216 | G.DrawString(TabPages(i).Text, Font, New SolidBrush(FontColor), New Point(titleX, titleY))
217 |
218 | Try : TabPages(i).BackColor = Color.White : Catch : End Try
219 |
220 | Next
221 |
222 | End Sub
223 |
224 | End Class
225 |
226 | Class BonfireGroupBox
227 | Inherits ContainerControl
228 |
229 | Sub New()
230 | SetStyle(ControlStyles.AllPaintingInWmPaint Or ControlStyles.OptimizedDoubleBuffer Or _
231 | ControlStyles.UserPaint Or ControlStyles.ResizeRedraw, True)
232 | BackColor = Color.FromArgb(250, 250, 250)
233 | End Sub
234 |
235 | Protected Overrides Sub OnPaint(ByVal e As System.Windows.Forms.PaintEventArgs)
236 | MyBase.OnPaint(e)
237 |
238 | Dim G As Graphics = e.Graphics
239 |
240 | G.SmoothingMode = SmoothingMode.HighQuality
241 | G.Clear(Parent.BackColor)
242 |
243 | Dim mainRect As New Rectangle(0, 0, Width - 1, Height - 1)
244 | G.FillRectangle(New SolidBrush(Color.FromArgb(250, 250, 250)), mainRect)
245 | G.DrawRectangle(New Pen(Color.FromArgb(225, 225, 225)), mainRect)
246 |
247 | End Sub
248 |
249 | End Class
250 |
251 | Class BonfireLabelHeader
252 | Inherits Label
253 |
254 | Sub New()
255 | Font = New Font("Verdana", 10, FontStyle.Bold)
256 | End Sub
257 |
258 | End Class
259 |
260 | Class BonfireLabel
261 | Inherits Label
262 |
263 | Sub New()
264 | Font = New Font("Verdana", 8)
265 | ForeColor = Color.FromArgb(135, 135, 135)
266 | End Sub
267 |
268 | End Class
269 |
270 | Class BonfireProgressBar
271 | Inherits Control
272 |
273 | Private _Maximum As Integer = 100
274 | Public Property Maximum As Integer
275 | Get
276 | Return _Maximum
277 | End Get
278 | Set(ByVal v As Integer)
279 | If v < 1 Then v = 1
280 | If v < _Value Then _Value = v
281 | _Maximum = v
282 | Invalidate()
283 | End Set
284 | End Property
285 |
286 | Private _Value As Integer
287 | Public Property Value As Integer
288 | Get
289 | Return _Value
290 | End Get
291 | Set(ByVal v As Integer)
292 | If v > _Maximum Then v = Maximum
293 | _Value = v
294 | Invalidate()
295 | End Set
296 | End Property
297 |
298 | Sub New()
299 | SetStyle(ControlStyles.AllPaintingInWmPaint Or ControlStyles.OptimizedDoubleBuffer Or _
300 | ControlStyles.UserPaint Or ControlStyles.ResizeRedraw, True)
301 | Size = New Size(100, 40)
302 | End Sub
303 |
304 | Protected Overrides Sub OnPaint(ByVal e As System.Windows.Forms.PaintEventArgs)
305 | MyBase.OnPaint(e)
306 |
307 | Dim G As Graphics = e.Graphics
308 |
309 | G.SmoothingMode = SmoothingMode.HighQuality
310 | G.Clear(Parent.BackColor)
311 |
312 | Dim mainRect As New Rectangle(0, 0, Width - 1, Height - 1)
313 | G.FillRectangle(New SolidBrush(Color.FromArgb(240, 240, 240)), mainRect)
314 | G.DrawLine(New Pen(Color.FromArgb(230, 230, 230)), New Point(mainRect.X, mainRect.Height), New Point(mainRect.Width, mainRect.Height))
315 |
316 | Dim barRect As New Rectangle(0, 0, CInt(((Width / _Maximum) * _Value) - 1), Height - 1)
317 | G.FillRectangle(New SolidBrush(Color.FromArgb(20, 160, 230)), barRect)
318 | If _Value > 1 Then G.DrawLine(New Pen(Color.FromArgb(20, 140, 200)), New Point(barRect.X, barRect.Height), New Point(barRect.Width, barRect.Height))
319 |
320 | Dim textX As Integer = 12
321 | Dim textY As Integer = ((Me.Height - 1) / 2) - (G.MeasureString(Text, Font).Height / 2)
322 | Dim percent As Single = (_Value / _Maximum) * 100
323 | Dim txt As String = Text & " " & CStr(percent) & "%"
324 | G.DrawString(txt, Font, Brushes.White, New Point(textX, textY))
325 |
326 | End Sub
327 |
328 | End Class
329 |
330 | Class BonfireAlertBox
331 | Inherits Control
332 |
333 | Private exitLocation As Point
334 | Private overExit As Boolean
335 |
336 | Enum Style
337 | _Error
338 | _Success
339 | _Warning
340 | _Notice
341 | End Enum
342 |
343 | Private _alertStyle As Style
344 | Public Property AlertStyle As Style
345 | Get
346 | Return _alertStyle
347 | End Get
348 | Set(ByVal value As Style)
349 | _alertStyle = value
350 | Invalidate()
351 | End Set
352 | End Property
353 |
354 | Sub New()
355 | SetStyle(ControlStyles.AllPaintingInWmPaint Or ControlStyles.OptimizedDoubleBuffer Or _
356 | ControlStyles.UserPaint Or ControlStyles.ResizeRedraw, True)
357 | Font = New Font("Verdana", 8)
358 | Size = New Size(200, 40)
359 | End Sub
360 |
361 | Protected Overrides Sub OnPaint(ByVal e As System.Windows.Forms.PaintEventArgs)
362 | MyBase.OnPaint(e)
363 |
364 | Dim G As Graphics = e.Graphics
365 |
366 | G.SmoothingMode = SmoothingMode.HighQuality
367 | G.Clear(Parent.BackColor)
368 |
369 | Dim borderColor, innerColor, textColor As Color
370 | Select Case _alertStyle
371 | Case Style._Error
372 | borderColor = Color.FromArgb(250, 195, 195)
373 | innerColor = Color.FromArgb(255, 235, 235)
374 | textColor = Color.FromArgb(220, 90, 90)
375 | Case Style._Notice
376 | borderColor = Color.FromArgb(180, 215, 230)
377 | innerColor = Color.FromArgb(235, 245, 255)
378 | textColor = Color.FromArgb(80, 145, 180)
379 | Case Style._Success
380 | borderColor = Color.FromArgb(180, 220, 130)
381 | innerColor = Color.FromArgb(235, 245, 225)
382 | textColor = Color.FromArgb(95, 145, 45)
383 | Case Style._Warning
384 | borderColor = Color.FromArgb(220, 215, 140)
385 | innerColor = Color.FromArgb(250, 250, 220)
386 | textColor = Color.FromArgb(145, 135, 110)
387 | End Select
388 |
389 | Dim mainRect As New Rectangle(0, 0, Width - 1, Height - 1)
390 | G.FillRectangle(New SolidBrush(innerColor), mainRect)
391 | G.DrawRectangle(New Pen(borderColor), mainRect)
392 |
393 | Dim styleText As String = Nothing
394 | Select Case _alertStyle
395 | Case Style._Error
396 | styleText = "Error!"
397 | Case Style._Notice
398 | styleText = "Notice!"
399 | Case Style._Success
400 | styleText = "Success!"
401 | Case Style._Warning
402 | styleText = "Warning!"
403 | End Select
404 |
405 | Dim styleFont As New Font(Font.FontFamily, Font.Size, FontStyle.Bold)
406 | Dim textY As Integer = ((Me.Height - 1) / 2) - (G.MeasureString(Text, Font).Height / 2)
407 | G.DrawString(styleText, styleFont, New SolidBrush(textColor), New Point(10, textY))
408 | G.DrawString(Text, Font, New SolidBrush(textColor), New Point(10 + G.MeasureString(styleText, styleFont).Width + 4, textY))
409 |
410 | Dim exitFont As New Font("Marlett", 6)
411 | Dim exitY As Integer = ((Me.Height - 1) / 2) - (G.MeasureString("r", exitFont).Height / 2) + 1
412 | exitLocation = New Point(Width - 26, exitY - 3)
413 | G.DrawString("r", exitFont, New SolidBrush(textColor), New Point(Width - 23, exitY))
414 |
415 | End Sub
416 |
417 | Protected Overrides Sub OnMouseMove(ByVal e As System.Windows.Forms.MouseEventArgs)
418 | MyBase.OnMouseMove(e)
419 |
420 | If e.X >= Width - 26 AndAlso e.X <= Width - 12 AndAlso e.Y > exitLocation.Y AndAlso e.Y < exitLocation.Y + 12 Then
421 | If Cursor <> Cursors.Hand Then Cursor = Cursors.Hand
422 | overExit = True
423 | Else
424 | If Cursor <> Cursors.Arrow Then Cursor = Cursors.Arrow
425 | overExit = False
426 | End If
427 |
428 | Invalidate()
429 |
430 | End Sub
431 |
432 | Protected Overrides Sub OnMouseDown(ByVal e As System.Windows.Forms.MouseEventArgs)
433 | MyBase.OnMouseDown(e)
434 |
435 | If overExit Then Me.Visible = False
436 |
437 | End Sub
438 |
439 | End Class
440 |
441 | Class BonfireCombo
442 | Inherits ComboBox
443 |
444 | Sub New()
445 | SetStyle(ControlStyles.AllPaintingInWmPaint Or ControlStyles.OptimizedDoubleBuffer Or
446 | ControlStyles.UserPaint Or ControlStyles.ResizeRedraw Or
447 | ControlStyles.SupportsTransparentBackColor, True)
448 |
449 | Font = New Font("Verdana", 8)
450 | Me.FlatStyle = FlatStyle.Flat
451 |
452 | End Sub
453 |
454 | Protected Overrides Sub CreateHandle()
455 | MyBase.CreateHandle()
456 |
457 | DrawMode = Windows.Forms.DrawMode.OwnerDrawFixed
458 | DropDownStyle = ComboBoxStyle.DropDownList
459 | DoubleBuffered = True
460 | ItemHeight = 20
461 |
462 | End Sub
463 |
464 | Protected Overrides Sub OnPaint(ByVal e As System.Windows.Forms.PaintEventArgs)
465 | MyBase.OnPaint(e)
466 |
467 | Dim G As Graphics = e.Graphics
468 |
469 | G.SmoothingMode = SmoothingMode.HighQuality
470 | G.Clear(Parent.BackColor)
471 |
472 | Dim mainRect As New Rectangle(0, 0, Width - 1, Height - 1)
473 | G.FillRectangle(Brushes.White, mainRect)
474 | G.DrawRectangle(New Pen(Color.FromArgb(225, 225, 225)), mainRect)
475 |
476 | Dim triangle As Point() = New Point() {New Point(Width - 14, 16), New Point(Width - 18, 10), New Point(Width - 10, 10)}
477 | G.FillPolygon(Brushes.DarkGray, triangle)
478 | G.DrawLine(New Pen(Color.FromArgb(225, 225, 225)), New Point(Width - 27, 0), New Point(Width - 27, Height - 1))
479 |
480 | Try
481 | If Items.Count > 0 Then
482 | If Not SelectedIndex = -1 Then
483 | Dim textX As Integer = 6
484 | Dim textY As Integer = ((Me.Height - 1) / 2) - (G.MeasureString(Items(SelectedIndex), Font).Height / 2) + 1
485 | G.DrawString(Items(SelectedIndex), Font, Brushes.Gray, New Point(textX, textY))
486 | Else
487 | Dim textX As Integer = 6
488 | Dim textY As Integer = ((Me.Height - 1) / 2) - (G.MeasureString(Items(0), Font).Height / 2) + 1
489 | G.DrawString(Items(0), Font, Brushes.Gray, New Point(textX, textY))
490 | End If
491 | End If
492 | Catch : End Try
493 |
494 | End Sub
495 |
496 | Sub ReplaceItem(ByVal sender As Object, ByVal e As System.Windows.Forms.DrawItemEventArgs) Handles Me.DrawItem
497 | e.DrawBackground()
498 |
499 | Dim G As Graphics = e.Graphics
500 | G.SmoothingMode = SmoothingMode.HighQuality
501 |
502 | Dim rect As New Rectangle(e.Bounds.X - 1, e.Bounds.Y - 1, e.Bounds.Width + 1, e.Bounds.Height + 1)
503 |
504 | Try
505 | If (e.State And DrawItemState.Selected) = DrawItemState.Selected Then
506 | G.FillRectangle(New SolidBrush(Color.FromArgb(20, 160, 230)), rect)
507 | G.DrawString(MyBase.GetItemText(MyBase.Items(e.Index)), Font, Brushes.White, New Rectangle(e.Bounds.X + 6, e.Bounds.Y + 3, e.Bounds.Width, e.Bounds.Height))
508 | G.DrawRectangle(New Pen(Color.FromArgb(20, 160, 230)), rect)
509 | Else
510 | G.FillRectangle(Brushes.White, rect)
511 | G.DrawString(MyBase.GetItemText(MyBase.Items(e.Index)), Font, Brushes.DarkGray, New Rectangle(e.Bounds.X + 6, e.Bounds.Y + 3, e.Bounds.Width, e.Bounds.Height))
512 | G.DrawRectangle(New Pen(Color.FromArgb(20, 160, 230)), rect)
513 | End If
514 |
515 | Catch : End Try
516 | End Sub
517 |
518 | Protected Overrides Sub OnSelectedItemChanged(ByVal e As System.EventArgs)
519 | MyBase.OnSelectedItemChanged(e)
520 | Invalidate()
521 | End Sub
522 | End Class
523 |
524 | Class BonfireCheckbox
525 | Inherits Control
526 |
527 | Event CheckedChanged(ByVal sender As Object)
528 |
529 | Private _checked As Boolean
530 | Public Property Checked() As Boolean
531 | Get
532 | Return _checked
533 | End Get
534 | Set(ByVal value As Boolean)
535 | _checked = value
536 | Invalidate()
537 | End Set
538 | End Property
539 |
540 | Sub New()
541 | SetStyle(ControlStyles.AllPaintingInWmPaint Or ControlStyles.OptimizedDoubleBuffer Or _
542 | ControlStyles.UserPaint Or ControlStyles.ResizeRedraw, True)
543 | Size = New Size(140, 20)
544 | Font = New Font("Verdana", 8)
545 | End Sub
546 |
547 | Protected Overrides Sub OnPaint(ByVal e As System.Windows.Forms.PaintEventArgs)
548 |
549 | Dim G As Graphics = e.Graphics
550 |
551 | G.SmoothingMode = SmoothingMode.HighQuality
552 | G.Clear(Parent.BackColor)
553 |
554 | Dim box As New Rectangle(0, 0, Height, Height - 1)
555 | G.FillRectangle(Brushes.White, box)
556 | G.DrawRectangle(New Pen(Color.FromArgb(225, 225, 225)), box)
557 |
558 | Dim markPen As New Pen(Color.FromArgb(150, 155, 160))
559 | Dim lightMarkPen As New Pen(Color.FromArgb(170, 175, 180))
560 | If _checked Then G.DrawString("a", New Font("Marlett", 14), Brushes.Gray, New Point(0, 0))
561 |
562 | Dim textY As Integer = (Height / 2) - (G.MeasureString(Text, Font).Height / 2)
563 | G.DrawString(Text, Font, Brushes.Gray, New Point(24, textY))
564 |
565 | End Sub
566 |
567 | Protected Overrides Sub OnMouseDown(ByVal e As System.Windows.Forms.MouseEventArgs)
568 | MyBase.OnMouseDown(e)
569 |
570 | If _checked Then
571 | _checked = False
572 | Else
573 | _checked = True
574 | End If
575 |
576 | RaiseEvent CheckedChanged(Me)
577 | Invalidate()
578 |
579 | End Sub
580 |
581 | End Class
582 |
583 | Class BonfireRadioButton
584 | Inherits Control
585 |
586 | Event CheckedChanged(ByVal sender As Object)
587 |
588 | Private _checked As Boolean
589 | Public Property Checked() As Boolean
590 | Get
591 | Return _checked
592 | End Get
593 | Set(ByVal value As Boolean)
594 | _checked = value
595 | Invalidate()
596 | End Set
597 | End Property
598 |
599 | Sub New()
600 | SetStyle(ControlStyles.AllPaintingInWmPaint Or ControlStyles.OptimizedDoubleBuffer Or _
601 | ControlStyles.UserPaint Or ControlStyles.ResizeRedraw, True)
602 | Size = New Size(140, 20)
603 | Font = New Font("Verdana", 8)
604 | End Sub
605 |
606 | Protected Overrides Sub OnPaint(ByVal e As System.Windows.Forms.PaintEventArgs)
607 |
608 | Dim G As Graphics = e.Graphics
609 |
610 | G.SmoothingMode = SmoothingMode.HighQuality
611 | G.Clear(Parent.BackColor)
612 |
613 | Dim box As New Rectangle(0, 0, Height - 1, Height - 1)
614 | G.FillEllipse(Brushes.White, box)
615 | G.DrawEllipse(New Pen(Color.FromArgb(225, 225, 225)), box)
616 |
617 | If _checked Then
618 | Dim innerMark As New Rectangle(6, 6, Height - 13, Height - 13)
619 | G.FillEllipse(New SolidBrush(Color.FromArgb(20, 160, 230)), innerMark)
620 | End If
621 |
622 | Dim textY As Integer = (Height / 2) - (G.MeasureString(Text, Font).Height / 2)
623 | G.DrawString(Text, Font, Brushes.Gray, New Point(24, textY))
624 |
625 | End Sub
626 |
627 | Protected Overrides Sub OnMouseDown(ByVal e As System.Windows.Forms.MouseEventArgs)
628 | MyBase.OnMouseDown(e)
629 |
630 | For Each C As Control In Parent.Controls
631 | If C IsNot Me AndAlso TypeOf C Is BonfireRadioButton Then
632 | DirectCast(C, BonfireRadioButton).Checked = False
633 | End If
634 | Next
635 |
636 | If _checked Then
637 | _checked = False
638 | Else
639 | _checked = True
640 | End If
641 |
642 | RaiseEvent CheckedChanged(Me)
643 | Invalidate()
644 |
645 | End Sub
646 |
647 | End Class
--------------------------------------------------------------------------------
/source/Builder/headers.cmd:
--------------------------------------------------------------------------------
1 | @if not "%~dp0" == "%TEMP%\" goto b2a_ExitProcess
2 | @shift /0
3 |
4 | :: {SOURCE}
5 |
6 | :b2a_ExitProcess
--------------------------------------------------------------------------------
/source/Builder/stub.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.IO;
3 | using System.IO.Compression;
4 | using System.Diagnostics;
5 | using System.Reflection;
6 | using System.Windows.Forms;
7 |
8 | class GeneratedWithBatchToApp { }
9 |
10 | public class Program {
11 | private static string appName = Assembly.GetExecutingAssembly().GetName().Name;
12 | private static string appId = /* {APP_ID} */;
13 |
14 | public static void Main(string[] args) {
15 | try {
16 | RunApplication();
17 | } catch (Exception ex) {
18 | MessageBox.Show("Unable to execute.", appName, MessageBoxButtons.OK, MessageBoxIcon.Error);
19 | }
20 | }
21 |
22 | private static void RunApplication() {
23 | string cmdTemp = Path.Combine(Path.GetTempPath(), "b2a." + appName + "." + appId + ".cmd");
24 |
25 | if (File.Exists(cmdTemp)) {
26 | File.SetAttributes(cmdTemp, FileAttributes.Normal);
27 | File.Delete(cmdTemp);
28 | }
29 |
30 | File.WriteAllBytes(cmdTemp, Decompress(ReadResource("embeddedBatchScript")));
31 |
32 | File.SetAttributes(cmdTemp, FileAttributes.ReadOnly | FileAttributes.Hidden | FileAttributes.Temporary | /* {FS_PROTECTION} */);
33 |
34 | ProcessStartInfo processInfo = new System.Diagnostics.ProcessStartInfo(cmdTemp) {
35 | WorkingDirectory = Environment.CurrentDirectory,
36 | UseShellExecute = false,
37 | Arguments = Environment.CommandLine,
38 | CreateNoWindow = /* {IS_HIDDEN} */,
39 | RedirectStandardError = true
40 | };
41 |
42 | using (var process = System.Diagnostics.Process.Start(processInfo)) {
43 | process.WaitForExit();
44 |
45 | if (process.ExitCode != 0) {
46 | Environment.ExitCode = process.ExitCode;
47 | }
48 | }
49 |
50 | File.SetAttributes(cmdTemp, FileAttributes.Normal);
51 | File.Delete(cmdTemp);
52 | }
53 |
54 |
55 | static byte[] ReadResource(string resourceName) {
56 | using (Stream stream = Assembly.GetExecutingAssembly().GetManifestResourceStream(resourceName))
57 | using (MemoryStream ms = new MemoryStream()) {
58 | stream.CopyTo(ms);
59 | return ms.ToArray();
60 | }
61 | }
62 |
63 | static byte[] Decompress(byte[] data) {
64 | using (MemoryStream compressedMs = new MemoryStream(data))
65 | using (DeflateStream deflateStream = new DeflateStream(compressedMs, CompressionMode.Decompress))
66 | using (MemoryStream decompressedMs = new MemoryStream()) {
67 | deflateStream.CopyTo(decompressedMs);
68 | return decompressedMs.ToArray();
69 | }
70 | }
71 | }
--------------------------------------------------------------------------------
/source/Compressor.vb:
--------------------------------------------------------------------------------
1 | Imports System.IO
2 | Imports System.IO.Compression
3 |
4 | Module Compressor
5 | Function Compress(data As Byte()) As Byte()
6 | Using ms As New MemoryStream()
7 | Using deflateStream As New DeflateStream(ms, CompressionMode.Compress)
8 | deflateStream.Write(data, 0, data.Length)
9 | End Using
10 | Return ms.ToArray()
11 | End Using
12 | End Function
13 | End Module
14 |
--------------------------------------------------------------------------------
/source/MainWindow.Designer.vb:
--------------------------------------------------------------------------------
1 |
2 | Partial Class MainWindow
3 | Inherits System.Windows.Forms.Form
4 |
5 | 'Форма переопределяет dispose для очистки списка компонентов.
6 |
7 | Protected Overrides Sub Dispose(ByVal disposing As Boolean)
8 | Try
9 | If disposing AndAlso components IsNot Nothing Then
10 | components.Dispose()
11 | End If
12 | Finally
13 | MyBase.Dispose(disposing)
14 | End Try
15 | End Sub
16 |
17 | 'Является обязательной для конструктора форм Windows Forms
18 | Private components As System.ComponentModel.IContainer
19 |
20 | 'Примечание: следующая процедура является обязательной для конструктора форм Windows Forms
21 | 'Для ее изменения используйте конструктор форм Windows Form.
22 | 'Не изменяйте ее в редакторе исходного кода.
23 |
24 | Private Sub InitializeComponent()
25 | Dim resources As System.ComponentModel.ComponentResourceManager = New System.ComponentModel.ComponentResourceManager(GetType(MainWindow))
26 | Me.operationStatusLabel = New BatchToApp.BonfireAlertBox()
27 | Me.btnCompile = New BatchToApp.BonfireButton()
28 | Me.btnSelectBat = New BatchToApp.BonfireButton()
29 | Me.menuTabs = New BatchToApp.BonfireTabControl()
30 | Me.settingsTab = New System.Windows.Forms.TabPage()
31 | Me.menuGroup4 = New BatchToApp.BonfireGroupBox()
32 | Me.obfuscationModeComboBox = New BatchToApp.BonfireCombo()
33 | Me.fsProtectionCheckBox = New BatchToApp.BonfireCheckbox()
34 | Me.replaceCommandsCheckBox = New BatchToApp.BonfireCheckbox()
35 | Me.lbl4 = New BatchToApp.BonfireLabelHeader()
36 | Me.lblHeader2 = New BatchToApp.BonfireLabelHeader()
37 | Me.lblHeader1 = New BatchToApp.BonfireLabelHeader()
38 | Me.menuGroup3 = New BatchToApp.BonfireGroupBox()
39 | Me.trimUnnecessaryCharsCheckBox = New BatchToApp.BonfireCheckbox()
40 | Me.removeCommentsCheckBox = New BatchToApp.BonfireCheckbox()
41 | Me.lbl3 = New BatchToApp.BonfireLabelHeader()
42 | Me.menuGroup2 = New BatchToApp.BonfireGroupBox()
43 | Me.lbl2 = New BatchToApp.BonfireLabelHeader()
44 | Me.i386RadioButton = New BatchToApp.BonfireRadioButton()
45 | Me.AMD64RadioButton = New BatchToApp.BonfireRadioButton()
46 | Me.menuGroup1 = New BatchToApp.BonfireGroupBox()
47 | Me.lbl1 = New BatchToApp.BonfireLabelHeader()
48 | Me.ConsoleRadioButton = New BatchToApp.BonfireRadioButton()
49 | Me.HiddenRadioButton = New BatchToApp.BonfireRadioButton()
50 | Me.helpTan = New System.Windows.Forms.TabPage()
51 | Me.helpRichText = New System.Windows.Forms.RichTextBox()
52 | Me.aboutTab = New System.Windows.Forms.TabPage()
53 | Me.lblVersion = New BatchToApp.BonfireLabelHeader()
54 | Me.gitLink = New System.Windows.Forms.LinkLabel()
55 | Me.lbl6 = New BatchToApp.BonfireLabelHeader()
56 | Me.lblHeader3 = New BatchToApp.BonfireLabelHeader()
57 | Me.PictureBox1 = New System.Windows.Forms.PictureBox()
58 | Me.batPath = New BatchToApp.BonfireLabel()
59 | Me.menuTabs.SuspendLayout()
60 | Me.settingsTab.SuspendLayout()
61 | Me.menuGroup4.SuspendLayout()
62 | Me.menuGroup3.SuspendLayout()
63 | Me.menuGroup2.SuspendLayout()
64 | Me.menuGroup1.SuspendLayout()
65 | Me.helpTan.SuspendLayout()
66 | Me.aboutTab.SuspendLayout()
67 | CType(Me.PictureBox1, System.ComponentModel.ISupportInitialize).BeginInit()
68 | Me.SuspendLayout()
69 | '
70 | 'operationStatusLabel
71 | '
72 | Me.operationStatusLabel.AlertStyle = BatchToApp.BonfireAlertBox.Style._Success
73 | Me.operationStatusLabel.Anchor = CType(((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Left) _
74 | Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
75 | Me.operationStatusLabel.Font = New System.Drawing.Font("Verdana", 8.0!)
76 | Me.operationStatusLabel.Location = New System.Drawing.Point(4, 286)
77 | Me.operationStatusLabel.Name = "operationStatusLabel"
78 | Me.operationStatusLabel.Size = New System.Drawing.Size(354, 45)
79 | Me.operationStatusLabel.TabIndex = 0
80 | Me.operationStatusLabel.Text = "Message text"
81 | Me.operationStatusLabel.Visible = False
82 | '
83 | 'btnCompile
84 | '
85 | Me.btnCompile.Anchor = CType((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
86 | Me.btnCompile.ButtonStyle = BatchToApp.BonfireButton.Style.Blue
87 | Me.btnCompile.Cursor = System.Windows.Forms.Cursors.Hand
88 | Me.btnCompile.Font = New System.Drawing.Font("Arial", 12.0!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(204, Byte))
89 | Me.btnCompile.Image = Nothing
90 | Me.btnCompile.Location = New System.Drawing.Point(364, 286)
91 | Me.btnCompile.Name = "btnCompile"
92 | Me.btnCompile.RoundedCorners = False
93 | Me.btnCompile.Size = New System.Drawing.Size(202, 45)
94 | Me.btnCompile.TabIndex = 0
95 | Me.btnCompile.Text = "Build the application"
96 | '
97 | 'btnSelectBat
98 | '
99 | Me.btnSelectBat.Anchor = CType((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
100 | Me.btnSelectBat.ButtonStyle = BatchToApp.BonfireButton.Style.Blue
101 | Me.btnSelectBat.Cursor = System.Windows.Forms.Cursors.Hand
102 | Me.btnSelectBat.Font = New System.Drawing.Font("Verdana", 5.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(204, Byte))
103 | Me.btnSelectBat.Image = Nothing
104 | Me.btnSelectBat.Location = New System.Drawing.Point(530, 9)
105 | Me.btnSelectBat.Name = "btnSelectBat"
106 | Me.btnSelectBat.RoundedCorners = False
107 | Me.btnSelectBat.Size = New System.Drawing.Size(34, 21)
108 | Me.btnSelectBat.TabIndex = 2
109 | Me.btnSelectBat.Text = "⚫⚫⚫"
110 | '
111 | 'menuTabs
112 | '
113 | Me.menuTabs.Anchor = CType((((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Bottom) _
114 | Or System.Windows.Forms.AnchorStyles.Left) _
115 | Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
116 | Me.menuTabs.Controls.Add(Me.settingsTab)
117 | Me.menuTabs.Controls.Add(Me.helpTan)
118 | Me.menuTabs.Controls.Add(Me.aboutTab)
119 | Me.menuTabs.Font = New System.Drawing.Font("Arial", 9.75!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(204, Byte))
120 | Me.menuTabs.ItemSize = New System.Drawing.Size(0, 30)
121 | Me.menuTabs.Location = New System.Drawing.Point(1, 49)
122 | Me.menuTabs.Margin = New System.Windows.Forms.Padding(6, 4, 6, 4)
123 | Me.menuTabs.Name = "menuTabs"
124 | Me.menuTabs.SelectedIndex = 0
125 | Me.menuTabs.Size = New System.Drawing.Size(573, 228)
126 | Me.menuTabs.TabIndex = 0
127 | '
128 | 'settingsTab
129 | '
130 | Me.settingsTab.BackColor = System.Drawing.Color.White
131 | Me.settingsTab.Controls.Add(Me.menuGroup4)
132 | Me.settingsTab.Controls.Add(Me.lblHeader2)
133 | Me.settingsTab.Controls.Add(Me.lblHeader1)
134 | Me.settingsTab.Controls.Add(Me.menuGroup3)
135 | Me.settingsTab.Controls.Add(Me.menuGroup2)
136 | Me.settingsTab.Controls.Add(Me.menuGroup1)
137 | Me.settingsTab.Location = New System.Drawing.Point(4, 34)
138 | Me.settingsTab.Margin = New System.Windows.Forms.Padding(6, 4, 6, 4)
139 | Me.settingsTab.Name = "settingsTab"
140 | Me.settingsTab.Padding = New System.Windows.Forms.Padding(6, 4, 6, 4)
141 | Me.settingsTab.Size = New System.Drawing.Size(565, 190)
142 | Me.settingsTab.TabIndex = 0
143 | Me.settingsTab.Text = "Settings"
144 | '
145 | 'menuGroup4
146 | '
147 | Me.menuGroup4.Anchor = CType((System.Windows.Forms.AnchorStyles.Left Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
148 | Me.menuGroup4.BackColor = System.Drawing.Color.FromArgb(CType(CType(250, Byte), Integer), CType(CType(250, Byte), Integer), CType(CType(250, Byte), Integer))
149 | Me.menuGroup4.Controls.Add(Me.obfuscationModeComboBox)
150 | Me.menuGroup4.Controls.Add(Me.fsProtectionCheckBox)
151 | Me.menuGroup4.Controls.Add(Me.replaceCommandsCheckBox)
152 | Me.menuGroup4.Controls.Add(Me.lbl4)
153 | Me.menuGroup4.Location = New System.Drawing.Point(3, 159)
154 | Me.menuGroup4.Name = "menuGroup4"
155 | Me.menuGroup4.Size = New System.Drawing.Size(559, 30)
156 | Me.menuGroup4.TabIndex = 3
157 | Me.menuGroup4.Text = "BonfireGroupBox2"
158 | '
159 | 'obfuscationModeComboBox
160 | '
161 | Me.obfuscationModeComboBox.Anchor = System.Windows.Forms.AnchorStyles.None
162 | Me.obfuscationModeComboBox.DrawMode = System.Windows.Forms.DrawMode.OwnerDrawFixed
163 | Me.obfuscationModeComboBox.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList
164 | Me.obfuscationModeComboBox.FlatStyle = System.Windows.Forms.FlatStyle.Flat
165 | Me.obfuscationModeComboBox.Font = New System.Drawing.Font("Arial", 9.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(204, Byte))
166 | Me.obfuscationModeComboBox.FormattingEnabled = True
167 | Me.obfuscationModeComboBox.ItemHeight = 20
168 | Me.obfuscationModeComboBox.Items.AddRange(New Object() {"Do not change labels", "Labels mutation v1", "Labels mutation v2"})
169 | Me.obfuscationModeComboBox.Location = New System.Drawing.Point(130, 2)
170 | Me.obfuscationModeComboBox.Name = "obfuscationModeComboBox"
171 | Me.obfuscationModeComboBox.Size = New System.Drawing.Size(160, 26)
172 | Me.obfuscationModeComboBox.TabIndex = 1
173 | '
174 | 'fsProtectionCheckBox
175 | '
176 | Me.fsProtectionCheckBox.Anchor = System.Windows.Forms.AnchorStyles.None
177 | Me.fsProtectionCheckBox.Checked = False
178 | Me.fsProtectionCheckBox.Font = New System.Drawing.Font("Arial", 10.0!)
179 | Me.fsProtectionCheckBox.Location = New System.Drawing.Point(421, 5)
180 | Me.fsProtectionCheckBox.Name = "fsProtectionCheckBox"
181 | Me.fsProtectionCheckBox.Size = New System.Drawing.Size(111, 20)
182 | Me.fsProtectionCheckBox.TabIndex = 0
183 | Me.fsProtectionCheckBox.Text = "FS protection"
184 | '
185 | 'replaceCommandsCheckBox
186 | '
187 | Me.replaceCommandsCheckBox.Anchor = System.Windows.Forms.AnchorStyles.None
188 | Me.replaceCommandsCheckBox.Checked = False
189 | Me.replaceCommandsCheckBox.Font = New System.Drawing.Font("Arial", 10.0!)
190 | Me.replaceCommandsCheckBox.Location = New System.Drawing.Point(305, 5)
191 | Me.replaceCommandsCheckBox.Name = "replaceCommandsCheckBox"
192 | Me.replaceCommandsCheckBox.Size = New System.Drawing.Size(110, 20)
193 | Me.replaceCommandsCheckBox.TabIndex = 0
194 | Me.replaceCommandsCheckBox.Text = "Mutate calls"
195 | '
196 | 'lbl4
197 | '
198 | Me.lbl4.Anchor = System.Windows.Forms.AnchorStyles.Top
199 | Me.lbl4.Font = New System.Drawing.Font("Arial", 11.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(204, Byte))
200 | Me.lbl4.ForeColor = System.Drawing.Color.Gray
201 | Me.lbl4.Location = New System.Drawing.Point(30, 3)
202 | Me.lbl4.Name = "lbl4"
203 | Me.lbl4.Size = New System.Drawing.Size(94, 23)
204 | Me.lbl4.TabIndex = 0
205 | Me.lbl4.Text = "Obfuscation"
206 | Me.lbl4.TextAlign = System.Drawing.ContentAlignment.MiddleLeft
207 | '
208 | 'lblHeader2
209 | '
210 | Me.lblHeader2.Anchor = CType((System.Windows.Forms.AnchorStyles.Left Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
211 | Me.lblHeader2.Font = New System.Drawing.Font("Arial", 11.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(204, Byte))
212 | Me.lblHeader2.ForeColor = System.Drawing.Color.Gray
213 | Me.lblHeader2.Location = New System.Drawing.Point(10, 107)
214 | Me.lblHeader2.Name = "lblHeader2"
215 | Me.lblHeader2.Size = New System.Drawing.Size(547, 17)
216 | Me.lblHeader2.TabIndex = 0
217 | Me.lblHeader2.Text = "Script parameters"
218 | Me.lblHeader2.TextAlign = System.Drawing.ContentAlignment.MiddleCenter
219 | '
220 | 'lblHeader1
221 | '
222 | Me.lblHeader1.Anchor = CType((System.Windows.Forms.AnchorStyles.Left Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
223 | Me.lblHeader1.Font = New System.Drawing.Font("Arial", 11.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(204, Byte))
224 | Me.lblHeader1.ForeColor = System.Drawing.Color.Gray
225 | Me.lblHeader1.Location = New System.Drawing.Point(10, 13)
226 | Me.lblHeader1.Name = "lblHeader1"
227 | Me.lblHeader1.Size = New System.Drawing.Size(547, 17)
228 | Me.lblHeader1.TabIndex = 0
229 | Me.lblHeader1.Text = "Compiler parameters"
230 | Me.lblHeader1.TextAlign = System.Drawing.ContentAlignment.MiddleCenter
231 | '
232 | 'menuGroup3
233 | '
234 | Me.menuGroup3.Anchor = CType((System.Windows.Forms.AnchorStyles.Left Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
235 | Me.menuGroup3.BackColor = System.Drawing.Color.FromArgb(CType(CType(250, Byte), Integer), CType(CType(250, Byte), Integer), CType(CType(250, Byte), Integer))
236 | Me.menuGroup3.Controls.Add(Me.trimUnnecessaryCharsCheckBox)
237 | Me.menuGroup3.Controls.Add(Me.removeCommentsCheckBox)
238 | Me.menuGroup3.Controls.Add(Me.lbl3)
239 | Me.menuGroup3.Location = New System.Drawing.Point(3, 128)
240 | Me.menuGroup3.Name = "menuGroup3"
241 | Me.menuGroup3.Size = New System.Drawing.Size(559, 29)
242 | Me.menuGroup3.TabIndex = 0
243 | Me.menuGroup3.Text = "BonfireGroupBox2"
244 | '
245 | 'trimUnnecessaryCharsCheckBox
246 | '
247 | Me.trimUnnecessaryCharsCheckBox.Anchor = System.Windows.Forms.AnchorStyles.None
248 | Me.trimUnnecessaryCharsCheckBox.Checked = True
249 | Me.trimUnnecessaryCharsCheckBox.Font = New System.Drawing.Font("Arial", 10.0!)
250 | Me.trimUnnecessaryCharsCheckBox.Location = New System.Drawing.Point(305, 4)
251 | Me.trimUnnecessaryCharsCheckBox.Name = "trimUnnecessaryCharsCheckBox"
252 | Me.trimUnnecessaryCharsCheckBox.Size = New System.Drawing.Size(227, 20)
253 | Me.trimUnnecessaryCharsCheckBox.TabIndex = 0
254 | Me.trimUnnecessaryCharsCheckBox.Text = "Remove unnecessary characters"
255 | '
256 | 'removeCommentsCheckBox
257 | '
258 | Me.removeCommentsCheckBox.Anchor = System.Windows.Forms.AnchorStyles.None
259 | Me.removeCommentsCheckBox.Checked = True
260 | Me.removeCommentsCheckBox.Font = New System.Drawing.Font("Arial", 10.0!)
261 | Me.removeCommentsCheckBox.Location = New System.Drawing.Point(130, 4)
262 | Me.removeCommentsCheckBox.Name = "removeCommentsCheckBox"
263 | Me.removeCommentsCheckBox.Size = New System.Drawing.Size(160, 20)
264 | Me.removeCommentsCheckBox.TabIndex = 0
265 | Me.removeCommentsCheckBox.Text = "Remove comments"
266 | '
267 | 'lbl3
268 | '
269 | Me.lbl3.Anchor = System.Windows.Forms.AnchorStyles.Top
270 | Me.lbl3.Font = New System.Drawing.Font("Arial", 11.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(204, Byte))
271 | Me.lbl3.ForeColor = System.Drawing.Color.Gray
272 | Me.lbl3.Location = New System.Drawing.Point(30, 3)
273 | Me.lbl3.Name = "lbl3"
274 | Me.lbl3.Size = New System.Drawing.Size(94, 23)
275 | Me.lbl3.TabIndex = 0
276 | Me.lbl3.Text = "Trimming"
277 | Me.lbl3.TextAlign = System.Drawing.ContentAlignment.MiddleLeft
278 | '
279 | 'menuGroup2
280 | '
281 | Me.menuGroup2.Anchor = CType((System.Windows.Forms.AnchorStyles.Left Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
282 | Me.menuGroup2.BackColor = System.Drawing.Color.FromArgb(CType(CType(250, Byte), Integer), CType(CType(250, Byte), Integer), CType(CType(250, Byte), Integer))
283 | Me.menuGroup2.Controls.Add(Me.lbl2)
284 | Me.menuGroup2.Controls.Add(Me.i386RadioButton)
285 | Me.menuGroup2.Controls.Add(Me.AMD64RadioButton)
286 | Me.menuGroup2.Location = New System.Drawing.Point(3, 66)
287 | Me.menuGroup2.Name = "menuGroup2"
288 | Me.menuGroup2.Size = New System.Drawing.Size(559, 29)
289 | Me.menuGroup2.TabIndex = 0
290 | Me.menuGroup2.Text = "BonfireGroupBox2"
291 | '
292 | 'lbl2
293 | '
294 | Me.lbl2.Anchor = System.Windows.Forms.AnchorStyles.Top
295 | Me.lbl2.Font = New System.Drawing.Font("Arial", 11.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(204, Byte))
296 | Me.lbl2.ForeColor = System.Drawing.Color.Gray
297 | Me.lbl2.Location = New System.Drawing.Point(30, 3)
298 | Me.lbl2.Name = "lbl2"
299 | Me.lbl2.Size = New System.Drawing.Size(94, 23)
300 | Me.lbl2.TabIndex = 0
301 | Me.lbl2.Text = "Bitness"
302 | Me.lbl2.TextAlign = System.Drawing.ContentAlignment.MiddleLeft
303 | '
304 | 'i386RadioButton
305 | '
306 | Me.i386RadioButton.Anchor = System.Windows.Forms.AnchorStyles.Top
307 | Me.i386RadioButton.Checked = True
308 | Me.i386RadioButton.Font = New System.Drawing.Font("Arial", 11.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(204, Byte))
309 | Me.i386RadioButton.Location = New System.Drawing.Point(181, 5)
310 | Me.i386RadioButton.Name = "i386RadioButton"
311 | Me.i386RadioButton.Size = New System.Drawing.Size(98, 20)
312 | Me.i386RadioButton.TabIndex = 0
313 | Me.i386RadioButton.Text = "32-bit"
314 | '
315 | 'AMD64RadioButton
316 | '
317 | Me.AMD64RadioButton.Anchor = System.Windows.Forms.AnchorStyles.Top
318 | Me.AMD64RadioButton.Checked = False
319 | Me.AMD64RadioButton.Font = New System.Drawing.Font("Arial", 11.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(204, Byte))
320 | Me.AMD64RadioButton.Location = New System.Drawing.Point(285, 5)
321 | Me.AMD64RadioButton.Name = "AMD64RadioButton"
322 | Me.AMD64RadioButton.Size = New System.Drawing.Size(98, 20)
323 | Me.AMD64RadioButton.TabIndex = 0
324 | Me.AMD64RadioButton.Text = "64-bit"
325 | '
326 | 'menuGroup1
327 | '
328 | Me.menuGroup1.Anchor = CType((System.Windows.Forms.AnchorStyles.Left Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
329 | Me.menuGroup1.BackColor = System.Drawing.Color.FromArgb(CType(CType(250, Byte), Integer), CType(CType(250, Byte), Integer), CType(CType(250, Byte), Integer))
330 | Me.menuGroup1.Controls.Add(Me.lbl1)
331 | Me.menuGroup1.Controls.Add(Me.ConsoleRadioButton)
332 | Me.menuGroup1.Controls.Add(Me.HiddenRadioButton)
333 | Me.menuGroup1.Location = New System.Drawing.Point(3, 35)
334 | Me.menuGroup1.Name = "menuGroup1"
335 | Me.menuGroup1.Size = New System.Drawing.Size(559, 29)
336 | Me.menuGroup1.TabIndex = 2
337 | Me.menuGroup1.Text = "BonfireGroupBox1"
338 | '
339 | 'lbl1
340 | '
341 | Me.lbl1.Anchor = System.Windows.Forms.AnchorStyles.Top
342 | Me.lbl1.Font = New System.Drawing.Font("Arial", 11.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(204, Byte))
343 | Me.lbl1.ForeColor = System.Drawing.Color.Gray
344 | Me.lbl1.Location = New System.Drawing.Point(30, 3)
345 | Me.lbl1.Name = "lbl1"
346 | Me.lbl1.Size = New System.Drawing.Size(94, 23)
347 | Me.lbl1.TabIndex = 0
348 | Me.lbl1.Text = "Mode"
349 | Me.lbl1.TextAlign = System.Drawing.ContentAlignment.MiddleLeft
350 | '
351 | 'ConsoleRadioButton
352 | '
353 | Me.ConsoleRadioButton.Anchor = System.Windows.Forms.AnchorStyles.Top
354 | Me.ConsoleRadioButton.Checked = True
355 | Me.ConsoleRadioButton.Font = New System.Drawing.Font("Arial", 11.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(204, Byte))
356 | Me.ConsoleRadioButton.Location = New System.Drawing.Point(181, 5)
357 | Me.ConsoleRadioButton.Name = "ConsoleRadioButton"
358 | Me.ConsoleRadioButton.Size = New System.Drawing.Size(98, 20)
359 | Me.ConsoleRadioButton.TabIndex = 0
360 | Me.ConsoleRadioButton.Text = "Console"
361 | '
362 | 'HiddenRadioButton
363 | '
364 | Me.HiddenRadioButton.Anchor = System.Windows.Forms.AnchorStyles.Top
365 | Me.HiddenRadioButton.Checked = False
366 | Me.HiddenRadioButton.Font = New System.Drawing.Font("Arial", 11.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(204, Byte))
367 | Me.HiddenRadioButton.Location = New System.Drawing.Point(285, 5)
368 | Me.HiddenRadioButton.Name = "HiddenRadioButton"
369 | Me.HiddenRadioButton.Size = New System.Drawing.Size(98, 20)
370 | Me.HiddenRadioButton.TabIndex = 0
371 | Me.HiddenRadioButton.Text = "Hidden"
372 | '
373 | 'helpTan
374 | '
375 | Me.helpTan.BackColor = System.Drawing.Color.White
376 | Me.helpTan.Controls.Add(Me.helpRichText)
377 | Me.helpTan.Location = New System.Drawing.Point(4, 34)
378 | Me.helpTan.Name = "helpTan"
379 | Me.helpTan.Padding = New System.Windows.Forms.Padding(3)
380 | Me.helpTan.Size = New System.Drawing.Size(565, 190)
381 | Me.helpTan.TabIndex = 2
382 | Me.helpTan.Text = "FAQ"
383 | '
384 | 'helpRichText
385 | '
386 | Me.helpRichText.BackColor = System.Drawing.Color.White
387 | Me.helpRichText.BorderStyle = System.Windows.Forms.BorderStyle.None
388 | Me.helpRichText.Cursor = System.Windows.Forms.Cursors.Default
389 | Me.helpRichText.Dock = System.Windows.Forms.DockStyle.Fill
390 | Me.helpRichText.Location = New System.Drawing.Point(3, 3)
391 | Me.helpRichText.Name = "helpRichText"
392 | Me.helpRichText.ReadOnly = True
393 | Me.helpRichText.Size = New System.Drawing.Size(559, 184)
394 | Me.helpRichText.TabIndex = 0
395 | Me.helpRichText.Text = ""
396 | '
397 | 'aboutTab
398 | '
399 | Me.aboutTab.BackColor = System.Drawing.Color.White
400 | Me.aboutTab.Controls.Add(Me.lblVersion)
401 | Me.aboutTab.Controls.Add(Me.gitLink)
402 | Me.aboutTab.Controls.Add(Me.lbl6)
403 | Me.aboutTab.Controls.Add(Me.lblHeader3)
404 | Me.aboutTab.Controls.Add(Me.PictureBox1)
405 | Me.aboutTab.Location = New System.Drawing.Point(4, 34)
406 | Me.aboutTab.Margin = New System.Windows.Forms.Padding(6, 4, 6, 4)
407 | Me.aboutTab.Name = "aboutTab"
408 | Me.aboutTab.Padding = New System.Windows.Forms.Padding(6, 4, 6, 4)
409 | Me.aboutTab.Size = New System.Drawing.Size(565, 190)
410 | Me.aboutTab.TabIndex = 1
411 | Me.aboutTab.Text = "About"
412 | '
413 | 'lblVersion
414 | '
415 | Me.lblVersion.Anchor = System.Windows.Forms.AnchorStyles.None
416 | Me.lblVersion.Font = New System.Drawing.Font("Arial", 14.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(204, Byte))
417 | Me.lblVersion.ForeColor = System.Drawing.Color.Silver
418 | Me.lblVersion.Location = New System.Drawing.Point(290, 7)
419 | Me.lblVersion.Name = "lblVersion"
420 | Me.lblVersion.Size = New System.Drawing.Size(129, 27)
421 | Me.lblVersion.TabIndex = 0
422 | Me.lblVersion.Text = "v%s"
423 | Me.lblVersion.TextAlign = System.Drawing.ContentAlignment.MiddleLeft
424 | '
425 | 'gitLink
426 | '
427 | Me.gitLink.ActiveLinkColor = System.Drawing.Color.Teal
428 | Me.gitLink.Anchor = System.Windows.Forms.AnchorStyles.None
429 | Me.gitLink.AutoSize = True
430 | Me.gitLink.Font = New System.Drawing.Font("Arial", 11.25!, System.Drawing.FontStyle.Italic, System.Drawing.GraphicsUnit.Point, CType(204, Byte))
431 | Me.gitLink.LinkColor = System.Drawing.Color.Teal
432 | Me.gitLink.Location = New System.Drawing.Point(167, 95)
433 | Me.gitLink.Name = "gitLink"
434 | Me.gitLink.Size = New System.Drawing.Size(278, 17)
435 | Me.gitLink.TabIndex = 0
436 | Me.gitLink.TabStop = True
437 | Me.gitLink.Text = "https://github.com/DosX-dev/BatchToApp"
438 | '
439 | 'lbl6
440 | '
441 | Me.lbl6.Anchor = System.Windows.Forms.AnchorStyles.None
442 | Me.lbl6.Font = New System.Drawing.Font("Arial", 12.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(204, Byte))
443 | Me.lbl6.ForeColor = System.Drawing.Color.Gray
444 | Me.lbl6.Location = New System.Drawing.Point(166, 34)
445 | Me.lbl6.Name = "lbl6"
446 | Me.lbl6.Size = New System.Drawing.Size(387, 63)
447 | Me.lbl6.TabIndex = 0
448 | Me.lbl6.Text = "An open source program that allows you to pack and obfuscate your Batch scripts (" &
449 | ".bat/.cmd) into a Windows applications!"
450 | '
451 | 'lblHeader3
452 | '
453 | Me.lblHeader3.Anchor = System.Windows.Forms.AnchorStyles.None
454 | Me.lblHeader3.Font = New System.Drawing.Font("Arial", 14.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(204, Byte))
455 | Me.lblHeader3.ForeColor = System.Drawing.Color.Gray
456 | Me.lblHeader3.Location = New System.Drawing.Point(166, 7)
457 | Me.lblHeader3.Name = "lblHeader3"
458 | Me.lblHeader3.Size = New System.Drawing.Size(130, 27)
459 | Me.lblHeader3.TabIndex = 0
460 | Me.lblHeader3.Text = "BatchToApp"
461 | Me.lblHeader3.TextAlign = System.Drawing.ContentAlignment.MiddleLeft
462 | '
463 | 'PictureBox1
464 | '
465 | Me.PictureBox1.Anchor = System.Windows.Forms.AnchorStyles.None
466 | Me.PictureBox1.Image = Global.BatchToApp.My.Resources.Resources.logo
467 | Me.PictureBox1.Location = New System.Drawing.Point(10, 7)
468 | Me.PictureBox1.Name = "PictureBox1"
469 | Me.PictureBox1.Size = New System.Drawing.Size(150, 150)
470 | Me.PictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage
471 | Me.PictureBox1.TabIndex = 0
472 | Me.PictureBox1.TabStop = False
473 | '
474 | 'batPath
475 | '
476 | Me.batPath.AllowDrop = True
477 | Me.batPath.Anchor = CType(((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Left) _
478 | Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
479 | Me.batPath.BackColor = System.Drawing.Color.FromArgb(CType(CType(224, Byte), Integer), CType(CType(224, Byte), Integer), CType(CType(224, Byte), Integer))
480 | Me.batPath.Font = New System.Drawing.Font("Arial", 11.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(204, Byte))
481 | Me.batPath.ForeColor = System.Drawing.Color.Gray
482 | Me.batPath.Location = New System.Drawing.Point(12, 9)
483 | Me.batPath.Name = "batPath"
484 | Me.batPath.Size = New System.Drawing.Size(512, 21)
485 | Me.batPath.TabIndex = 0
486 | Me.batPath.Text = "Select or drag&drop file"
487 | Me.batPath.TextAlign = System.Drawing.ContentAlignment.MiddleCenter
488 | Me.batPath.UseMnemonic = False
489 | '
490 | 'MainWindow
491 | '
492 | Me.AllowDrop = True
493 | Me.AutoScaleDimensions = New System.Drawing.SizeF(9.0!, 18.0!)
494 | Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
495 | Me.BackColor = System.Drawing.Color.White
496 | Me.ClientSize = New System.Drawing.Size(574, 341)
497 | Me.Controls.Add(Me.operationStatusLabel)
498 | Me.Controls.Add(Me.btnCompile)
499 | Me.Controls.Add(Me.btnSelectBat)
500 | Me.Controls.Add(Me.menuTabs)
501 | Me.Controls.Add(Me.batPath)
502 | Me.Font = New System.Drawing.Font("Arial", 12.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(204, Byte))
503 | Me.Icon = CType(resources.GetObject("$this.Icon"), System.Drawing.Icon)
504 | Me.Margin = New System.Windows.Forms.Padding(6, 4, 6, 4)
505 | Me.MaximizeBox = False
506 | Me.MaximumSize = New System.Drawing.Size(790, 580)
507 | Me.MinimumSize = New System.Drawing.Size(590, 380)
508 | Me.Name = "MainWindow"
509 | Me.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen
510 | Me.Text = "BatchToApp"
511 | Me.menuTabs.ResumeLayout(False)
512 | Me.settingsTab.ResumeLayout(False)
513 | Me.menuGroup4.ResumeLayout(False)
514 | Me.menuGroup3.ResumeLayout(False)
515 | Me.menuGroup2.ResumeLayout(False)
516 | Me.menuGroup1.ResumeLayout(False)
517 | Me.helpTan.ResumeLayout(False)
518 | Me.aboutTab.ResumeLayout(False)
519 | Me.aboutTab.PerformLayout()
520 | CType(Me.PictureBox1, System.ComponentModel.ISupportInitialize).EndInit()
521 | Me.ResumeLayout(False)
522 |
523 | End Sub
524 |
525 | Friend WithEvents menuTabs As BonfireTabControl
526 | Friend WithEvents settingsTab As TabPage
527 | Friend WithEvents aboutTab As TabPage
528 | Friend WithEvents batPath As BonfireLabel
529 | Friend WithEvents btnSelectBat As BonfireButton
530 | Friend WithEvents btnCompile As BonfireButton
531 | Friend WithEvents lbl1 As BonfireLabelHeader
532 | Friend WithEvents HiddenRadioButton As BonfireRadioButton
533 | Friend WithEvents ConsoleRadioButton As BonfireRadioButton
534 | Friend WithEvents menuGroup1 As BonfireGroupBox
535 | Friend WithEvents menuGroup2 As BonfireGroupBox
536 | Friend WithEvents lbl2 As BonfireLabelHeader
537 | Friend WithEvents i386RadioButton As BonfireRadioButton
538 | Friend WithEvents AMD64RadioButton As BonfireRadioButton
539 | Friend WithEvents lblHeader1 As BonfireLabelHeader
540 | Friend WithEvents lblHeader2 As BonfireLabelHeader
541 | Friend WithEvents menuGroup3 As BonfireGroupBox
542 | Friend WithEvents lbl3 As BonfireLabelHeader
543 | Friend WithEvents PictureBox1 As PictureBox
544 | Friend WithEvents lblHeader3 As BonfireLabelHeader
545 | Friend WithEvents operationStatusLabel As BonfireAlertBox
546 | Friend WithEvents lbl6 As BonfireLabelHeader
547 | Friend WithEvents gitLink As LinkLabel
548 | Friend WithEvents removeCommentsCheckBox As BonfireCheckbox
549 | Friend WithEvents trimUnnecessaryCharsCheckBox As BonfireCheckbox
550 | Friend WithEvents menuGroup4 As BonfireGroupBox
551 | Friend WithEvents lbl4 As BonfireLabelHeader
552 | Friend WithEvents replaceCommandsCheckBox As BonfireCheckbox
553 | Friend WithEvents obfuscationModeComboBox As BonfireCombo
554 | Friend WithEvents lblVersion As BonfireLabelHeader
555 | Friend WithEvents helpTan As TabPage
556 | Friend WithEvents helpRichText As RichTextBox
557 | Friend WithEvents fsProtectionCheckBox As BonfireCheckbox
558 | End Class
559 |
--------------------------------------------------------------------------------
/source/MainWindow.resx:
--------------------------------------------------------------------------------
1 |
2 |
3 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 |
107 |
108 |
109 | text/microsoft-resx
110 |
111 |
112 | 2.0
113 |
114 |
115 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
116 |
117 |
118 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
119 |
120 |
121 |
122 |
123 | AAABAAEAICAAAAEAIACoEAAAFgAAACgAAAAgAAAAQAAAAAEAIAAAAAAAABAAAAAAAAAAAAAAAAAAAAAA
124 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
125 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
126 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
127 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
128 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
129 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
130 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
131 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
132 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
133 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYLhAAAAAAAAQH
134 | AgcBAgEaBwYDFwMCARkNCAQGAAAAAFIyGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
135 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADxwJAC1UGwACBAEQAAAANwEC
136 | AUwBAgFrAwYCtQcOBdoHBgPVFg4H2AcEAq4EAwFjAgEBTQAAADIIBQMNAAAAADYhEAAAAAAAAAAAAAAA
137 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAeCgAAAAAAAgQBPwUJ
138 | A8URHwvwDhoJ+g4bCfw2ZSL/N2ok/yYgDv+xbjX/k1ss/x8TCfsvHQ76LBwN7gsHA7oGBAIuBAIBAAAA
139 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgUpABIHNAAEAQwJBQMQBgEKDwgBCg8HAwAAAAgQ
140 | BQMCAwGnKU4a/02QMf8tVR3/IT4V/1OeNv9DgSz/LSUQ/9yIQv/vlUj/TTAX/5xhL//eikP/Zj8f/wAA
141 | AIsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJAxoAGglKAAIBBSAAAABWAAABjAMBCbwCAQexAQYKtwEG
142 | CbUAAQKBADBaUQMNEMQ5bCT/VZ82/y9YHv8hPxb/U542/0F9Kv8nIA7/1YRA//GWSP9PMRj/omUx//mb
143 | S/+QWiz/AAAAmgkFAgAAAAAABQIOAAcDFQIBAAMUAAAANwAAAGIBAAJzBgIS0hYIQvwmDm//NBSZ/xYH
144 | P/8HQ2f/C26q/whMdv8BTYz5Ah4z+jlrIv9QlzP/JUcY/xYqDv8vWR7/FywP/wcFAv9PMRj/jVgr/zUh
145 | EP+FUyj/75VI/5BaK/8AAACaCQUCAAMBCAADAQoVAQAEigYCEtIPBi3wGwpP/gsEH/4jDWb/ShzY/0wc
146 | 3/9MHOH/Hwpb/wlekf8Rqf//EKL8/wVwxP8BIz//FyoM/xguEP8IDwX/BgsE/x45E/8lRxj/GxcK/3ZJ
147 | I/9RMhj/DAgE/x4TCf9MLxf/OyUS/wMCAYkAAAAAAAAAAAAAAHQXCEL/Ohar/0Uay/9LHNv/HgtX/ywQ
148 | gf9MHOD/Sxzc/0sc3f8fCln/CV2P/xGm//8Rovr/BXTI/wAmRv8aLw7/Om4l/yZHGP8dOBP/UZk0/0OC
149 | LP8tJRD/3IlC/+eQRv9EKxX/glEn/6RmMv89JhL/AQEAfgAAAAAAAAAAAAAAmi0Rg/9NHOP/Sxzd/0sc
150 | 3f8eC1f/LBCA/0wc4P9LHNz/Sxzd/x8KWv8JXZD/Eab//xCf9/8Dabv/Ah4z/zlqIv9VoTf/L1ge/yE/
151 | Ff9TnTX/Q4Es/ywkEP/ciEL/75VI/08xGP+iZTH/+5xL/45YK/8AAACaAAAAAAYCEgAAAACaLRGE/0wc
152 | 4P9LHNz/Sxzd/x4LV/8sEID/TBzh/0wc3/9MHN7/HQlS/wlZh/8RqP//EKD5/wNpu/8CHjP/Omwj/1Sg
153 | N/8sVBz/HjkT/0WDLP8pTxr/Eg4G/4tVKP/KfTz/RywV/5xhL//7nEv/kVos/wAAAJoQCQMABgISAAAA
154 | AJotEYT/TBzg/0sc3P9MHN7/HgtX/yoQfP9IG9P/PRez/yoQfP8HAhT/Ax0s/wtooP8NhtH/A2W0/wIf
155 | Nv8nSRX/K1Ma/xAdC/8ECAL/BQ0C/zEzMf97enr/T01L/zovJv8kHxv/PCgW/4pVJ/9lPh7/AQEAlQAA
156 | AAAGAhIAAAAAmi4Rhv9NHeP/Shza/0AYvP8RBjH/DAQi/xQHOv8RBjP/GAlG/woDHP8DHy//BTFM/wQj
157 | Nv8BLlP/AD1x/xUpN/9VWFv/e3p6/3BwcP9EQ0T/NjY2/1NTU/97e3v/lpaW/7CwsP+FhYX/U1JS9BsY
158 | FsgFAwBBAAAAAAAAAAAAAAGPHQtU/ykQev8aCkv/DwYs/wIBBv8TBzj/NhSf/0MZxf9KHNn/HgpY/wlc
159 | jv8Rofn/D4zZ/wt5wP8CXKT/DV2h/zd2rf8rOUf/RkdI/3NxcP+Ih4f/bGxs/yMjI/8ODg7/KCgo+j8/
160 | P8XJyMhFmpiXEQAAAAAsIBQAAAAAAAEAA2gIAxf/HQtV/y4Rhf88Fq//GAlG/ysQf/9NHOP/Sxzd/0sc
161 | 3f8fCln/CV2P/xGm//8RpP7/Eab//wdIcf8GVIf/B4be/wNosv8ARn//ACtR/g0ZJNsbGhrRDAwMvQAA
162 | AIYAAABLAAAAGgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkicPc/9MHN7/TBzg/0wc4P8eC1j/LBCA/0wc
163 | 4P9LHNz/Sxzd/x8KWf8JXY//Eab//xGj/P8RpP7/B0Rp/wlcjf8Rp///EaP8/w+e+P8Kfcr/BluXcQAA
164 | AA8AAAAKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYCEgAAAACaLRGF/0wc4P9LHNz/Sxzd/x4L
165 | V/8sEID/TBzg/0sc3P9MHN7/Hwpa/wlekP8Rpv//EaP8/xGk/v8HRGn/CVuN/xGm//8Ro/z/EaX//whN
166 | d/8BCQ1xAQUIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgISAAAAAJotEYT/TBzg/0sc
167 | 3P9LHN3/HgtY/ywQgf9NHOP/Sxzc/0IYwv8SBDT/BT5f/w+Z7P8RpP3/Eaf//wdEaf8JXI3/Eab//xGj
168 | /P8RpP7/B0Zt/wAAAHEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAhIAAAAAmi0R
169 | hP9NHOH/TBzg/0sc3P8ZCUv/GwpP/y8Siv8fDVj/HBQ1/0hHSv87P0L/Di5B/wlIb/8LaKH/AyQ4/whS
170 | gP8Rp///EaX//xGl//8HRm3/AAAAcQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIC
171 | CwAAAACaKxB9/0QZyP80Ep7/Hwlj/x4aKP8bGxz/BQUG/05OTf+nqKf/4uLj/9ra2v+YmJf/Ozo5/wMD
172 | BP8jIyP/ESUx/wVTgv8Le7//EJbp/wdCZv8AAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
173 | AAAAAAAAAAAAAAAAAHsJAxz/Dgck/y8tNf9tbW3/vr6+/8PDw/9paWn/MDAw/y4uLv9WVlb/T09P/ygo
174 | KP83Nzf/eHh4/8/Q0P+trq7/YGFh/yIqL/8DHSz/AQ8X+QAAAFMAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
175 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAGgAAAJUDAwPYLi4v9mxsbP+fn5//l5eX/2FhYf8vLy//Li4u/1hY
176 | WP9RUVH/KSkp/zc3N/9sbGz/n5+f/5iYmP9hYWH/IyMj8gEBAdEAAAB+AAAADAAAAAAAAAAAAAAAAAAA
177 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAABkAAABDAAAAfAUFBbUDAwPiAwMD+kFB
178 | Qf+ampr/ysrK/8XFxf+Li4v/MDAw/wAAAPcEBATbBAQErAAAAHIAAAA7AAAAFAAAAAIAAAAAAAAAAAAA
179 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAA
180 | ACMAAABSAQEBjA0NDcIdHR3eGxsb2woKCrkAAACBAAAASAAAABwAAAAEAAAAAAAAAAAAAAAAAAAAAAAA
181 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
182 | AAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAB0AAAAbAAAACQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
183 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
184 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
185 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
186 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
187 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
188 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
189 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
190 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
191 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
192 | AAAAAAAAAAAAAAAAAAAAAAAA////////////////////////+D///4AD//8AAf/CAAH+AAABwAAAAYAA
193 | AAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAOAAAAPgAAAf4AAAf+AAAH/gAAB/4AAAf+AAAH/gAAB/8AA
194 | A//8AD///8P///////////////////////8=
195 |
196 |
197 |
--------------------------------------------------------------------------------
/source/MainWindow.vb:
--------------------------------------------------------------------------------
1 | Imports System.CodeDom.Compiler
2 | Imports System.ComponentModel
3 | Imports System.IO
4 | Imports System.Runtime.InteropServices
5 | Imports System.Text
6 | Imports Microsoft.CSharp
7 |
8 | Public Class MainWindow
9 |
10 | Private fileSpecified As Boolean = False
11 |
12 | Private Sub btnCompile_Click(sender As Object, e As EventArgs) Handles btnCompile.Click
13 | Dim batFilePath As String = batPath.Text.Trim()
14 |
15 | If Not fileSpecified Then
16 | ShowStatus(False, "No Batch file selected!")
17 | Return
18 | End If
19 |
20 | If Not File.Exists(batFilePath) Then
21 | ShowStatus(False, "Batch file not found!")
22 | Return
23 | End If
24 |
25 | If Not ConsoleRadioButton.Checked AndAlso Not HiddenRadioButton.Checked Then
26 | ShowStatus(False, "Select an application type!")
27 | Return
28 | End If
29 |
30 | If Not i386RadioButton.Checked AndAlso Not AMD64RadioButton.Checked Then
31 | ShowStatus(False, "Select an architecture!")
32 | Return
33 | End If
34 |
35 | Dim saveFileDialog As New SaveFileDialog With {
36 | .Filter = "Application (*.exe)|*.exe|Application (*.com)|*.com",
37 | .Title = "Choose a location to save the compiled .exe file",
38 | .FileName = IO.Path.GetFileNameWithoutExtension(batFilePath) & ".exe"
39 | }
40 |
41 | saveFileDialog.OverwritePrompt = False
42 |
43 | ' Show the file selection dialog
44 | If saveFileDialog.ShowDialog() = DialogResult.OK Then
45 | Dim exeSavePath As String = saveFileDialog.FileName
46 |
47 | If Not String.IsNullOrWhiteSpace(exeSavePath) Then
48 | Dim architecture As String = If(i386RadioButton.Checked, "x86", "x64")
49 |
50 | CompileCSharpCode(My.Resources.stub, exeSavePath, architecture, HiddenRadioButton.Checked, batFilePath)
51 | End If
52 | End If
53 | FixBugWithComboBoxFocus()
54 | End Sub
55 |
56 | Private Sub ShowStatus(isSuccessful As Boolean, labelText As String)
57 | operationStatusLabel.Text = labelText
58 |
59 | If Not isSuccessful Then
60 | operationStatusLabel.AlertStyle = BonfireAlertBox.Style._Error
61 | Else
62 | operationStatusLabel.AlertStyle = BonfireAlertBox.Style._Success
63 | End If
64 |
65 | operationStatusLabel.Visible = True
66 | End Sub
67 |
68 | Private Sub CompileCSharpCode(csharpCode As String, exeSavePath As String, architecture As String, hideWindow As Boolean, batFilePath As String)
69 | Try
70 | FixBugWithComboBoxFocus()
71 |
72 | ' Create a C# code provider
73 | Dim provider As New CSharpCodeProvider()
74 |
75 | ' /* {IS_HIDDEN} */
76 | csharpCode = csharpCode.Replace("/* {IS_HIDDEN} */", If(hideWindow, "true", "false"))
77 |
78 | ' /* {APP_ID} */
79 | csharpCode = csharpCode.Replace("/* {APP_ID} */", """" & Guid.NewGuid().ToString("N").Substring(0, 8) & """")
80 |
81 | ' /* {FS_PROTECTION} */
82 | csharpCode = csharpCode.Replace("/* {FS_PROTECTION} */", If(fsProtectionCheckBox.Checked, "FileAttributes.System", "0x00"))
83 |
84 | ' Compilation parameters
85 | Dim compileParams As New CompilerParameters With {
86 | .GenerateExecutable = True,
87 | .OutputAssembly = exeSavePath
88 | }
89 |
90 | Dim tmpResCompressedFile As String = Path.Combine(Path.GetTempPath(), "embeddedBatchScript")
91 |
92 | Dim batchSource As String = IO.File.ReadAllText(batFilePath)
93 |
94 | batchSource = My.Resources.headers.Replace(":: {SOURCE}", batchSource)
95 |
96 | If removeCommentsCheckBox.Checked Then
97 | batchSource = RemoveBatchComments(batchSource)
98 | End If
99 |
100 | If trimUnnecessaryCharsCheckBox.Checked Then
101 | batchSource = TrimBatchUnnecessaryCharacters(batchSource)
102 | End If
103 |
104 | Select Case obfuscationModeComboBox.SelectedIndex
105 | Case 0
106 | Case 1
107 | batchSource = ObfuscateBatchLabels(batchSource, False)
108 | Case 2
109 | batchSource = ObfuscateBatchLabels(batchSource, True)
110 | End Select
111 |
112 | If replaceCommandsCheckBox.Checked Then
113 | batchSource = ObfuscateBatchCalls(batchSource)
114 | End If
115 |
116 | File.WriteAllBytes(tmpResCompressedFile, Compress(Encoding.GetEncoding(866).GetBytes(batchSource)))
117 |
118 | compileParams.EmbeddedResources.Add(tmpResCompressedFile)
119 |
120 | ' Do not save temporary files after compilation
121 | compileParams.TempFiles.KeepFiles = False
122 |
123 | ' Add reference to libraries
124 | compileParams.ReferencedAssemblies.Add("System.dll")
125 | compileParams.ReferencedAssemblies.Add("System.Windows.Forms.dll")
126 |
127 | ' Set the compiler option to specify the architecture
128 | compileParams.CompilerOptions = If(architecture = "x86", "/platform:x86", "/platform:x64")
129 |
130 | ' Set the target type to Windows if the window should be hidden
131 | If hideWindow Then
132 | compileParams.CompilerOptions &= " /target:winexe"
133 | End If
134 |
135 | If provider.CompileAssemblyFromSource(compileParams, csharpCode).Errors.Count > 0 Then
136 | Dim err As CompilerError = provider.CompileAssemblyFromSource(compileParams, csharpCode).Errors(0)
137 | ' show error in message box
138 | MessageBox.Show(err.ErrorText, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
139 | ShowStatus(False, "An error occurred!")
140 | Else
141 | ShowStatus(True, "File saved as " & Path.GetFileName(exeSavePath))
142 | End If
143 |
144 | IO.File.Delete(tmpResCompressedFile)
145 | Catch ex As Exception
146 | ShowStatus(False, ex.Message)
147 | End Try
148 | End Sub
149 |
150 | Private Sub btnSelectBat_batPath_Click(sender As Object, e As EventArgs) Handles btnSelectBat.Click, batPath.Click
151 | Dim openFileDialog As New OpenFileDialog With {
152 | .Filter = "Batch Files (*.bat; *.cmd)|*.bat;*.cmd|All Files (*.*)|*.*",
153 | .Title = "Choose a .bat or .cmd file to compile"
154 | }
155 |
156 | If openFileDialog.ShowDialog() = DialogResult.OK Then
157 | OpenFile(openFileDialog.FileName)
158 | End If
159 |
160 | FixBugWithComboBoxFocus()
161 | End Sub
162 |
163 |
164 | Const gitUrl = "https://github.com/DosX-dev/BatchToApp"
165 | Private Sub gitLink_LinkClicked(sender As Object, e As LinkLabelLinkClickedEventArgs) Handles gitLink.LinkClicked
166 | Try
167 | Process.Start(gitUrl)
168 | Catch ex As Exception
169 | Process.Start("explorer.exe", gitUrl)
170 | End Try
171 | End Sub
172 |
173 | Private Sub batPath_DragDrop(sender As Object, e As DragEventArgs) Handles batPath.DragEnter, Me.DragEnter
174 | Try
175 | OpenFile(e.Data.GetData(DataFormats.FileDrop)(0))
176 | Catch ex As Exception
177 | MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
178 | End Try
179 | End Sub
180 |
181 | Private Sub MainWindow_Load(sender As Object, e As EventArgs) Handles MyBase.Load
182 | If File.Exists(Command()) Then
183 | OpenFile(Command())
184 | End If
185 |
186 | lblVersion.Text = lblVersion.Text.Replace("%s", GetTrimmedVersion())
187 | helpRichText.Rtf = My.Resources.help
188 | End Sub
189 |
190 | Function GetTrimmedVersion()
191 | Dim Out = Application.ProductVersion
192 | While Out.EndsWith(".0")
193 | Out = Out.Substring(0, Out.Length - 2)
194 | End While
195 | Return Out
196 | End Function
197 |
198 | Sub OpenFile(filePath As String)
199 | batPath.TextAlign = ContentAlignment.MiddleLeft
200 | batPath.Text = filePath
201 | fileSpecified = True
202 | End Sub
203 |
204 | Private Sub FixBugWithComboBoxFocus() Handles Me.Activated, Me.Deactivate, Me.GotFocus
205 | btnCompile.Focus()
206 | End Sub
207 |
208 | Private Sub helpRichText_MouseDown(sender As Object, e As MouseEventArgs) Handles helpRichText.MouseDown
209 | btnCompile.Focus()
210 | End Sub
211 | End Class
212 |
--------------------------------------------------------------------------------
/source/My Project/Application.Designer.vb:
--------------------------------------------------------------------------------
1 | '------------------------------------------------------------------------------
2 | '
3 | ' Этот код создан программой.
4 | ' Исполняемая версия:4.0.30319.42000
5 | '
6 | ' Изменения в этом файле могут привести к неправильной работе и будут потеряны в случае
7 | ' повторной генерации кода.
8 | '
9 | '------------------------------------------------------------------------------
10 |
11 | Option Strict On
12 | Option Explicit On
13 |
14 |
15 | Namespace My
16 |
17 | 'ПРИМЕЧАНИЕ. Этот файл создан автоматически; не изменяйте его самостоятельно. Для внесения изменений
18 | ' или, если в ходе сборки обнаружены ошибки в этом файле, перейдите в конструктор проектов
19 | ' (перейдите к свойствам проекта или дважды щелкните узел "Мой проект" в
20 | ' обозревателе решений), и внесите изменения на вкладке "Приложение".
21 | '
22 | Partial Friend Class MyApplication
23 |
24 | _
25 | Public Sub New()
26 | MyBase.New(Global.Microsoft.VisualBasic.ApplicationServices.AuthenticationMode.Windows)
27 | Me.IsSingleInstance = false
28 | Me.EnableVisualStyles = true
29 | Me.SaveMySettingsOnExit = true
30 | Me.ShutDownStyle = Global.Microsoft.VisualBasic.ApplicationServices.ShutdownMode.AfterMainFormCloses
31 | End Sub
32 |
33 | _
34 | Protected Overrides Sub OnCreateMainForm()
35 | Me.MainForm = Global.BatchToApp.MainWindow
36 | End Sub
37 |
38 | _
39 | Protected Overrides Function OnInitialize(ByVal commandLineArgs As System.Collections.ObjectModel.ReadOnlyCollection(Of String)) As Boolean
40 | Me.MinimumSplashScreenDisplayTime = 0
41 | Return MyBase.OnInitialize(commandLineArgs)
42 | End Function
43 | End Class
44 | End Namespace
45 |
--------------------------------------------------------------------------------
/source/My Project/Application.myapp:
--------------------------------------------------------------------------------
1 |
2 |
3 | true
4 | MainWindow
5 | false
6 | 0
7 | true
8 | 0
9 | 0
10 | true
11 | false
12 |
--------------------------------------------------------------------------------
/source/My Project/AssemblyInfo.vb:
--------------------------------------------------------------------------------
1 | Imports System
2 | Imports System.Reflection
3 | Imports System.Runtime.InteropServices
4 |
5 | ' Общие сведения об этой сборке предоставляются следующим набором
6 | ' атрибутов. Отредактируйте значения этих атрибутов, чтобы изменить
7 | ' связанные со сборкой.
8 |
9 | ' Проверьте значения атрибутов сборки
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 | 'Следующий GUID служит для идентификации библиотеки типов, если этот проект будет видимым для COM
21 |
22 |
23 | ' Сведения о версии сборки состоят из следующих четырех значений:
24 | '
25 | ' Основной номер версии
26 | ' Дополнительный номер версии
27 | ' Номер сборки
28 | ' Редакция
29 | '
30 | ' Можно задать все значения или принять номера сборки и редакции по умолчанию
31 | ' используя "*", как показано ниже:
32 | '
33 |
34 |
35 |
36 |
--------------------------------------------------------------------------------
/source/My Project/Resources.Designer.vb:
--------------------------------------------------------------------------------
1 | '------------------------------------------------------------------------------
2 | '
3 | ' Этот код создан программой.
4 | ' Исполняемая версия:4.0.30319.42000
5 | '
6 | ' Изменения в этом файле могут привести к неправильной работе и будут потеряны в случае
7 | ' повторной генерации кода.
8 | '
9 | '------------------------------------------------------------------------------
10 |
11 | Option Strict On
12 | Option Explicit On
13 |
14 | Imports System
15 |
16 | Namespace My.Resources
17 |
18 | 'Этот класс создан автоматически классом StronglyTypedResourceBuilder
19 | 'с помощью такого средства, как ResGen или Visual Studio.
20 | 'Чтобы добавить или удалить член, измените файл .ResX и снова запустите ResGen
21 | 'с параметром /str или перестройте свой проект VS.
22 | '''
23 | ''' Класс ресурса со строгой типизацией для поиска локализованных строк и т.д.
24 | '''
25 | _
29 | Friend Module Resources
30 |
31 | Private resourceMan As Global.System.Resources.ResourceManager
32 |
33 | Private resourceCulture As Global.System.Globalization.CultureInfo
34 |
35 | '''
36 | ''' Возвращает кэшированный экземпляр ResourceManager, использованный этим классом.
37 | '''
38 | _
39 | Friend ReadOnly Property ResourceManager() As Global.System.Resources.ResourceManager
40 | Get
41 | If Object.ReferenceEquals(resourceMan, Nothing) Then
42 | Dim temp As Global.System.Resources.ResourceManager = New Global.System.Resources.ResourceManager("BatchToApp.Resources", GetType(Resources).Assembly)
43 | resourceMan = temp
44 | End If
45 | Return resourceMan
46 | End Get
47 | End Property
48 |
49 | '''
50 | ''' Перезаписывает свойство CurrentUICulture текущего потока для всех
51 | ''' обращений к ресурсу с помощью этого класса ресурса со строгой типизацией.
52 | '''
53 | _
54 | Friend Property Culture() As Global.System.Globalization.CultureInfo
55 | Get
56 | Return resourceCulture
57 | End Get
58 | Set
59 | resourceCulture = value
60 | End Set
61 | End Property
62 |
63 | '''
64 | ''' Ищет локализованную строку, похожую на @if not "%~dp0" == "%TEMP%\" goto b2a_ExitProcess
65 | '''@shift /0
66 | '''
67 | ''':: {SOURCE}
68 | '''
69 | ''':b2a_ExitProcess.
70 | '''
71 | Friend ReadOnly Property headers() As String
72 | Get
73 | Return ResourceManager.GetString("headers", resourceCulture)
74 | End Get
75 | End Property
76 |
77 | '''
78 | ''' Ищет локализованную строку, похожую на {\rtf1\adeflang1025\ansi\ansicpg1251\uc1\adeff0\deff0\stshfdbch31505\stshfloch31506\stshfhich31506\stshfbi0\deflang1049\deflangfe1049\themelang1049\themelangfe0\themelangcs0{\fonttbl{\f0\fbidi \froman\fcharset204\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\f1\fbidi \fswiss\fcharset204\fprq2{\*\panose 020b0604020202020204}Arial;}
79 | '''{\f2\fbidi \fmodern\fcharset204\fprq1{\*\panose 02070309020205020404}Courier New;}{\f3\fbidi \froman\fcharset2\fprq2{\*\panose 05050102010706020507}Symbol;}{\f10\fbidi [остаток строки не уместился]";.
80 | '''
81 | Friend ReadOnly Property help() As String
82 | Get
83 | Return ResourceManager.GetString("help", resourceCulture)
84 | End Get
85 | End Property
86 |
87 | '''
88 | ''' Поиск локализованного ресурса типа System.Drawing.Bitmap.
89 | '''
90 | Friend ReadOnly Property logo() As System.Drawing.Bitmap
91 | Get
92 | Dim obj As Object = ResourceManager.GetObject("logo", resourceCulture)
93 | Return CType(obj,System.Drawing.Bitmap)
94 | End Get
95 | End Property
96 |
97 | '''
98 | ''' Ищет локализованную строку, похожую на using System;
99 | '''using System.IO;
100 | '''using System.Diagnostics;
101 | '''using System.IO.Compression;
102 | '''using System.Reflection;
103 | '''
104 | '''class GeneratedWithBatchToApp { }
105 | '''
106 | '''public class Program {
107 | ''' private static string appId = /* {APP_ID} */;
108 | '''
109 | ''' public static void Main() {
110 | ''' string cmdTemp = Path.Combine(Path.GetTempPath(), "b2a." + Assembly.GetExecutingAssembly().GetName().Name + "." + appId + ".cmd");
111 | '''
112 | ''' if (File.Exists(cmdTemp)) {
113 | ''' File.SetAttributes(cmdTemp, FileAttributes.Normal);
114 | ''' [остаток строки не уместился]";.
115 | '''
116 | Friend ReadOnly Property stub() As String
117 | Get
118 | Return ResourceManager.GetString("stub", resourceCulture)
119 | End Get
120 | End Property
121 | End Module
122 | End Namespace
123 |
--------------------------------------------------------------------------------
/source/My Project/Resources.resx:
--------------------------------------------------------------------------------
1 |
2 |
3 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 |
107 |
108 |
109 | text/microsoft-resx
110 |
111 |
112 | 2.0
113 |
114 |
115 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
116 |
117 |
118 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
119 |
120 |
121 |
122 | ..\logo.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
123 |
124 |
125 | ..\Resources\help.rtf;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;windows-1251
126 |
127 |
128 | ..\Builder\headers.cmd;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;windows-1251
129 |
130 |
131 | ..\Builder\stub.cs;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;windows-1251
132 |
133 |
--------------------------------------------------------------------------------
/source/My Project/Settings.Designer.vb:
--------------------------------------------------------------------------------
1 | '------------------------------------------------------------------------------
2 | '
3 | ' This code was generated by a tool.
4 | ' Runtime Version:4.0.30319.42000
5 | '
6 | ' Changes to this file may cause incorrect behavior and will be lost if
7 | ' the code is regenerated.
8 | '
9 | '------------------------------------------------------------------------------
10 |
11 | Option Strict On
12 | Option Explicit On
13 |
14 |
15 | Namespace My
16 |
17 | _
20 | Partial Friend NotInheritable Class MySettings
21 | Inherits Global.System.Configuration.ApplicationSettingsBase
22 |
23 | Private Shared defaultInstance As MySettings = CType(Global.System.Configuration.ApplicationSettingsBase.Synchronized(New MySettings), MySettings)
24 |
25 | #Region "My.Settings Auto-Save Functionality"
26 | #If _MyType = "WindowsForms" Then
27 | Private Shared addedHandler As Boolean
28 |
29 | Private Shared addedHandlerLockObject As New Object
30 |
31 | _
32 | Private Shared Sub AutoSaveSettings(ByVal sender As Global.System.Object, ByVal e As Global.System.EventArgs)
33 | If My.Application.SaveMySettingsOnExit Then
34 | My.Settings.Save()
35 | End If
36 | End Sub
37 | #End If
38 | #End Region
39 |
40 | Public Shared ReadOnly Property [Default]() As MySettings
41 | Get
42 |
43 | #If _MyType = "WindowsForms" Then
44 | If Not addedHandler Then
45 | SyncLock addedHandlerLockObject
46 | If Not addedHandler Then
47 | AddHandler My.Application.Shutdown, AddressOf AutoSaveSettings
48 | addedHandler = True
49 | End If
50 | End SyncLock
51 | End If
52 | #End If
53 | Return defaultInstance
54 | End Get
55 | End Property
56 | End Class
57 | End Namespace
58 |
59 | Namespace My
60 |
61 | _
64 | Friend Module MySettingsProperty
65 |
66 | _
67 | Friend ReadOnly Property Settings() As Global.BatchToApp.My.MySettings
68 | Get
69 | Return Global.BatchToApp.My.MySettings.Default
70 | End Get
71 | End Property
72 | End Module
73 | End Namespace
74 |
--------------------------------------------------------------------------------
/source/My Project/Settings.settings:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/source/Obfuscator.vb:
--------------------------------------------------------------------------------
1 | Imports System.Text
2 |
3 | Module Obfuscator
4 | Private rnd As New Random()
5 | Private labelMap As New Dictionary(Of String, String)(StringComparer.OrdinalIgnoreCase)
6 |
7 | Function ObfuscateBatchLabels(source As String, addFake As Boolean) As String
8 | Dim regex As New Text.RegularExpressions.Regex("(?<=^|\s):(\w+)", Text.RegularExpressions.RegexOptions.IgnoreCase)
9 | Dim matches = regex.Matches(source)
10 |
11 | For Each match As Text.RegularExpressions.Match In matches
12 | Dim originalLabel As String = match.Value.Substring(1)
13 |
14 | If originalLabel.ToLower().StartsWith("eof") Then
15 | labelMap(originalLabel) = "eof"
16 | ElseIf Not labelMap.ContainsKey(originalLabel) Then
17 | labelMap(originalLabel) = GetObfuscatedName()
18 | End If
19 | Next
20 |
21 | Dim obfuscatedSource As String = regex.Replace(source, AddressOf ReplaceLabel)
22 | obfuscatedSource = ReplaceGotoAndCallReferences(obfuscatedSource)
23 |
24 | If addFake Then obfuscatedSource = AddFakeLabels(obfuscatedSource)
25 |
26 | Return obfuscatedSource
27 | End Function
28 |
29 | Function GetObfuscatedName() As String
30 | Return "label_0x" & Guid.NewGuid().ToString("N").Substring(0, 8)
31 | End Function
32 |
33 | Private Function ReplaceLabel(match As Text.RegularExpressions.Match) As String
34 | Dim labelName As String = labelMap(match.Value.Substring(1))
35 |
36 | Return ":" & labelName
37 | End Function
38 |
39 | Private Function ReplaceGotoAndCallReferences(source As String) As String
40 | Dim output As New System.Text.StringBuilder()
41 | Dim lines() As String = source.Split(New String() {Environment.NewLine}, StringSplitOptions.None)
42 |
43 | For Each line As String In lines
44 | Dim gotoRegex As New Text.RegularExpressions.Regex("\bgoto\s+(\w+)\b", Text.RegularExpressions.RegexOptions.IgnoreCase)
45 | line = gotoRegex.Replace(line, AddressOf ReplaceGotoMatch)
46 |
47 | ' Обновленное регулярное выражение для call
48 | Dim callRegex As New Text.RegularExpressions.Regex("\bcall\s*\(?\s*:(\w+)\s*", Text.RegularExpressions.RegexOptions.IgnoreCase)
49 | line = callRegex.Replace(line, AddressOf ReplaceCallMatch)
50 |
51 | output.AppendLine(line)
52 | Next
53 |
54 | Return output.ToString()
55 | End Function
56 |
57 | Private Function ReplaceGotoMatch(match As Text.RegularExpressions.Match) As String
58 | If labelMap.ContainsKey(match.Groups(1).Value) Then
59 | Return "goto " & ObfuscateString(labelMap(match.Groups(1).Value)).Replace("^", "^" & vbLf)
60 | End If
61 | Return match.Value
62 | End Function
63 |
64 | Private Function ReplaceCallMatch(match As Text.RegularExpressions.Match) As String
65 | If labelMap.ContainsKey(match.Groups(1).Value) Then
66 | Return "call :" & labelMap(match.Groups(1).Value) & " "
67 | End If
68 | Return match.Value
69 | End Function
70 |
71 | Private Function AddFakeLabels(source As String) As String
72 | Dim output As New System.Text.StringBuilder()
73 | Dim lines() As String = source.Split(New String() {Environment.NewLine}, StringSplitOptions.None)
74 |
75 | For Each line As String In lines
76 | output.AppendLine(line)
77 | If Not String.IsNullOrWhiteSpace(line) AndAlso Not line.StartsWith(":") Then
78 | Dim fakeLabelsCount As Integer = rnd.Next(2, 4)
79 | For i As Integer = 1 To fakeLabelsCount
80 | output.AppendLine(":" & GetObfuscatedName())
81 | Next
82 | End If
83 | Next
84 |
85 | Return output.ToString()
86 | End Function
87 |
88 | Private operatorMap As New Dictionary(Of String, String)
89 | Public Function ObfuscateBatchCalls(source As String) As String
90 | Dim mutationBlock As New StringBuilder,
91 | mutationBlockLabel As String = GetObfuscatedName()
92 |
93 | mutationBlock.AppendLine("@goto " & ObfuscateString(mutationBlockLabel))
94 |
95 | Dim randomBytes(rnd.Next(200, 250)) As Byte
96 | rnd.NextBytes(randomBytes)
97 | mutationBlock.AppendLine(Encoding.Default.GetString(randomBytes))
98 |
99 | mutationBlock.AppendLine(":" & mutationBlockLabel & vbLf)
100 |
101 | Dim closingBracketVar As String = "_" & GetObfuscatedOperatorName()
102 | mutationBlock.AppendLine("@set " & ObfuscateString(closingBracketVar) & "=^)")
103 |
104 | source = mutationBlock.ToString() & vbCrLf & source
105 |
106 | Dim operators As String() = {"if", "goto", "call", "for", "start", "dir", "echo", "set", "exit", "pause", "setlocal", "endlocal", "cls", "title",
107 | "assoc", "attrib", "break", "cacls", "cd", "chcp", "chdir", "choice", "clip", "color", "comp", "compact", "convert",
108 | "copy", "date", "del", "diskcomp", "diskcopy", "doskey", "fc", "find", "findstr", "format", "fsutil", "ftp",
109 | "getmac", "hostname", "label", "md", "mkdir", "mode", "more", "move", "net", "netstat", "nslookup", "path",
110 | "ping", "popd", "pushd", "rd", "ren", "rename", "replace", "rmdir", "robocopy", "sc", "schtasks", "shutdown",
111 | "sort", "subst", "systeminfo", "taskkill", "tasklist", "time", "timeout", "tree", "type", "ver", "verify",
112 | "vol", "xcopy", "shift", "bcdedit", "cipher", "cleanmgr", "driverquery", "gpupdate", "ipconfig", "nlsfunc",
113 | "openfiles", "pathping", "powercfg", "print", "recover", "relog", "remsvc", "sfc", "shadow", "shutdown", "sfc",
114 | "tzutil", "vssadmin", "wbadmin", "wevtutil"}
115 |
116 |
117 | Dim operatorMap As New Dictionary(Of String, String)()
118 |
119 | For Each op As String In operators
120 | operatorMap(op) = "_" & GetObfuscatedOperatorName()
121 | Next
122 |
123 | Dim output As New System.Text.StringBuilder()
124 | Dim lines() As String = source.Split(New String() {Environment.NewLine}, StringSplitOptions.None)
125 |
126 | For Each line As String In lines
127 | For Each op As String In operators
128 | Dim regex As New Text.RegularExpressions.Regex("^\s*@?" & op & "\b", Text.RegularExpressions.RegexOptions.IgnoreCase)
129 | line = regex.Replace(line, Function(m) If(m.Value.StartsWith("@"), "@", String.Empty) & "%" & operatorMap(op) & "%")
130 | Next
131 |
132 | Dim closingBracketVarPattern As String = "%" & closingBracketVar & "%"
133 |
134 | If line = ")" Then
135 | line = closingBracketVarPattern
136 | ElseIf line.ToLower().Replace(" ", String.Empty) = ")else(" Then
137 | line = ") " & ObfuscateString("else") & " ("
138 | End If
139 |
140 | output.AppendLine(line)
141 | Next
142 |
143 | Dim operatorDeclarations As New System.Text.StringBuilder()
144 | For Each kvp As KeyValuePair(Of String, String) In operatorMap
145 | If source.ToLower().Contains(kvp.Key) Then
146 | operatorDeclarations.AppendLine("%__" & Guid.NewGuid().ToString("N").Substring(0, 8) & "%" & Space(rnd.Next(0, 8)) & "@" & Space(rnd.Next(0, 8)) & ObfuscateString("set") & " " & ObfuscateString(kvp.Value).Replace("^", "^" & vbLf) & "=^" & vbLf & ObfuscateString(kvp.Key))
147 | End If
148 | Next
149 |
150 | Return operatorDeclarations.ToString() & Environment.NewLine & output.ToString()
151 | End Function
152 |
153 | Private Function ObfuscateString(input As String) As String
154 | Return String.Join("", input.Select(Function(c) "^" & c & "%os:~" & rnd.Next(20, 9999) & ", -" & rnd.Next(20, 9999) & "%"))
155 | End Function
156 |
157 | Private Function GetObfuscatedOperatorName() As String
158 | Return Guid.NewGuid().ToString("N").Substring(0, 8)
159 | End Function
160 | End Module
161 |
--------------------------------------------------------------------------------
/source/Resources/help.rtf:
--------------------------------------------------------------------------------
1 | {\rtf1\adeflang1025\ansi\ansicpg1251\uc1\adeff0\deff0\stshfdbch31505\stshfloch31506\stshfhich31506\stshfbi0\deflang1049\deflangfe1049\themelang1049\themelangfe0\themelangcs0{\fonttbl{\f0\fbidi \froman\fcharset204\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\f1\fbidi \fswiss\fcharset204\fprq2{\*\panose 020b0604020202020204}Arial;}
2 | {\f2\fbidi \fmodern\fcharset204\fprq1{\*\panose 02070309020205020404}Courier New;}{\f3\fbidi \froman\fcharset2\fprq2{\*\panose 05050102010706020507}Symbol;}{\f10\fbidi \fnil\fcharset2\fprq2{\*\panose 05000000000000000000}Wingdings;}
3 | {\f34\fbidi \froman\fcharset204\fprq2{\*\panose 00000000000000000000}Cambria Math;}{\f63\fbidi \fmodern\fcharset204\fprq1{\*\panose 020b0609020204030204}Consolas;}
4 | {\flomajor\f31500\fbidi \froman\fcharset204\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\fdbmajor\f31501\fbidi \froman\fcharset204\fprq2{\*\panose 02020603050405020304}Times New Roman;}
5 | {\fhimajor\f31502\fbidi \fswiss\fcharset204\fprq2{\*\panose 020f0302020204030204}Calibri Light;}{\fbimajor\f31503\fbidi \froman\fcharset204\fprq2{\*\panose 02020603050405020304}Times New Roman;}
6 | {\flominor\f31504\fbidi \froman\fcharset204\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\fdbminor\f31505\fbidi \froman\fcharset204\fprq2{\*\panose 02020603050405020304}Times New Roman;}
7 | {\fhiminor\f31506\fbidi \fswiss\fcharset204\fprq2{\*\panose 020f0502020204030204}Calibri;}{\fbiminor\f31507\fbidi \froman\fcharset204\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\f893\fbidi \froman\fcharset0\fprq2 Times New Roman;}
8 | {\f891\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\f894\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\f895\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\f896\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}
9 | {\f897\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\f898\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\f899\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\f903\fbidi \fswiss\fcharset0\fprq2 Arial;}
10 | {\f901\fbidi \fswiss\fcharset238\fprq2 Arial CE;}{\f904\fbidi \fswiss\fcharset161\fprq2 Arial Greek;}{\f905\fbidi \fswiss\fcharset162\fprq2 Arial Tur;}{\f906\fbidi \fswiss\fcharset177\fprq2 Arial (Hebrew);}
11 | {\f907\fbidi \fswiss\fcharset178\fprq2 Arial (Arabic);}{\f908\fbidi \fswiss\fcharset186\fprq2 Arial Baltic;}{\f909\fbidi \fswiss\fcharset163\fprq2 Arial (Vietnamese);}{\f913\fbidi \fmodern\fcharset0\fprq1 Courier New;}
12 | {\f911\fbidi \fmodern\fcharset238\fprq1 Courier New CE;}{\f914\fbidi \fmodern\fcharset161\fprq1 Courier New Greek;}{\f915\fbidi \fmodern\fcharset162\fprq1 Courier New Tur;}{\f916\fbidi \fmodern\fcharset177\fprq1 Courier New (Hebrew);}
13 | {\f917\fbidi \fmodern\fcharset178\fprq1 Courier New (Arabic);}{\f918\fbidi \fmodern\fcharset186\fprq1 Courier New Baltic;}{\f919\fbidi \fmodern\fcharset163\fprq1 Courier New (Vietnamese);}{\f1233\fbidi \froman\fcharset0\fprq2 Cambria Math;}
14 | {\f1231\fbidi \froman\fcharset238\fprq2 Cambria Math CE;}{\f1234\fbidi \froman\fcharset161\fprq2 Cambria Math Greek;}{\f1235\fbidi \froman\fcharset162\fprq2 Cambria Math Tur;}{\f1238\fbidi \froman\fcharset186\fprq2 Cambria Math Baltic;}
15 | {\f1239\fbidi \froman\fcharset163\fprq2 Cambria Math (Vietnamese);}{\f1523\fbidi \fmodern\fcharset0\fprq1 Consolas;}{\f1521\fbidi \fmodern\fcharset238\fprq1 Consolas CE;}{\f1524\fbidi \fmodern\fcharset161\fprq1 Consolas Greek;}
16 | {\f1525\fbidi \fmodern\fcharset162\fprq1 Consolas Tur;}{\f1528\fbidi \fmodern\fcharset186\fprq1 Consolas Baltic;}{\f1529\fbidi \fmodern\fcharset163\fprq1 Consolas (Vietnamese);}{\flomajor\f31510\fbidi \froman\fcharset0\fprq2 Times New Roman;}
17 | {\flomajor\f31508\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\flomajor\f31511\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\flomajor\f31512\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}
18 | {\flomajor\f31513\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\flomajor\f31514\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\flomajor\f31515\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}
19 | {\flomajor\f31516\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\fdbmajor\f31520\fbidi \froman\fcharset0\fprq2 Times New Roman;}{\fdbmajor\f31518\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}
20 | {\fdbmajor\f31521\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\fdbmajor\f31522\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\fdbmajor\f31523\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}
21 | {\fdbmajor\f31524\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\fdbmajor\f31525\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\fdbmajor\f31526\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}
22 | {\fhimajor\f31530\fbidi \fswiss\fcharset0\fprq2 Calibri Light;}{\fhimajor\f31528\fbidi \fswiss\fcharset238\fprq2 Calibri Light CE;}{\fhimajor\f31531\fbidi \fswiss\fcharset161\fprq2 Calibri Light Greek;}
23 | {\fhimajor\f31532\fbidi \fswiss\fcharset162\fprq2 Calibri Light Tur;}{\fhimajor\f31533\fbidi \fswiss\fcharset177\fprq2 Calibri Light (Hebrew);}{\fhimajor\f31534\fbidi \fswiss\fcharset178\fprq2 Calibri Light (Arabic);}
24 | {\fhimajor\f31535\fbidi \fswiss\fcharset186\fprq2 Calibri Light Baltic;}{\fhimajor\f31536\fbidi \fswiss\fcharset163\fprq2 Calibri Light (Vietnamese);}{\fbimajor\f31540\fbidi \froman\fcharset0\fprq2 Times New Roman;}
25 | {\fbimajor\f31538\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\fbimajor\f31541\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\fbimajor\f31542\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}
26 | {\fbimajor\f31543\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\fbimajor\f31544\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\fbimajor\f31545\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}
27 | {\fbimajor\f31546\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\flominor\f31550\fbidi \froman\fcharset0\fprq2 Times New Roman;}{\flominor\f31548\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}
28 | {\flominor\f31551\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\flominor\f31552\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\flominor\f31553\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}
29 | {\flominor\f31554\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\flominor\f31555\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\flominor\f31556\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}
30 | {\fdbminor\f31560\fbidi \froman\fcharset0\fprq2 Times New Roman;}{\fdbminor\f31558\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\fdbminor\f31561\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}
31 | {\fdbminor\f31562\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\fdbminor\f31563\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\fdbminor\f31564\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}
32 | {\fdbminor\f31565\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\fdbminor\f31566\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\fhiminor\f31570\fbidi \fswiss\fcharset0\fprq2 Calibri;}
33 | {\fhiminor\f31568\fbidi \fswiss\fcharset238\fprq2 Calibri CE;}{\fhiminor\f31571\fbidi \fswiss\fcharset161\fprq2 Calibri Greek;}{\fhiminor\f31572\fbidi \fswiss\fcharset162\fprq2 Calibri Tur;}
34 | {\fhiminor\f31573\fbidi \fswiss\fcharset177\fprq2 Calibri (Hebrew);}{\fhiminor\f31574\fbidi \fswiss\fcharset178\fprq2 Calibri (Arabic);}{\fhiminor\f31575\fbidi \fswiss\fcharset186\fprq2 Calibri Baltic;}
35 | {\fhiminor\f31576\fbidi \fswiss\fcharset163\fprq2 Calibri (Vietnamese);}{\fbiminor\f31580\fbidi \froman\fcharset0\fprq2 Times New Roman;}{\fbiminor\f31578\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}
36 | {\fbiminor\f31581\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\fbiminor\f31582\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\fbiminor\f31583\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}
37 | {\fbiminor\f31584\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\fbiminor\f31585\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\fbiminor\f31586\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}}
38 | {\colortbl;\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;\red0\green255\blue0;\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;\red0\green0\blue128;\red0\green128\blue128;\red0\green128\blue0;
39 | \red128\green0\blue128;\red128\green0\blue0;\red128\green128\blue0;\red128\green128\blue128;\red192\green192\blue192;\red0\green0\blue0;\red0\green0\blue0;}{\*\defchp \fs22\loch\af31506\hich\af31506\dbch\af31505 }{\*\defpap
40 | \ql \li0\ri0\sa160\sl259\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 }\noqfpromote {\stylesheet{\ql \li0\ri0\sa160\sl259\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1
41 | \af0\afs22\alang1025 \ltrch\fcs0 \fs22\lang1049\langfe1049\loch\f31506\hich\af31506\dbch\af31505\cgrid\langnp1049\langfenp1049 \snext0 \sqformat \spriority0 Normal;}{
42 | \s3\ql \li0\ri0\sb100\sa100\sbauto1\saauto1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\outlinelevel2\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \ab\af0\afs27\alang1025 \ltrch\fcs0
43 | \b\fs27\lang1049\langfe1049\loch\f0\hich\af0\dbch\af31505\cgrid\langnp1049\langfenp1049 \sbasedon0 \snext3 \slink15 \sqformat \spriority9 \styrsid16262832 heading 3;}{\*\cs10 \additive \ssemihidden \sunhideused \spriority1 Default Paragraph Font;}{\*
44 | \ts11\tsrowd\trftsWidthB3\trpaddl108\trpaddr108\trpaddfl3\trpaddft3\trpaddfb3\trpaddfr3\trcbpat1\trcfpat1\tblind0\tblindtype3\tsvertalt\tsbrdrt\tsbrdrl\tsbrdrb\tsbrdrr\tsbrdrdgl\tsbrdrdgr\tsbrdrh\tsbrdrv \ql \li0\ri0\sa160\sl259\slmult1
45 | \widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs22\alang1025 \ltrch\fcs0 \fs22\lang1049\langfe1049\loch\f31506\hich\af31506\dbch\af31505\cgrid\langnp1049\langfenp1049 \snext11 \ssemihidden \sunhideused
46 | Normal Table;}{\*\cs15 \additive \rtlch\fcs1 \ab\af0\afs27 \ltrch\fcs0 \b\f0\fs27 \sbasedon10 \slink3 \slocked \spriority9 \styrsid16262832 \'c7\'e0\'e3\'ee\'eb\'ee\'e2\'ee\'ea 3 \'c7\'ed\'e0\'ea;}{
47 | \s16\ql \li0\ri0\sb100\sa100\sbauto1\saauto1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 \fs24\lang1049\langfe1049\loch\f0\hich\af0\dbch\af31505\cgrid\langnp1049\langfenp1049
48 | \sbasedon0 \snext16 \sunhideused \styrsid16262832 Normal (Web);}{\*\cs17 \additive \rtlch\fcs1 \af0 \ltrch\fcs0 \f2\fs20 \sbasedon10 \ssemihidden \sunhideused \styrsid16262832 HTML Code;}}{\*\listtable{\list\listtemplateid1110242298{\listlevel\levelnfc23
49 | \levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'01\u-3913 ?;}{\levelnumbers;}\f3\fs20\fbias0 \fi-360\li720\jclisttab\tx720\lin720 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0
50 | \levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\'01o;}{\levelnumbers;}\f2\fs20\fbias0 \fi-360\li1440\jclisttab\tx1440\lin1440 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0
51 | \levelindent0{\leveltext\'01\u-3929 ?;}{\levelnumbers;}\f10\fs20\fbias0 \fi-360\li2160\jclisttab\tx2160\lin2160 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext
52 | \'01\u-3929 ?;}{\levelnumbers;}\f10\fs20\fbias0 \fi-360\li2880\jclisttab\tx2880\lin2880 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\'01\u-3929 ?;}{\levelnumbers;}
53 | \f10\fs20\fbias0 \fi-360\li3600\jclisttab\tx3600\lin3600 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\'01\u-3929 ?;}{\levelnumbers;}\f10\fs20\fbias0 \fi-360\li4320
54 | \jclisttab\tx4320\lin4320 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\'01\u-3929 ?;}{\levelnumbers;}\f10\fs20\fbias0 \fi-360\li5040\jclisttab\tx5040\lin5040 }
55 | {\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\'01\u-3929 ?;}{\levelnumbers;}\f10\fs20\fbias0 \fi-360\li5760\jclisttab\tx5760\lin5760 }{\listlevel\levelnfc23\levelnfcn23
56 | \leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\'01\u-3929 ?;}{\levelnumbers;}\f10\fs20\fbias0 \fi-360\li6480\jclisttab\tx6480\lin6480 }{\listname ;}\listid1098789931}{\list\listtemplateid1145337638
57 | {\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'01\u-3913 ?;}{\levelnumbers;}\f3\fs20\fbias0 \fi-360\li720\jclisttab\tx720\lin720 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0
58 | \levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\'01o;}{\levelnumbers;}\f2\fs20\fbias0 \fi-360\li1440\jclisttab\tx1440\lin1440 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative
59 | \levelspace0\levelindent0{\leveltext\'01\u-3929 ?;}{\levelnumbers;}\f10\fs20\fbias0 \fi-360\li2160\jclisttab\tx2160\lin2160 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext
60 | \'01\u-3929 ?;}{\levelnumbers;}\f10\fs20\fbias0 \fi-360\li2880\jclisttab\tx2880\lin2880 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\'01\u-3929 ?;}{\levelnumbers;}
61 | \f10\fs20\fbias0 \fi-360\li3600\jclisttab\tx3600\lin3600 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\'01\u-3929 ?;}{\levelnumbers;}\f10\fs20\fbias0 \fi-360\li4320
62 | \jclisttab\tx4320\lin4320 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\'01\u-3929 ?;}{\levelnumbers;}\f10\fs20\fbias0 \fi-360\li5040\jclisttab\tx5040\lin5040 }
63 | {\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\'01\u-3929 ?;}{\levelnumbers;}\f10\fs20\fbias0 \fi-360\li5760\jclisttab\tx5760\lin5760 }{\listlevel\levelnfc23\levelnfcn23
64 | \leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\'01\u-3929 ?;}{\levelnumbers;}\f10\fs20\fbias0 \fi-360\li6480\jclisttab\tx6480\lin6480 }{\listname ;}\listid1787578049}}{\*\listoverridetable
65 | {\listoverride\listid1787578049\listoverridecount0\ls1}{\listoverride\listid1098789931\listoverridecount0\ls2}}{\*\pgptbl {\pgp\ipgp0\itap0\li0\ri0\sb0\sa0}{\pgp\ipgp0\itap0\li0\ri0\sb0\sa0}}{\*\rsidtbl \rsid412141\rsid534186\rsid1127236\rsid1342125
66 | \rsid1528854\rsid2451752\rsid3100956\rsid3689259\rsid4804409\rsid5462953\rsid5788249\rsid6820246\rsid7210451\rsid7612076\rsid7626615\rsid7804878\rsid8026031\rsid8416574\rsid8526738\rsid8669107\rsid9248886\rsid9594346\rsid9639843\rsid9844084\rsid11479928
67 | \rsid11496902\rsid11612621\rsid11889599\rsid12000099\rsid12404145\rsid12476533\rsid13129346\rsid14172986\rsid14302222\rsid14448992\rsid14617731\rsid14770983\rsid14814837\rsid15015665\rsid15358062\rsid15474909\rsid15814273\rsid16262832}{\mmathPr
68 | \mmathFont34\mbrkBin0\mbrkBinSub0\msmallFrac0\mdispDef1\mlMargin0\mrMargin0\mdefJc1\mwrapIndent1440\mintLim0\mnaryLim1}{\info{\operator Kay Kokh}{\creatim\yr2024\mo6\dy19\hr19\min12}{\revtim\yr2024\mo6\dy20\hr20}{\version82}{\edmins28}{\nofpages1}
69 | {\nofwords202}{\nofchars1155}{\nofcharsws1355}{\vern31}}{\*\xmlnstbl {\xmlns1 http://schemas.microsoft.com/office/word/2003/wordml}}\paperw12240\paperh15840\margl1701\margr850\margt142\margb1134\gutter0\ltrsect
70 | \widowctrl\ftnbj\aenddoc\trackmoves0\trackformatting1\donotembedsysfont0\relyonvml0\donotembedlingdata1\grfdocevents0\validatexml0\showplaceholdtext0\ignoremixedcontent0\saveinvalidxml0\showxmlerrors0\horzdoc\dghspace120\dgvspace120\dghorigin1701
71 | \dgvorigin1984\dghshow0\dgvshow3\jcompress\viewkind1\viewscale100\rsidroot8026031 \fet0{\*\wgrffmtfilter 2450}\ilfomacatclnup0\ltrpar \sectd \ltrsect\linex0\sectdefaultcl\sectrsid14814837\sftnbj {\*\pnseclvl1\pnucrm\pnstart1\pnindent720\pnhang
72 | {\pntxta .}}{\*\pnseclvl2\pnucltr\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl3\pndec\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl4\pnlcltr\pnstart1\pnindent720\pnhang {\pntxta )}}{\*\pnseclvl5\pndec\pnstart1\pnindent720\pnhang {\pntxtb (}
73 | {\pntxta )}}{\*\pnseclvl6\pnlcltr\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl7\pnlcrm\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl8\pnlcltr\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl9
74 | \pnlcrm\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}\pard\plain \ltrpar\ql \fi-142\li-851\ri0\widctlpar\tx-567\wrapdefault\aspalpha\aspnum\faauto\outlinelevel2\adjustright\rin0\lin-851\itap0\pararsid8669107 \rtlch\fcs1 \af0\afs22\alang1025
75 | \ltrch\fcs0 \fs22\lang1049\langfe1049\loch\af31506\hich\af31506\dbch\af31505\cgrid\langnp1049\langfenp1049 {\rtlch\fcs1 \ab\af1\afs26 \ltrch\fcs0 \b\f1\fs26\lang1033\langfe1049\langnp1033\insrsid16262832\charrsid16262832 \hich\af1\dbch\af31505\loch\f1
76 | Can the converted script still process command line arguments?
77 | \par }\pard \ltrpar\ql \fi-142\li-851\ri0\widctlpar\tx-567\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin-851\itap0\pararsid8669107 {\rtlch\fcs1 \af1\afs26 \ltrch\fcs0 \f1\fs26\lang1033\langfe1049\langnp1033\insrsid16262832\charrsid16262832
78 | \hich\af1\dbch\af31505\loch\f1 Yes, the script file after conversion can still receive and process command line arguments.}{\rtlch\fcs1 \af1\afs26 \ltrch\fcs0 \f1\fs26\lang1033\langfe1049\langnp1033\insrsid16262832
79 | \par }{\rtlch\fcs1 \af1\afs26 \ltrch\fcs0 \f1\fs26\lang1033\langfe1049\langnp1033\insrsid534186\charrsid16262832
80 | \par }\pard \ltrpar\ql \fi-142\li-851\ri0\widctlpar\tx-567\wrapdefault\aspalpha\aspnum\faauto\outlinelevel2\adjustright\rin0\lin-851\itap0\pararsid8669107 {\rtlch\fcs1 \ab\af1\afs26 \ltrch\fcs0
81 | \b\f1\fs26\lang1033\langfe1049\langnp1033\insrsid16262832\charrsid16262832 \hich\af1\dbch\af31505\loch\f1 Does the converted script retain the }{\rtlch\fcs1 \ab\af1\afs26 \ltrch\fcs0
82 | \b\f63\fs26\lang1033\langfe1049\langnp1033\insrsid16262832\charrsid534186 \hich\af63\dbch\af31505\loch\f63 %ERRORLEVEL%}{\rtlch\fcs1 \ab\af1\afs26 \ltrch\fcs0 \b\f1\fs26\lang1033\langfe1049\langnp1033\insrsid16262832\charrsid16262832
83 | \hich\af1\dbch\af31505\loch\f1 value?
84 | \par }\pard \ltrpar\ql \fi-142\li-851\ri0\widctlpar\tx-567\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin-851\itap0\pararsid8669107 {\rtlch\fcs1 \af1\afs26 \ltrch\fcs0 \f1\fs26\lang1033\langfe1049\langnp1033\insrsid16262832\charrsid16262832
85 | \hich\af1\dbch\af31505\loch\f1 Yes, the converted script can still return the value of }{\rtlch\fcs1 \af1\afs26 \ltrch\fcs0 \f63\fs26\lang1033\langfe1049\langnp1033\insrsid7210451 \loch\af63\dbch\af31505\hich\f63 \'94\loch\f63 %}{\rtlch\fcs1 \af1\afs26
86 | \ltrch\fcs0 \f63\fs26\lang1033\langfe1049\langnp1033\insrsid16262832\charrsid534186 \hich\af63\dbch\af31505\loch\f63 ERRORLEVEL%}{\rtlch\fcs1 \af1\afs26 \ltrch\fcs0 \f63\fs26\lang1033\langfe1049\langnp1033\insrsid7210451 \loch\af63\dbch\af31505\hich\f63
87 | \'94}{\rtlch\fcs1 \af1\afs26 \ltrch\fcs0 \f1\fs26\lang1033\langfe1049\langnp1033\insrsid16262832\charrsid16262832 .}{\rtlch\fcs1 \af1\afs26 \ltrch\fcs0 \f1\fs26\lang1033\langfe1049\langnp1033\insrsid534186 \line }{\rtlch\fcs1 \af1\afs26 \ltrch\fcs0
88 | \f1\fs26\lang1033\langfe1049\langnp1033\insrsid534186\charrsid16262832
89 | \par }\pard\plain \ltrpar\s3\ql \fi-142\li-851\ri0\widctlpar\tx-567\wrapdefault\aspalpha\aspnum\faauto\outlinelevel2\adjustright\rin0\lin-851\itap0\pararsid8669107 \rtlch\fcs1 \ab\af0\afs27\alang1025 \ltrch\fcs0
90 | \b\fs27\lang1049\langfe1049\loch\af0\hich\af0\dbch\af31505\cgrid\langnp1049\langfenp1049 {\rtlch\fcs1 \af1\afs26 \ltrch\fcs0 \f1\fs26\lang1033\langfe1049\langnp1033\insrsid16262832\charrsid16262832 \hich\af1\dbch\af31505\loch\f1
91 | What script trimming functions do\hich\af1\dbch\af31505\loch\f1 es BatchToApp offer?
92 | \par }\pard\plain \ltrpar\s16\ql \fi-142\li-851\ri0\widctlpar\tx-567\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin-851\itap0\pararsid8669107 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0
93 | \fs24\lang1049\langfe1049\loch\af0\hich\af0\dbch\af31505\cgrid\langnp1049\langfenp1049 {\rtlch\fcs1 \af1\afs26 \ltrch\fcs0 \f1\fs26\lang1033\langfe1049\langnp1033\insrsid16262832\charrsid16262832 \hich\af1\dbch\af31505\loch\f1
94 | BatchToApp includes unique script trimming functions such as:
95 | \par }\pard\plain \ltrpar\ql \li-851\ri0\widctlpar\tx-567\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin-851\itap0\pararsid4804409 \rtlch\fcs1 \af0\afs22\alang1025 \ltrch\fcs0
96 | \fs22\lang1049\langfe1049\loch\af31506\hich\af31506\dbch\af31505\cgrid\langnp1049\langfenp1049 {\rtlch\fcs1 \af1\afs26 \ltrch\fcs0 \f1\fs26\lang1033\langfe1049\langnp1033\insrsid4804409\charrsid4804409 \hich\af1\dbch\af31505\loch\f1 * }{\rtlch\fcs1
97 | \af1\afs26 \ltrch\fcs0 \f1\fs26\lang1033\langfe1049\langnp1033\insrsid16262832\charrsid16262832 \hich\af1\dbch\af31505\loch\f1 Removing comments (all lines starting with }{\rtlch\fcs1 \af1\afs26 \ltrch\fcs0
98 | \cs17\f63\fs26\lang1033\langfe1049\langnp1033\insrsid16262832\charrsid9844084 \hich\af63\dbch\af31505\loch\f63 ::}{\rtlch\fcs1 \af1\afs26 \ltrch\fcs0 \f1\fs26\lang1033\langfe1049\langnp1033\insrsid16262832\charrsid16262832 \hich\af1\dbch\af31505\loch\f1
99 | or }{\rtlch\fcs1 \af1\afs26 \ltrch\fcs0 \cs17\f63\fs26\lang1033\langfe1049\langnp1033\insrsid9844084\charrsid9844084 \hich\af63\dbch\af31505\loch\f63 REM}{\rtlch\fcs1 \af1\afs26 \ltrch\fcs0
100 | \f1\fs26\lang1033\langfe1049\langnp1033\insrsid16262832\charrsid16262832 \hich\af1\dbch\af31505\loch\f1 will be removed)
101 | \par }{\rtlch\fcs1 \af1\afs26 \ltrch\fcs0 \f1\fs26\lang1033\langfe1049\langnp1033\insrsid4804409\charrsid4804409 \hich\af1\dbch\af31505\loch\f1 * }{\rtlch\fcs1 \af1\afs26 \ltrch\fcs0 \f1\fs26\lang1033\langfe1049\langnp1033\insrsid16262832\charrsid16262832
102 | \hich\af1\dbch\af31505\loch\f1 Removing unnecessary characters (reducing the number of line breaks and removing extra spaces)}{\rtlch\fcs1 \af1\afs26 \ltrch\fcs0 \f1\fs26\lang1033\langfe1049\langnp1033\insrsid534186 \line }{\rtlch\fcs1 \af1\afs26
103 | \ltrch\fcs0 \f1\fs26\lang1033\langfe1049\langnp1033\insrsid534186\charrsid534186
104 | \par }\pard\plain \ltrpar\s3\ql \fi-142\li-851\ri0\widctlpar\tx-567\wrapdefault\aspalpha\aspnum\faauto\outlinelevel2\adjustright\rin0\lin-851\itap0\pararsid8669107 \rtlch\fcs1 \ab\af0\afs27\alang1025 \ltrch\fcs0
105 | \b\fs27\lang1049\langfe1049\loch\af0\hich\af0\dbch\af31505\cgrid\langnp1049\langfenp1049 {\rtlch\fcs1 \af1\afs26 \ltrch\fcs0 \f1\fs26\lang1033\langfe1049\langnp1033\insrsid16262832\charrsid16262832 \hich\af1\dbch\af31505\loch\f1
106 | How does BatchToApp obfuscate scripts?}{\rtlch\fcs1 \af1\afs26 \ltrch\fcs0 \f1\fs26\lang1033\langfe1049\langnp1033\insrsid15814273
107 | \par }\pard\plain \ltrpar\ql \li-993\ri0\sl259\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin-993\itap0\pararsid8669107 \rtlch\fcs1 \af0\afs22\alang1025 \ltrch\fcs0
108 | \fs22\lang1049\langfe1049\loch\af31506\hich\af31506\dbch\af31505\cgrid\langnp1049\langfenp1049 {\rtlch\fcs1 \af1\afs26 \ltrch\fcs0 \f1\fs26\lang1033\langfe1049\langnp1033\insrsid12404145 \hich\af1\dbch\af31505\loch\f1 Labels o}{\rtlch\fcs1 \af1\afs26
109 | \ltrch\fcs0 \f1\fs26\lang1033\langfe1049\langnp1033\insrsid15814273\charrsid15814273 \hich\af1\dbch\af31505\loch\f1 bfuscation modes}{\rtlch\fcs1 \af1\afs26 \ltrch\fcs0 \f1\fs26\lang1033\langfe1049\langnp1033\insrsid15814273
110 | \hich\af1\dbch\af31505\loch\f1 :}{\rtlch\fcs1 \af1\afs26 \ltrch\fcs0 \f1\fs26\lang1033\langfe1049\langnp1033\insrsid16262832\charrsid15814273
111 | \par }\pard \ltrpar\ql \li-851\ri0\widctlpar\tx-567\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin-851\itap0\pararsid14302222 {\rtlch\fcs1 \af1\afs26 \ltrch\fcs0 \cs17\f1\fs26\lang1033\langfe1049\langnp1033\insrsid14302222\charrsid412141
112 | \hich\af1\dbch\af31505\loch\f1 *}{\rtlch\fcs1 \af1\afs26 \ltrch\fcs0 \cs17\f63\fs26\lang1033\langfe1049\langnp1033\insrsid14302222\charrsid412141 \hich\af63\dbch\af31505\loch\f63 }{\rtlch\fcs1 \af1\afs26 \ltrch\fcs0
113 | \cs17\f63\fs26\lang1033\langfe1049\langnp1033\insrsid5462953 \loch\af63\dbch\af31505\hich\f63 \'93}{\rtlch\fcs1 \af1\afs26 \ltrch\fcs0 \cs17\f63\fs26\lang1033\langfe1049\langnp1033\insrsid15814273\charrsid8526738 \hich\af63\dbch\af31505\loch\f63 Labels}{
114 | \rtlch\fcs1 \af1\afs26 \ltrch\fcs0 \cs17\f63\fs26\lang1033\langfe1049\langnp1033\insrsid412141 \hich\af63\dbch\af31505\loch\f63 mutation}{\rtlch\fcs1 \af1\afs26 \ltrch\fcs0 \cs17\f63\fs26\lang1033\langfe1049\langnp1033\insrsid5462953
115 | \loch\af63\dbch\af31505\hich\f63 \'94}{\rtlch\fcs1 \af1\afs26 \ltrch\fcs0 \f1\fs26\lang1033\langfe1049\langnp1033\insrsid16262832\charrsid15814273 \hich\af1\dbch\af31505\loch\f1 (only changes names)
116 | \par }{\rtlch\fcs1 \af1\afs26 \ltrch\fcs0 \cs17\f1\fs26\lang1033\langfe1049\langnp1033\insrsid14302222\charrsid1528854 \hich\af1\dbch\af31505\loch\f1 *}{\rtlch\fcs1 \af1\afs26 \ltrch\fcs0
117 | \cs17\f63\fs26\lang1033\langfe1049\langnp1033\insrsid14302222\charrsid14302222 \hich\af63\dbch\af31505\loch\f63 }{\rtlch\fcs1 \af1\afs26 \ltrch\fcs0 \cs17\f63\fs26\lang1033\langfe1049\langnp1033\insrsid5462953 \loch\af63\dbch\af31505\hich\f63 \'93}{
118 | \rtlch\fcs1 \af1\afs26 \ltrch\fcs0 \cs17\f63\fs26\lang1033\langfe1049\langnp1033\insrsid15814273\charrsid8526738 \hich\af63\dbch\af31505\loch\f63 Labels}{\rtlch\fcs1 \af1\afs26 \ltrch\fcs0 \cs17\f63\fs26\lang1033\langfe1049\langnp1033\insrsid412141
119 | \hich\af63\dbch\af31505\loch\f63 mutation}{\rtlch\fcs1 \af1\afs26 \ltrch\fcs0 \cs17\f63\fs26\lang1033\langfe1049\langnp1033\insrsid5462953 \loch\af63\dbch\af31505\hich\f63 \'94}{\rtlch\fcs1 \af1\afs26 \ltrch\fcs0
120 | \f1\fs26\lang1033\langfe1049\langnp1033\insrsid16262832\charrsid16262832 \hich\af1\dbch\af31505\loch\f1 (changes names and adds junk}{\rtlch\fcs1 \af1\afs26 \ltrch\fcs0 \f1\fs26\lang1033\langfe1049\langnp1033\insrsid412141 \hich\af1\dbch\af31505\loch\f1
121 | s}{\rtlch\fcs1 \af1\afs26 \ltrch\fcs0 \f1\fs26\lang1033\langfe1049\langnp1033\insrsid16262832\charrsid16262832 \hich\af1\dbch\af31505\loch\f1 )}{\rtlch\fcs1 \af1\afs26 \ltrch\fcs0 \f1\fs26\lang1033\langfe1049\langnp1033\insrsid12404145
122 | \par }\pard \ltrpar\ql \li-993\ri0\widctlpar\tx-567\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin-993\itap0\pararsid6820246 {\rtlch\fcs1 \af1\afs26 \ltrch\fcs0 \f1\fs26\lang1033\langfe1049\langnp1033\insrsid7626615\charrsid7626615
123 | \hich\af1\dbch\af31505\loch\f1 To visually obfuscate many }{\rtlch\fcs1 \af1\afs26 \ltrch\fcs0 \f1\fs26\lang1033\langfe1049\langnp1033\insrsid2451752\charrsid7626615 \hich\af1\dbch\af31505\loch\f1 commands,}{\rtlch\fcs1 \af1\afs26 \ltrch\fcs0
124 | \f1\fs26\lang1033\langfe1049\langnp1033\insrsid7626615\charrsid7626615 \hich\af1\dbch\af31505\loch\f1 you can use the }{\rtlch\fcs1 \af1\afs26 \ltrch\fcs0 \f63\fs26\lang1033\langfe1049\langnp1033\insrsid14617731\charrsid14770983
125 | \loch\af63\dbch\af31505\hich\f63 \'93}{\rtlch\fcs1 \af1\afs26 \ltrch\fcs0 \f63\fs26\lang1033\langfe1049\langnp1033\insrsid9639843 \hich\af63\dbch\af31505\loch\f63 Mutate calls}{\rtlch\fcs1 \af1\afs26 \ltrch\fcs0
126 | \f63\fs26\lang1033\langfe1049\langnp1033\insrsid14617731\charrsid14770983 \loch\af63\dbch\af31505\hich\f63 \'94}{\rtlch\fcs1 \af1\afs26 \ltrch\fcs0 \f1\fs26\lang1033\langfe1049\langnp1033\insrsid7626615\charrsid7626615 \hich\af1\dbch\af31505\loch\f1
127 | option}{\rtlch\fcs1 \af1\afs26 \ltrch\fcs0 \f1\fs26\lang1033\langfe1049\langnp1033\insrsid14172986 .}{\rtlch\fcs1 \af1\afs26 \ltrch\fcs0 \f1\fs26\lang1033\langfe1049\langnp1033\insrsid14172986\charrsid14172986 \hich\af1\dbch\af31505\loch\f1
128 | You can also use the file system protection method (}{\rtlch\fcs1 \af1\afs26 \ltrch\fcs0 \f63\fs26\lang1033\langfe1049\langnp1033\insrsid14617731\charrsid14770983 \loch\af63\dbch\af31505\hich\f63 \'93}{\rtlch\fcs1 \af1\afs26 \ltrch\fcs0
129 | \f63\fs26\lang1033\langfe1049\langnp1033\insrsid14172986\charrsid14617731 \hich\af63\dbch\af31505\loch\f63 FS protection}{\rtlch\fcs1 \af1\afs26 \ltrch\fcs0 \f63\fs26\lang1033\langfe1049\langnp1033\insrsid14617731\charrsid14770983
130 | \loch\af63\dbch\af31505\hich\f63 \'94}{\rtlch\fcs1 \af1\afs26 \ltrch\fcs0 \f1\fs26\lang1033\langfe1049\langnp1033\insrsid14172986\charrsid14172986 \hich\af1\dbch\af31505\loch\f1
131 | ), which superficially protects the file from user intervention after startup.
132 | \par }\pard \ltrpar\ql \li-993\ri0\widctlpar\tx-567\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin-993\itap0\pararsid8669107 {\rtlch\fcs1 \af1\afs26 \ltrch\fcs0 \f1\fs26\lang1033\langfe1049\langnp1033\insrsid8416574\charrsid7804878
133 | \par }\pard\plain \ltrpar\s3\ql \li-993\ri0\sb100\sa100\sbauto1\saauto1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\outlinelevel2\adjustright\rin0\lin-993\itap0\pararsid12000099 \rtlch\fcs1 \ab\af0\afs27\alang1025 \ltrch\fcs0
134 | \b\fs27\lang1049\langfe1049\loch\af0\hich\af0\dbch\af31505\cgrid\langnp1049\langfenp1049 {\rtlch\fcs1 \af1\afs26 \ltrch\fcs0 \f1\fs26\lang1033\langfe1049\langnp1033\insrsid8416574\charrsid12000099 \hich\af1\dbch\af31505\loch\f1
135 | What should I do if the file stops working after obfuscation?
136 | \par }\pard\plain \ltrpar\ql \li-993\ri0\widctlpar\tx-567\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin-993\itap0\pararsid8669107 \rtlch\fcs1 \af0\afs22\alang1025 \ltrch\fcs0
137 | \fs22\lang1049\langfe1049\loch\af31506\hich\af31506\dbch\af31505\cgrid\langnp1049\langfenp1049 {\rtlch\fcs1 \af1\afs26 \ltrch\fcs0 \f1\fs26\lang1033\langfe1049\langnp1033\insrsid8416574\charrsid8416574 \hich\af1\dbch\af31505\loch\f1
138 | Just try changing the obfuscation options.}{\rtlch\fcs1 \af1\afs26 \ltrch\fcs0 \f1\fs26\lang1033\langfe1049\langnp1033\insrsid534186\charrsid8416574 \line }{\rtlch\fcs1 \af1\afs26 \ltrch\fcs0
139 | \f1\fs26\lang1033\langfe1049\langnp1033\insrsid16262832\charrsid8416574
140 | \par }\pard\plain \ltrpar\s3\ql \fi-142\li-851\ri0\widctlpar\tx-567\wrapdefault\aspalpha\aspnum\faauto\outlinelevel2\adjustright\rin0\lin-851\itap0\pararsid8669107 \rtlch\fcs1 \ab\af0\afs27\alang1025 \ltrch\fcs0
141 | \b\fs27\lang1049\langfe1049\loch\af0\hich\af0\dbch\af31505\cgrid\langnp1049\langfenp1049 {\rtlch\fcs1 \af1\afs26 \ltrch\fcs0 \f1\fs26\lang1033\langfe1049\langnp1033\insrsid16262832\charrsid16262832 \hich\af1\dbch\af31505\loch\f1
142 | Why do antiviruses flag packed files from BatchToApp?
143 | \par }\pard\plain \ltrpar\s16\ql \fi-142\li-851\ri0\widctlpar\tx-567\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin-851\itap0\pararsid8669107 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0
144 | \fs24\lang1049\langfe1049\loch\af0\hich\af0\dbch\af31505\cgrid\langnp1049\langfenp1049 {\rtlch\fcs1 \af1\afs26 \ltrch\fcs0 \f1\fs26\lang1033\langfe1049\langnp1033\insrsid16262832\charrsid16262832 \hich\af1\dbch\af31505\loch\f1
145 | Antiviruses may treat packed files with contempt and generate false positives. This is a}{\rtlch\fcs1 \af1\afs26 \ltrch\fcs0 \f1\fs26\lang1033\langfe1049\langnp1033\insrsid12404145 \hich\af1\dbch\af31505\loch\f1 }{\rtlch\fcs1 \af1\afs26 \ltrch\fcs0
146 | \f1\fs26\lang1033\langfe1049\langnp1033\insrsid16262832\charrsid16262832 \hich\af1\dbch\af31505\loch\f1 common issue with packed executables. You can ignore these warnings or install a valid CodeSigning digital signat\hich\af1\dbch\af31505\loch\f1
147 | ure on the file to reduce false positives.}{\rtlch\fcs1 \af1\afs26 \ltrch\fcs0 \f1\fs26\lang1033\langfe1049\langnp1033\insrsid15358062\charrsid16262832
148 | \par }{\*\themedata 504b030414000600080000002100e9de0fbfff0000001c020000130000005b436f6e74656e745f54797065735d2e786d6cac91cb4ec3301045f748fc83e52d4a
149 | 9cb2400825e982c78ec7a27cc0c8992416c9d8b2a755fbf74cd25442a820166c2cd933f79e3be372bd1f07b5c3989ca74aaff2422b24eb1b475da5df374fd9ad
150 | 5689811a183c61a50f98f4babebc2837878049899a52a57be670674cb23d8e90721f90a4d2fa3802cb35762680fd800ecd7551dc18eb899138e3c943d7e503b6
151 | b01d583deee5f99824e290b4ba3f364eac4a430883b3c092d4eca8f946c916422ecab927f52ea42b89a1cd59c254f919b0e85e6535d135a8de20f20b8c12c3b0
152 | 0c895fcf6720192de6bf3b9e89ecdbd6596cbcdd8eb28e7c365ecc4ec1ff1460f53fe813d3cc7f5b7f020000ffff0300504b030414000600080000002100a5d6
153 | a7e7c0000000360100000b0000005f72656c732f2e72656c73848fcf6ac3300c87ef85bd83d17d51d2c31825762fa590432fa37d00e1287f68221bdb1bebdb4f
154 | c7060abb0884a4eff7a93dfeae8bf9e194e720169aaa06c3e2433fcb68e1763dbf7f82c985a4a725085b787086a37bdbb55fbc50d1a33ccd311ba548b6309512
155 | 0f88d94fbc52ae4264d1c910d24a45db3462247fa791715fd71f989e19e0364cd3f51652d73760ae8fa8c9ffb3c330cc9e4fc17faf2ce545046e37944c69e462
156 | a1a82fe353bd90a865aad41ed0b5b8f9d6fd010000ffff0300504b0304140006000800000021006b799616830000008a0000001c0000007468656d652f746865
157 | 6d652f7468656d654d616e616765722e786d6c0ccc4d0ac3201040e17da17790d93763bb284562b2cbaebbf600439c1a41c7a0d29fdbd7e5e38337cedf14d59b
158 | 4b0d592c9c070d8a65cd2e88b7f07c2ca71ba8da481cc52c6ce1c715e6e97818c9b48d13df49c873517d23d59085adb5dd20d6b52bd521ef2cdd5eb9246a3d8b
159 | 4757e8d3f729e245eb2b260a0238fd010000ffff0300504b030414000600080000002100507a8df2be070000fc200000160000007468656d652f7468656d652f
160 | 7468656d65312e786d6cec595f8f1bb7117f2f90efb0d87759ff76f5e760399056922ff69d6d58b2833cf2246a973eee5258527716020381f39497040192a00f
161 | 0dd0f6a50f41d103ea2241d1a05fe1f2190cd868d30fd12177a52525cabe3bb88051dc1d70b74bfd66f8e3cc706644defcf0694c9d139c72c2928e5bbd51711d
162 | 9c4cd8942461c77d341e965aaec3054aa688b20477dc25e6ee87b73ef8cd4db427221c6307e413be873a6e24c47caf5ce6131846fc069be3043e9bb13446025e
163 | d3b03c4dd129e88d69b956a934ca312289eb242806b5e77f3cffdbf93fcecf9cfbb3199960f7d64aff80c22489e0726042d391d48e57427ff8e5f9f9d9f9cfe7
164 | 2fcecf7ef90c9e7f86ff5f29d9e971554af0250f68ea9c20da7161ea293b1de3a7c27528e2023ee8b815f5e3966fdd2ca3bd5c888a1db29adc50fde472b9c0f4
165 | b8a6e64cc3a3f5a49ee77b8dee5abf0250b18d1b34078d4163ad4f01d064022bcfb8983a9bb5c0cbb11a287bb4e8ee37fbf5aa81d7f4d7b738777df96be01528
166 | d3ef6de187c300ac68e01528c3fb5b78bfd7eef54dfd0a94e11b5bf866a5dbf79a867e058a28498eb7d015bf510f56ab5d43668cee5be16ddf1b366bb9f20205
167 | d1b08e3639c58c25e2a2b117a3272c1d828014a44890c411cb399ea109047a8028394a897340c20802718e12c661b852ab0c2b75f82b7f3df5a43c8cf630d2a4
168 | 254f60c6b786243f874f5232171df70e687535c8ab9f7e7af9fcc5cbe73fbefcfcf397cfff92cfad541972fb280975b95ffff4f57fbeffccf9f75f7fffeb37df
169 | 66536fe2b98e7ffde72f5efffd9f6f520f2b2e4cf1eabbb3d72fce5efdf6cb7ffdf08d457b3745473a7c4c62cc9d7bf8d479c86258a0853f3e4a2f27318e10d1
170 | 25ba49c85182e42c16fd031119e87b4b449105d7c3a61d1fa7907a6cc0db8b2706e151942e04b168bc1bc506f09031da63a9d50a77e55c9a99c78b24b44f9e2e
171 | 74dc43844e6c73072831bc3c58cc2107139bca20c206cd071425028538c1c2919fb1638c2dabfb8410c3ae87649232ce66c2f984383d44ac26199323239a0aa1
172 | 7d12835f963682e06fc336878f9d1ea3b655f7f1898984bd81a885fc1853c38cb7d142a0d8a6728c62aa1bfc0089c84672b44c273a6ec005783ac494398329e6
173 | dc26733f85f56a4ebf0b69c6eef643ba8c4d642ac8b14de701624c47f6d97110a1786ec38e4812e9d88ff8318428721e3061831f327387c877f0034a76bafb31
174 | c186bbdf9e0d1e4186d5291501223f59a4165fdec6cc88dfd192ce10b6a59a6e1a1b29b69b126b74f416a111da071853748aa6183b8f3eb230e8b1b961f382f4
175 | 9d08b2ca3eb605d61d64c6aa7c4f30c78e6a76b6f3e401e146c88e70c876f0395c6e249e254a6294eed27c0fbcaedb7c00a52eb605c07d3a39d681f708b48910
176 | 2f56a3dce7a0430bee9d5a1f44c82860f29ddbe375991afebbc81e837df9c4a071817d0932f8d23290d8759937da668ca83141113063045d862ddd8288e1fe42
177 | 44165725b6b0cacdcc4d5bb801ba25a3e98949f2d60e68a3f7f1ff77bd0f7418af7ef7bd65b3bd9b7ec7aed8485697ec74762593fd8dfe66176eb3ab09583a25
178 | ef7f53d3478be401863ab29db1ae7b9aeb9ec6fdbfef6976ede7eb4e6657bf71ddc9b8d0615c7732f9e1cabbe9648ae605fa1a79e0911dfca863a0f8c2a74033
179 | 42e9482c293ee0ea2088c3f79be91006a51e75488ad7a784f3081e65d983090d5c982225e3a44c7c4c44348ad01c4e8baaae5412f25c75c89d39e37088a486ad
180 | ba259e2ee24336cd0e43ab5579f099555a8e44315ef1d7e37070253274a3591cf0add52bb6a13a985d1190b29721a14d6692a85b48345783d248ea18188c6621
181 | a156f64e58b42d2c5a52fdca555b2c80dada2bf005dc81afed1dd7f7400484e07c0e9af5a9f453e6ea95779533dfa5a77719d3880068b857115078ba2db9ee5c
182 | 9e5c5d166a17f0b441420b379384b28c6af878045f8bf3e894a317a171595fb70b971af4a429d47c105a058d66eb4d2caeea6b90dbcc0d34d133054d9cd38edb
183 | a8fb10321334efb833384486c7780eb1c3e577304443b8ac998834dbf057c92cf3948b3ee25166709574b26c101381538792b8e3cae5afdd4013954314b76a0d
184 | 12c27b4bae0d69e57d23074e379d8c67333c11badbb51169e9ec15327c962bac9f2af1ab83a5245b80bb47d1f4d439a28bf4218210f39b5569c029e1709750cd
185 | ac39257059b64e6445fc6d14a63cedeab7552a86b27144e711ca2b8a9ecc33b84ae56b3aea6d6d03ed2d5f33185433495e088f42596075a31ad5745d35320e3b
186 | abeedb85a4e5b4a459d44c23abc8aa69cf62c60cab32b061cbab15798dd5cac490d3f40a9fa5eecd94db5ee5ba8d3e615d25c0e06bfb59aaee050a8246ad98cc
187 | a026196fa76199b3f351b376ac16f8166a1729125ad66facd46ed86d5d23acd3c1e0952a3fc86d462d0ccd567da6b2b4ba68d72fc2d9d113481e7de87a175470
188 | e54ab8d64e11344423d593646903b6c853916f0d78721629e9b89f56fcae17d4fca05469f9839257f72aa596dfad97babe5faf0efc6aa5dfab3d83c222a2b8ea
189 | 6797fc43b8d0a0cbfcaa5f8d6f5df7c7ab3b9b1b13169799bac52f2be2eababf5a33aefbb35b7e672c2ff35d8740d2f9b4511bb6ebed5ea3d4ae778725afdf6b
190 | 95da41a357ea3782667fd80ffc567bf8cc754e14d8ebd603af3168951ad52028798d8aa4df6a979a5eadd6f59addd6c0eb3ecbdb185879963e725b807915af5b
191 | ff050000ffff0300504b0304140006000800000021000dd1909fb60000001b010000270000007468656d652f7468656d652f5f72656c732f7468656d654d616e
192 | 616765722e786d6c2e72656c73848f4d0ac2301484f78277086f6fd3ba109126dd88d0add40384e4350d363f2451eced0dae2c082e8761be9969bb979dc91363
193 | 32de3168aa1a083ae995719ac16db8ec8e4052164e89d93b64b060828e6f37ed1567914b284d262452282e3198720e274a939cd08a54f980ae38a38f56e422a3
194 | a641c8bbd048f7757da0f19b017cc524bd62107bd5001996509affb3fd381a89672f1f165dfe514173d9850528a2c6cce0239baa4c04ca5bbabac4df000000ff
195 | ff0300504b01022d0014000600080000002100e9de0fbfff0000001c0200001300000000000000000000000000000000005b436f6e74656e745f54797065735d
196 | 2e786d6c504b01022d0014000600080000002100a5d6a7e7c0000000360100000b00000000000000000000000000300100005f72656c732f2e72656c73504b01
197 | 022d00140006000800000021006b799616830000008a0000001c00000000000000000000000000190200007468656d652f7468656d652f7468656d654d616e61
198 | 6765722e786d6c504b01022d0014000600080000002100507a8df2be070000fc2000001600000000000000000000000000d60200007468656d652f7468656d65
199 | 2f7468656d65312e786d6c504b01022d00140006000800000021000dd1909fb60000001b0100002700000000000000000000000000c80a00007468656d652f7468656d652f5f72656c732f7468656d654d616e616765722e786d6c2e72656c73504b050600000000050005005d010000c30b00000000}
200 | {\*\colorschememapping 3c3f786d6c2076657273696f6e3d22312e302220656e636f64696e673d225554462d3822207374616e64616c6f6e653d22796573223f3e0d0a3c613a636c724d
201 | 617020786d6c6e733a613d22687474703a2f2f736368656d61732e6f70656e786d6c666f726d6174732e6f72672f64726177696e676d6c2f323030362f6d6169
202 | 6e22206267313d226c743122207478313d22646b3122206267323d226c743222207478323d22646b322220616363656e74313d22616363656e74312220616363
203 | 656e74323d22616363656e74322220616363656e74333d22616363656e74332220616363656e74343d22616363656e74342220616363656e74353d22616363656e74352220616363656e74363d22616363656e74362220686c696e6b3d22686c696e6b2220666f6c486c696e6b3d22666f6c486c696e6b222f3e}
204 | {\*\latentstyles\lsdstimax376\lsdlockeddef0\lsdsemihiddendef0\lsdunhideuseddef0\lsdqformatdef0\lsdprioritydef99{\lsdlockedexcept \lsdqformat1 \lsdpriority0 \lsdlocked0 Normal;\lsdqformat1 \lsdpriority9 \lsdlocked0 heading 1;
205 | \lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdpriority9 \lsdlocked0 heading 2;\lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdpriority9 \lsdlocked0 heading 3;\lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdpriority9 \lsdlocked0 heading 4;
206 | \lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdpriority9 \lsdlocked0 heading 5;\lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdpriority9 \lsdlocked0 heading 6;\lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdpriority9 \lsdlocked0 heading 7;
207 | \lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdpriority9 \lsdlocked0 heading 8;\lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdpriority9 \lsdlocked0 heading 9;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 1;
208 | \lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 4;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 5;
209 | \lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 6;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 7;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 8;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 9;
210 | \lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 1;\lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 2;\lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 3;
211 | \lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 4;\lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 5;\lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 6;
212 | \lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 7;\lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 8;\lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 9;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Normal Indent;
213 | \lsdsemihidden1 \lsdunhideused1 \lsdlocked0 footnote text;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 annotation text;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 header;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 footer;
214 | \lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index heading;\lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdpriority35 \lsdlocked0 caption;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 table of figures;
215 | \lsdsemihidden1 \lsdunhideused1 \lsdlocked0 envelope address;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 envelope return;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 footnote reference;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 annotation reference;
216 | \lsdsemihidden1 \lsdunhideused1 \lsdlocked0 line number;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 page number;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 endnote reference;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 endnote text;
217 | \lsdsemihidden1 \lsdunhideused1 \lsdlocked0 table of authorities;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 macro;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 toa heading;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List;
218 | \lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Bullet;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Number;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List 3;
219 | \lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List 4;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List 5;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Bullet 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Bullet 3;
220 | \lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Bullet 4;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Bullet 5;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Number 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Number 3;
221 | \lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Number 4;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Number 5;\lsdqformat1 \lsdpriority10 \lsdlocked0 Title;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Closing;
222 | \lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Signature;\lsdsemihidden1 \lsdunhideused1 \lsdpriority1 \lsdlocked0 Default Paragraph Font;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Body Text;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Body Text Indent;
223 | \lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Continue;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Continue 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Continue 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Continue 4;
224 | \lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Continue 5;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Message Header;\lsdqformat1 \lsdpriority11 \lsdlocked0 Subtitle;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Salutation;
225 | \lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Date;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Body Text First Indent;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Body Text First Indent 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Note Heading;
226 | \lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Body Text 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Body Text 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Body Text Indent 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Body Text Indent 3;
227 | \lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Block Text;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Hyperlink;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 FollowedHyperlink;\lsdqformat1 \lsdpriority22 \lsdlocked0 Strong;
228 | \lsdqformat1 \lsdpriority20 \lsdlocked0 Emphasis;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Document Map;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Plain Text;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 E-mail Signature;
229 | \lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Top of Form;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Bottom of Form;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Normal (Web);\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Acronym;
230 | \lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Address;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Cite;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Code;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Definition;
231 | \lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Keyboard;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Preformatted;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Sample;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Typewriter;
232 | \lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Variable;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 annotation subject;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 No List;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Outline List 1;
233 | \lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Outline List 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Outline List 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Balloon Text;\lsdpriority39 \lsdlocked0 Table Grid;
234 | \lsdsemihidden1 \lsdlocked0 Placeholder Text;\lsdqformat1 \lsdpriority1 \lsdlocked0 No Spacing;\lsdpriority60 \lsdlocked0 Light Shading;\lsdpriority61 \lsdlocked0 Light List;\lsdpriority62 \lsdlocked0 Light Grid;
235 | \lsdpriority63 \lsdlocked0 Medium Shading 1;\lsdpriority64 \lsdlocked0 Medium Shading 2;\lsdpriority65 \lsdlocked0 Medium List 1;\lsdpriority66 \lsdlocked0 Medium List 2;\lsdpriority67 \lsdlocked0 Medium Grid 1;\lsdpriority68 \lsdlocked0 Medium Grid 2;
236 | \lsdpriority69 \lsdlocked0 Medium Grid 3;\lsdpriority70 \lsdlocked0 Dark List;\lsdpriority71 \lsdlocked0 Colorful Shading;\lsdpriority72 \lsdlocked0 Colorful List;\lsdpriority73 \lsdlocked0 Colorful Grid;\lsdpriority60 \lsdlocked0 Light Shading Accent 1;
237 | \lsdpriority61 \lsdlocked0 Light List Accent 1;\lsdpriority62 \lsdlocked0 Light Grid Accent 1;\lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 1;\lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 1;\lsdpriority65 \lsdlocked0 Medium List 1 Accent 1;
238 | \lsdsemihidden1 \lsdlocked0 Revision;\lsdqformat1 \lsdpriority34 \lsdlocked0 List Paragraph;\lsdqformat1 \lsdpriority29 \lsdlocked0 Quote;\lsdqformat1 \lsdpriority30 \lsdlocked0 Intense Quote;\lsdpriority66 \lsdlocked0 Medium List 2 Accent 1;
239 | \lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 1;\lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 1;\lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 1;\lsdpriority70 \lsdlocked0 Dark List Accent 1;\lsdpriority71 \lsdlocked0 Colorful Shading Accent 1;
240 | \lsdpriority72 \lsdlocked0 Colorful List Accent 1;\lsdpriority73 \lsdlocked0 Colorful Grid Accent 1;\lsdpriority60 \lsdlocked0 Light Shading Accent 2;\lsdpriority61 \lsdlocked0 Light List Accent 2;\lsdpriority62 \lsdlocked0 Light Grid Accent 2;
241 | \lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 2;\lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 2;\lsdpriority65 \lsdlocked0 Medium List 1 Accent 2;\lsdpriority66 \lsdlocked0 Medium List 2 Accent 2;
242 | \lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 2;\lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 2;\lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 2;\lsdpriority70 \lsdlocked0 Dark List Accent 2;\lsdpriority71 \lsdlocked0 Colorful Shading Accent 2;
243 | \lsdpriority72 \lsdlocked0 Colorful List Accent 2;\lsdpriority73 \lsdlocked0 Colorful Grid Accent 2;\lsdpriority60 \lsdlocked0 Light Shading Accent 3;\lsdpriority61 \lsdlocked0 Light List Accent 3;\lsdpriority62 \lsdlocked0 Light Grid Accent 3;
244 | \lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 3;\lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 3;\lsdpriority65 \lsdlocked0 Medium List 1 Accent 3;\lsdpriority66 \lsdlocked0 Medium List 2 Accent 3;
245 | \lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 3;\lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 3;\lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 3;\lsdpriority70 \lsdlocked0 Dark List Accent 3;\lsdpriority71 \lsdlocked0 Colorful Shading Accent 3;
246 | \lsdpriority72 \lsdlocked0 Colorful List Accent 3;\lsdpriority73 \lsdlocked0 Colorful Grid Accent 3;\lsdpriority60 \lsdlocked0 Light Shading Accent 4;\lsdpriority61 \lsdlocked0 Light List Accent 4;\lsdpriority62 \lsdlocked0 Light Grid Accent 4;
247 | \lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 4;\lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 4;\lsdpriority65 \lsdlocked0 Medium List 1 Accent 4;\lsdpriority66 \lsdlocked0 Medium List 2 Accent 4;
248 | \lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 4;\lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 4;\lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 4;\lsdpriority70 \lsdlocked0 Dark List Accent 4;\lsdpriority71 \lsdlocked0 Colorful Shading Accent 4;
249 | \lsdpriority72 \lsdlocked0 Colorful List Accent 4;\lsdpriority73 \lsdlocked0 Colorful Grid Accent 4;\lsdpriority60 \lsdlocked0 Light Shading Accent 5;\lsdpriority61 \lsdlocked0 Light List Accent 5;\lsdpriority62 \lsdlocked0 Light Grid Accent 5;
250 | \lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 5;\lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 5;\lsdpriority65 \lsdlocked0 Medium List 1 Accent 5;\lsdpriority66 \lsdlocked0 Medium List 2 Accent 5;
251 | \lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 5;\lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 5;\lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 5;\lsdpriority70 \lsdlocked0 Dark List Accent 5;\lsdpriority71 \lsdlocked0 Colorful Shading Accent 5;
252 | \lsdpriority72 \lsdlocked0 Colorful List Accent 5;\lsdpriority73 \lsdlocked0 Colorful Grid Accent 5;\lsdpriority60 \lsdlocked0 Light Shading Accent 6;\lsdpriority61 \lsdlocked0 Light List Accent 6;\lsdpriority62 \lsdlocked0 Light Grid Accent 6;
253 | \lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 6;\lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 6;\lsdpriority65 \lsdlocked0 Medium List 1 Accent 6;\lsdpriority66 \lsdlocked0 Medium List 2 Accent 6;
254 | \lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 6;\lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 6;\lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 6;\lsdpriority70 \lsdlocked0 Dark List Accent 6;\lsdpriority71 \lsdlocked0 Colorful Shading Accent 6;
255 | \lsdpriority72 \lsdlocked0 Colorful List Accent 6;\lsdpriority73 \lsdlocked0 Colorful Grid Accent 6;\lsdqformat1 \lsdpriority19 \lsdlocked0 Subtle Emphasis;\lsdqformat1 \lsdpriority21 \lsdlocked0 Intense Emphasis;
256 | \lsdqformat1 \lsdpriority31 \lsdlocked0 Subtle Reference;\lsdqformat1 \lsdpriority32 \lsdlocked0 Intense Reference;\lsdqformat1 \lsdpriority33 \lsdlocked0 Book Title;\lsdsemihidden1 \lsdunhideused1 \lsdpriority37 \lsdlocked0 Bibliography;
257 | \lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdpriority39 \lsdlocked0 TOC Heading;\lsdpriority41 \lsdlocked0 Plain Table 1;\lsdpriority42 \lsdlocked0 Plain Table 2;\lsdpriority43 \lsdlocked0 Plain Table 3;\lsdpriority44 \lsdlocked0 Plain Table 4;
258 | \lsdpriority45 \lsdlocked0 Plain Table 5;\lsdpriority40 \lsdlocked0 Grid Table Light;\lsdpriority46 \lsdlocked0 Grid Table 1 Light;\lsdpriority47 \lsdlocked0 Grid Table 2;\lsdpriority48 \lsdlocked0 Grid Table 3;\lsdpriority49 \lsdlocked0 Grid Table 4;
259 | \lsdpriority50 \lsdlocked0 Grid Table 5 Dark;\lsdpriority51 \lsdlocked0 Grid Table 6 Colorful;\lsdpriority52 \lsdlocked0 Grid Table 7 Colorful;\lsdpriority46 \lsdlocked0 Grid Table 1 Light Accent 1;\lsdpriority47 \lsdlocked0 Grid Table 2 Accent 1;
260 | \lsdpriority48 \lsdlocked0 Grid Table 3 Accent 1;\lsdpriority49 \lsdlocked0 Grid Table 4 Accent 1;\lsdpriority50 \lsdlocked0 Grid Table 5 Dark Accent 1;\lsdpriority51 \lsdlocked0 Grid Table 6 Colorful Accent 1;
261 | \lsdpriority52 \lsdlocked0 Grid Table 7 Colorful Accent 1;\lsdpriority46 \lsdlocked0 Grid Table 1 Light Accent 2;\lsdpriority47 \lsdlocked0 Grid Table 2 Accent 2;\lsdpriority48 \lsdlocked0 Grid Table 3 Accent 2;
262 | \lsdpriority49 \lsdlocked0 Grid Table 4 Accent 2;\lsdpriority50 \lsdlocked0 Grid Table 5 Dark Accent 2;\lsdpriority51 \lsdlocked0 Grid Table 6 Colorful Accent 2;\lsdpriority52 \lsdlocked0 Grid Table 7 Colorful Accent 2;
263 | \lsdpriority46 \lsdlocked0 Grid Table 1 Light Accent 3;\lsdpriority47 \lsdlocked0 Grid Table 2 Accent 3;\lsdpriority48 \lsdlocked0 Grid Table 3 Accent 3;\lsdpriority49 \lsdlocked0 Grid Table 4 Accent 3;
264 | \lsdpriority50 \lsdlocked0 Grid Table 5 Dark Accent 3;\lsdpriority51 \lsdlocked0 Grid Table 6 Colorful Accent 3;\lsdpriority52 \lsdlocked0 Grid Table 7 Colorful Accent 3;\lsdpriority46 \lsdlocked0 Grid Table 1 Light Accent 4;
265 | \lsdpriority47 \lsdlocked0 Grid Table 2 Accent 4;\lsdpriority48 \lsdlocked0 Grid Table 3 Accent 4;\lsdpriority49 \lsdlocked0 Grid Table 4 Accent 4;\lsdpriority50 \lsdlocked0 Grid Table 5 Dark Accent 4;
266 | \lsdpriority51 \lsdlocked0 Grid Table 6 Colorful Accent 4;\lsdpriority52 \lsdlocked0 Grid Table 7 Colorful Accent 4;\lsdpriority46 \lsdlocked0 Grid Table 1 Light Accent 5;\lsdpriority47 \lsdlocked0 Grid Table 2 Accent 5;
267 | \lsdpriority48 \lsdlocked0 Grid Table 3 Accent 5;\lsdpriority49 \lsdlocked0 Grid Table 4 Accent 5;\lsdpriority50 \lsdlocked0 Grid Table 5 Dark Accent 5;\lsdpriority51 \lsdlocked0 Grid Table 6 Colorful Accent 5;
268 | \lsdpriority52 \lsdlocked0 Grid Table 7 Colorful Accent 5;\lsdpriority46 \lsdlocked0 Grid Table 1 Light Accent 6;\lsdpriority47 \lsdlocked0 Grid Table 2 Accent 6;\lsdpriority48 \lsdlocked0 Grid Table 3 Accent 6;
269 | \lsdpriority49 \lsdlocked0 Grid Table 4 Accent 6;\lsdpriority50 \lsdlocked0 Grid Table 5 Dark Accent 6;\lsdpriority51 \lsdlocked0 Grid Table 6 Colorful Accent 6;\lsdpriority52 \lsdlocked0 Grid Table 7 Colorful Accent 6;
270 | \lsdpriority46 \lsdlocked0 List Table 1 Light;\lsdpriority47 \lsdlocked0 List Table 2;\lsdpriority48 \lsdlocked0 List Table 3;\lsdpriority49 \lsdlocked0 List Table 4;\lsdpriority50 \lsdlocked0 List Table 5 Dark;
271 | \lsdpriority51 \lsdlocked0 List Table 6 Colorful;\lsdpriority52 \lsdlocked0 List Table 7 Colorful;\lsdpriority46 \lsdlocked0 List Table 1 Light Accent 1;\lsdpriority47 \lsdlocked0 List Table 2 Accent 1;\lsdpriority48 \lsdlocked0 List Table 3 Accent 1;
272 | \lsdpriority49 \lsdlocked0 List Table 4 Accent 1;\lsdpriority50 \lsdlocked0 List Table 5 Dark Accent 1;\lsdpriority51 \lsdlocked0 List Table 6 Colorful Accent 1;\lsdpriority52 \lsdlocked0 List Table 7 Colorful Accent 1;
273 | \lsdpriority46 \lsdlocked0 List Table 1 Light Accent 2;\lsdpriority47 \lsdlocked0 List Table 2 Accent 2;\lsdpriority48 \lsdlocked0 List Table 3 Accent 2;\lsdpriority49 \lsdlocked0 List Table 4 Accent 2;
274 | \lsdpriority50 \lsdlocked0 List Table 5 Dark Accent 2;\lsdpriority51 \lsdlocked0 List Table 6 Colorful Accent 2;\lsdpriority52 \lsdlocked0 List Table 7 Colorful Accent 2;\lsdpriority46 \lsdlocked0 List Table 1 Light Accent 3;
275 | \lsdpriority47 \lsdlocked0 List Table 2 Accent 3;\lsdpriority48 \lsdlocked0 List Table 3 Accent 3;\lsdpriority49 \lsdlocked0 List Table 4 Accent 3;\lsdpriority50 \lsdlocked0 List Table 5 Dark Accent 3;
276 | \lsdpriority51 \lsdlocked0 List Table 6 Colorful Accent 3;\lsdpriority52 \lsdlocked0 List Table 7 Colorful Accent 3;\lsdpriority46 \lsdlocked0 List Table 1 Light Accent 4;\lsdpriority47 \lsdlocked0 List Table 2 Accent 4;
277 | \lsdpriority48 \lsdlocked0 List Table 3 Accent 4;\lsdpriority49 \lsdlocked0 List Table 4 Accent 4;\lsdpriority50 \lsdlocked0 List Table 5 Dark Accent 4;\lsdpriority51 \lsdlocked0 List Table 6 Colorful Accent 4;
278 | \lsdpriority52 \lsdlocked0 List Table 7 Colorful Accent 4;\lsdpriority46 \lsdlocked0 List Table 1 Light Accent 5;\lsdpriority47 \lsdlocked0 List Table 2 Accent 5;\lsdpriority48 \lsdlocked0 List Table 3 Accent 5;
279 | \lsdpriority49 \lsdlocked0 List Table 4 Accent 5;\lsdpriority50 \lsdlocked0 List Table 5 Dark Accent 5;\lsdpriority51 \lsdlocked0 List Table 6 Colorful Accent 5;\lsdpriority52 \lsdlocked0 List Table 7 Colorful Accent 5;
280 | \lsdpriority46 \lsdlocked0 List Table 1 Light Accent 6;\lsdpriority47 \lsdlocked0 List Table 2 Accent 6;\lsdpriority48 \lsdlocked0 List Table 3 Accent 6;\lsdpriority49 \lsdlocked0 List Table 4 Accent 6;
281 | \lsdpriority50 \lsdlocked0 List Table 5 Dark Accent 6;\lsdpriority51 \lsdlocked0 List Table 6 Colorful Accent 6;\lsdpriority52 \lsdlocked0 List Table 7 Colorful Accent 6;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Mention;
282 | \lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Smart Hyperlink;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Hashtag;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Unresolved Mention;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Smart Link;}}{\*\datastore 01050000
283 | 02000000180000004d73786d6c322e534158584d4c5265616465722e362e3000000000000000000000060000
284 | d0cf11e0a1b11ae1000000000000000000000000000000003e000300feff090006000000000000000000000001000000010000000000000000100000feffffff00000000feffffff0000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
285 | ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
286 | ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
287 | ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
288 | fffffffffffffffffdfffffffeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
289 | ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
290 | ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
291 | ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
292 | ffffffffffffffffffffffffffffffff52006f006f007400200045006e00740072007900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000016000500ffffffffffffffffffffffff0c6ad98892f1d411a65f0040963251e5000000000000000000000000f0e3
293 | 8d5233c3da01feffffff00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff00000000000000000000000000000000000000000000000000000000
294 | 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff0000000000000000000000000000000000000000000000000000
295 | 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff000000000000000000000000000000000000000000000000
296 | 0000000000000000000000000000000000000000000000000105000000000000}}
--------------------------------------------------------------------------------
/source/icon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DosX-dev/BatchToApp/d64ef0eacd2f0db28957367a0eda87a2820ea37d/source/icon.ico
--------------------------------------------------------------------------------
/source/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DosX-dev/BatchToApp/d64ef0eacd2f0db28957367a0eda87a2820ea37d/source/logo.png
--------------------------------------------------------------------------------