├── .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 | > ![](./pics/1.png) 11 | > ![](./pics/2.png) 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 --------------------------------------------------------------------------------