├── .gitignore ├── LICENSE ├── README.md └── SharpLoader ├── App.config ├── Core ├── RuntimeCompiler.cs └── SourceRandomizer.cs ├── FodyWeavers.xml ├── MainForm.Designer.cs ├── MainForm.cs ├── MainForm.resx ├── NetSeal.cs ├── Program.cs ├── Properties ├── AssemblyInfo.cs ├── Resources.Designer.cs └── Resources.resx ├── Resources └── SharpLoader.ico ├── SelectForm.Designer.cs ├── SelectForm.cs ├── SelectForm.resx ├── SharpLoader.csproj ├── SharpLoader.sln ├── ThemeContainer154.cs ├── WinApi.cs ├── app.manifest ├── bin.zip └── packages.config /.gitignore: -------------------------------------------------------------------------------- 1 | ## Ignore Visual Studio temporary files, build results, and 2 | ## files generated by popular Visual Studio add-ons. 3 | 4 | # User-specific files 5 | *.suo 6 | *.user 7 | *.userosscache 8 | *.sln.docstates 9 | 10 | # User-specific files (MonoDevelop/Xamarin Studio) 11 | *.userprefs 12 | 13 | # Build results 14 | [Dd]ebug/ 15 | [Dd]ebugPublic/ 16 | [Rr]elease/ 17 | [Rr]eleases/ 18 | x64/ 19 | x86/ 20 | bld/ 21 | [Bb]in/ 22 | [Oo]bj/ 23 | [Ll]og/ 24 | 25 | # Visual Studio 2015 cache/options directory 26 | .vs/ 27 | # Uncomment if you have tasks that create the project's static files in wwwroot 28 | #wwwroot/ 29 | 30 | # MSTest test Results 31 | [Tt]est[Rr]esult*/ 32 | [Bb]uild[Ll]og.* 33 | 34 | # NUNIT 35 | *.VisualState.xml 36 | TestResult.xml 37 | 38 | # Build Results of an ATL Project 39 | [Dd]ebugPS/ 40 | [Rr]eleasePS/ 41 | dlldata.c 42 | 43 | # DNX 44 | project.lock.json 45 | artifacts/ 46 | 47 | *_i.c 48 | *_p.c 49 | *_i.h 50 | *.ilk 51 | *.meta 52 | *.obj 53 | *.pch 54 | *.pdb 55 | *.pgc 56 | *.pgd 57 | *.rsp 58 | *.sbr 59 | *.tlb 60 | *.tli 61 | *.tlh 62 | *.tmp 63 | *.tmp_proj 64 | *.log 65 | *.vspscc 66 | *.vssscc 67 | .builds 68 | *.pidb 69 | *.svclog 70 | *.scc 71 | 72 | # Chutzpah Test files 73 | _Chutzpah* 74 | 75 | # Visual C++ cache files 76 | ipch/ 77 | *.aps 78 | *.ncb 79 | *.opendb 80 | *.opensdf 81 | *.sdf 82 | *.cachefile 83 | *.VC.db 84 | *.VC.VC.opendb 85 | 86 | # Visual Studio profiler 87 | *.psess 88 | *.vsp 89 | *.vspx 90 | *.sap 91 | 92 | # TFS 2012 Local Workspace 93 | $tf/ 94 | 95 | # Guidance Automation Toolkit 96 | *.gpState 97 | 98 | # ReSharper is a .NET coding add-in 99 | _ReSharper*/ 100 | *.[Rr]e[Ss]harper 101 | *.DotSettings.user 102 | 103 | # JustCode is a .NET coding add-in 104 | .JustCode 105 | 106 | # TeamCity is a build add-in 107 | _TeamCity* 108 | 109 | # DotCover is a Code Coverage Tool 110 | *.dotCover 111 | 112 | # NCrunch 113 | _NCrunch_* 114 | .*crunch*.local.xml 115 | nCrunchTemp_* 116 | 117 | # MightyMoose 118 | *.mm.* 119 | AutoTest.Net/ 120 | 121 | # Web workbench (sass) 122 | .sass-cache/ 123 | 124 | # Installshield output folder 125 | [Ee]xpress/ 126 | 127 | # DocProject is a documentation generator add-in 128 | DocProject/buildhelp/ 129 | DocProject/Help/*.HxT 130 | DocProject/Help/*.HxC 131 | DocProject/Help/*.hhc 132 | DocProject/Help/*.hhk 133 | DocProject/Help/*.hhp 134 | DocProject/Help/Html2 135 | DocProject/Help/html 136 | 137 | # Click-Once directory 138 | publish/ 139 | 140 | # Publish Web Output 141 | *.[Pp]ublish.xml 142 | *.azurePubxml 143 | # TODO: Comment the next line if you want to checkin your web deploy settings 144 | # but database connection strings (with potential passwords) will be unencrypted 145 | *.pubxml 146 | *.publishproj 147 | 148 | # Microsoft Azure Web App publish settings. Comment the next line if you want to 149 | # checkin your Azure Web App publish settings, but sensitive information contained 150 | # in these scripts will be unencrypted 151 | PublishScripts/ 152 | 153 | # NuGet Packages 154 | *.nupkg 155 | # The packages folder can be ignored because of Package Restore 156 | **/packages/* 157 | # except build/, which is used as an MSBuild target. 158 | !**/packages/build/ 159 | # Uncomment if necessary however generally it will be regenerated when needed 160 | #!**/packages/repositories.config 161 | # NuGet v3's project.json files produces more ignoreable files 162 | *.nuget.props 163 | *.nuget.targets 164 | 165 | # Microsoft Azure Build Output 166 | csx/ 167 | *.build.csdef 168 | 169 | # Microsoft Azure Emulator 170 | ecf/ 171 | rcf/ 172 | 173 | # Windows Store app package directories and files 174 | AppPackages/ 175 | BundleArtifacts/ 176 | Package.StoreAssociation.xml 177 | _pkginfo.txt 178 | 179 | # Visual Studio cache files 180 | # files ending in .cache can be ignored 181 | *.[Cc]ache 182 | # but keep track of directories ending in .cache 183 | !*.[Cc]ache/ 184 | 185 | # Others 186 | ClientBin/ 187 | ~$* 188 | *~ 189 | *.dbmdl 190 | *.dbproj.schemaview 191 | *.pfx 192 | *.publishsettings 193 | node_modules/ 194 | orleans.codegen.cs 195 | 196 | # Since there are multiple workflows, uncomment next line to ignore bower_components 197 | # (https://github.com/github/gitignore/pull/1529#issuecomment-104372622) 198 | #bower_components/ 199 | 200 | # RIA/Silverlight projects 201 | Generated_Code/ 202 | 203 | # Backup & report files from converting an old project file 204 | # to a newer Visual Studio version. Backup files are not needed, 205 | # because we have git ;-) 206 | _UpgradeReport_Files/ 207 | Backup*/ 208 | UpgradeLog*.XML 209 | UpgradeLog*.htm 210 | 211 | # SQL Server files 212 | *.mdf 213 | *.ldf 214 | 215 | # Business Intelligence projects 216 | *.rdl.data 217 | *.bim.layout 218 | *.bim_*.settings 219 | 220 | # Microsoft Fakes 221 | FakesAssemblies/ 222 | 223 | # GhostDoc plugin setting file 224 | *.GhostDoc.xml 225 | 226 | # Node.js Tools for Visual Studio 227 | .ntvs_analysis.dat 228 | 229 | # Visual Studio 6 build log 230 | *.plg 231 | 232 | # Visual Studio 6 workspace options file 233 | *.opt 234 | 235 | # Visual Studio LightSwitch build output 236 | **/*.HTMLClient/GeneratedArtifacts 237 | **/*.DesktopClient/GeneratedArtifacts 238 | **/*.DesktopClient/ModelManifest.xml 239 | **/*.Server/GeneratedArtifacts 240 | **/*.Server/ModelManifest.xml 241 | _Pvt_Extensions 242 | 243 | # Paket dependency manager 244 | .paket/paket.exe 245 | paket-files/ 246 | 247 | # FAKE - F# Make 248 | .fake/ 249 | 250 | # JetBrains Rider 251 | .idea/ 252 | *.sln.iml 253 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | GNU GENERAL PUBLIC LICENSE 2 | Version 3, 29 June 2007 3 | 4 | Copyright (C) 2007 Free Software Foundation, Inc. 5 | Everyone is permitted to copy and distribute verbatim copies 6 | of this license document, but changing it is not allowed. 7 | 8 | Preamble 9 | 10 | The GNU General Public License is a free, copyleft license for 11 | software and other kinds of works. 12 | 13 | The licenses for most software and other practical works are designed 14 | to take away your freedom to share and change the works. By contrast, 15 | the GNU General Public License is intended to guarantee your freedom to 16 | share and change all versions of a program--to make sure it remains free 17 | software for all its users. We, the Free Software Foundation, use the 18 | GNU General Public License for most of our software; it applies also to 19 | any other work released this way by its authors. You can apply it to 20 | your programs, too. 21 | 22 | When we speak of free software, we are referring to freedom, not 23 | price. Our General Public Licenses are designed to make sure that you 24 | have the freedom to distribute copies of free software (and charge for 25 | them if you wish), that you receive source code or can get it if you 26 | want it, that you can change the software or use pieces of it in new 27 | free programs, and that you know you can do these things. 28 | 29 | To protect your rights, we need to prevent others from denying you 30 | these rights or asking you to surrender the rights. Therefore, you have 31 | certain responsibilities if you distribute copies of the software, or if 32 | you modify it: responsibilities to respect the freedom of others. 33 | 34 | For example, if you distribute copies of such a program, whether 35 | gratis or for a fee, you must pass on to the recipients the same 36 | freedoms that you received. You must make sure that they, too, receive 37 | or can get the source code. And you must show them these terms so they 38 | know their rights. 39 | 40 | Developers that use the GNU GPL protect your rights with two steps: 41 | (1) assert copyright on the software, and (2) offer you this License 42 | giving you legal permission to copy, distribute and/or modify it. 43 | 44 | For the developers' and authors' protection, the GPL clearly explains 45 | that there is no warranty for this free software. For both users' and 46 | authors' sake, the GPL requires that modified versions be marked as 47 | changed, so that their problems will not be attributed erroneously to 48 | authors of previous versions. 49 | 50 | Some devices are designed to deny users access to install or run 51 | modified versions of the software inside them, although the manufacturer 52 | can do so. This is fundamentally incompatible with the aim of 53 | protecting users' freedom to change the software. The systematic 54 | pattern of such abuse occurs in the area of products for individuals to 55 | use, which is precisely where it is most unacceptable. Therefore, we 56 | have designed this version of the GPL to prohibit the practice for those 57 | products. If such problems arise substantially in other domains, we 58 | stand ready to extend this provision to those domains in future versions 59 | of the GPL, as needed to protect the freedom of users. 60 | 61 | Finally, every program is threatened constantly by software patents. 62 | States should not allow patents to restrict development and use of 63 | software on general-purpose computers, but in those that do, we wish to 64 | avoid the special danger that patents applied to a free program could 65 | make it effectively proprietary. To prevent this, the GPL assures that 66 | patents cannot be used to render the program non-free. 67 | 68 | The precise terms and conditions for copying, distribution and 69 | modification follow. 70 | 71 | TERMS AND CONDITIONS 72 | 73 | 0. Definitions. 74 | 75 | "This License" refers to version 3 of the GNU General Public License. 76 | 77 | "Copyright" also means copyright-like laws that apply to other kinds of 78 | works, such as semiconductor masks. 79 | 80 | "The Program" refers to any copyrightable work licensed under this 81 | License. Each licensee is addressed as "you". "Licensees" and 82 | "recipients" may be individuals or organizations. 83 | 84 | To "modify" a work means to copy from or adapt all or part of the work 85 | in a fashion requiring copyright permission, other than the making of an 86 | exact copy. The resulting work is called a "modified version" of the 87 | earlier work or a work "based on" the earlier work. 88 | 89 | A "covered work" means either the unmodified Program or a work based 90 | on the Program. 91 | 92 | To "propagate" a work means to do anything with it that, without 93 | permission, would make you directly or secondarily liable for 94 | infringement under applicable copyright law, except executing it on a 95 | computer or modifying a private copy. Propagation includes copying, 96 | distribution (with or without modification), making available to the 97 | public, and in some countries other activities as well. 98 | 99 | To "convey" a work means any kind of propagation that enables other 100 | parties to make or receive copies. Mere interaction with a user through 101 | a computer network, with no transfer of a copy, is not conveying. 102 | 103 | An interactive user interface displays "Appropriate Legal Notices" 104 | to the extent that it includes a convenient and prominently visible 105 | feature that (1) displays an appropriate copyright notice, and (2) 106 | tells the user that there is no warranty for the work (except to the 107 | extent that warranties are provided), that licensees may convey the 108 | work under this License, and how to view a copy of this License. If 109 | the interface presents a list of user commands or options, such as a 110 | menu, a prominent item in the list meets this criterion. 111 | 112 | 1. Source Code. 113 | 114 | The "source code" for a work means the preferred form of the work 115 | for making modifications to it. "Object code" means any non-source 116 | form of a work. 117 | 118 | A "Standard Interface" means an interface that either is an official 119 | standard defined by a recognized standards body, or, in the case of 120 | interfaces specified for a particular programming language, one that 121 | is widely used among developers working in that language. 122 | 123 | The "System Libraries" of an executable work include anything, other 124 | than the work as a whole, that (a) is included in the normal form of 125 | packaging a Major Component, but which is not part of that Major 126 | Component, and (b) serves only to enable use of the work with that 127 | Major Component, or to implement a Standard Interface for which an 128 | implementation is available to the public in source code form. A 129 | "Major Component", in this context, means a major essential component 130 | (kernel, window system, and so on) of the specific operating system 131 | (if any) on which the executable work runs, or a compiler used to 132 | produce the work, or an object code interpreter used to run it. 133 | 134 | The "Corresponding Source" for a work in object code form means all 135 | the source code needed to generate, install, and (for an executable 136 | work) run the object code and to modify the work, including scripts to 137 | control those activities. However, it does not include the work's 138 | System Libraries, or general-purpose tools or generally available free 139 | programs which are used unmodified in performing those activities but 140 | which are not part of the work. For example, Corresponding Source 141 | includes interface definition files associated with source files for 142 | the work, and the source code for shared libraries and dynamically 143 | linked subprograms that the work is specifically designed to require, 144 | such as by intimate data communication or control flow between those 145 | subprograms and other parts of the work. 146 | 147 | The Corresponding Source need not include anything that users 148 | can regenerate automatically from other parts of the Corresponding 149 | Source. 150 | 151 | The Corresponding Source for a work in source code form is that 152 | same work. 153 | 154 | 2. Basic Permissions. 155 | 156 | All rights granted under this License are granted for the term of 157 | copyright on the Program, and are irrevocable provided the stated 158 | conditions are met. This License explicitly affirms your unlimited 159 | permission to run the unmodified Program. The output from running a 160 | covered work is covered by this License only if the output, given its 161 | content, constitutes a covered work. This License acknowledges your 162 | rights of fair use or other equivalent, as provided by copyright law. 163 | 164 | You may make, run and propagate covered works that you do not 165 | convey, without conditions so long as your license otherwise remains 166 | in force. You may convey covered works to others for the sole purpose 167 | of having them make modifications exclusively for you, or provide you 168 | with facilities for running those works, provided that you comply with 169 | the terms of this License in conveying all material for which you do 170 | not control copyright. Those thus making or running the covered works 171 | for you must do so exclusively on your behalf, under your direction 172 | and control, on terms that prohibit them from making any copies of 173 | your copyrighted material outside their relationship with you. 174 | 175 | Conveying under any other circumstances is permitted solely under 176 | the conditions stated below. Sublicensing is not allowed; section 10 177 | makes it unnecessary. 178 | 179 | 3. Protecting Users' Legal Rights From Anti-Circumvention Law. 180 | 181 | No covered work shall be deemed part of an effective technological 182 | measure under any applicable law fulfilling obligations under article 183 | 11 of the WIPO copyright treaty adopted on 20 December 1996, or 184 | similar laws prohibiting or restricting circumvention of such 185 | measures. 186 | 187 | When you convey a covered work, you waive any legal power to forbid 188 | circumvention of technological measures to the extent such circumvention 189 | is effected by exercising rights under this License with respect to 190 | the covered work, and you disclaim any intention to limit operation or 191 | modification of the work as a means of enforcing, against the work's 192 | users, your or third parties' legal rights to forbid circumvention of 193 | technological measures. 194 | 195 | 4. Conveying Verbatim Copies. 196 | 197 | You may convey verbatim copies of the Program's source code as you 198 | receive it, in any medium, provided that you conspicuously and 199 | appropriately publish on each copy an appropriate copyright notice; 200 | keep intact all notices stating that this License and any 201 | non-permissive terms added in accord with section 7 apply to the code; 202 | keep intact all notices of the absence of any warranty; and give all 203 | recipients a copy of this License along with the Program. 204 | 205 | You may charge any price or no price for each copy that you convey, 206 | and you may offer support or warranty protection for a fee. 207 | 208 | 5. Conveying Modified Source Versions. 209 | 210 | You may convey a work based on the Program, or the modifications to 211 | produce it from the Program, in the form of source code under the 212 | terms of section 4, provided that you also meet all of these conditions: 213 | 214 | a) The work must carry prominent notices stating that you modified 215 | it, and giving a relevant date. 216 | 217 | b) The work must carry prominent notices stating that it is 218 | released under this License and any conditions added under section 219 | 7. This requirement modifies the requirement in section 4 to 220 | "keep intact all notices". 221 | 222 | c) You must license the entire work, as a whole, under this 223 | License to anyone who comes into possession of a copy. This 224 | License will therefore apply, along with any applicable section 7 225 | additional terms, to the whole of the work, and all its parts, 226 | regardless of how they are packaged. This License gives no 227 | permission to license the work in any other way, but it does not 228 | invalidate such permission if you have separately received it. 229 | 230 | d) If the work has interactive user interfaces, each must display 231 | Appropriate Legal Notices; however, if the Program has interactive 232 | interfaces that do not display Appropriate Legal Notices, your 233 | work need not make them do so. 234 | 235 | A compilation of a covered work with other separate and independent 236 | works, which are not by their nature extensions of the covered work, 237 | and which are not combined with it such as to form a larger program, 238 | in or on a volume of a storage or distribution medium, is called an 239 | "aggregate" if the compilation and its resulting copyright are not 240 | used to limit the access or legal rights of the compilation's users 241 | beyond what the individual works permit. Inclusion of a covered work 242 | in an aggregate does not cause this License to apply to the other 243 | parts of the aggregate. 244 | 245 | 6. Conveying Non-Source Forms. 246 | 247 | You may convey a covered work in object code form under the terms 248 | of sections 4 and 5, provided that you also convey the 249 | machine-readable Corresponding Source under the terms of this License, 250 | in one of these ways: 251 | 252 | a) Convey the object code in, or embodied in, a physical product 253 | (including a physical distribution medium), accompanied by the 254 | Corresponding Source fixed on a durable physical medium 255 | customarily used for software interchange. 256 | 257 | b) Convey the object code in, or embodied in, a physical product 258 | (including a physical distribution medium), accompanied by a 259 | written offer, valid for at least three years and valid for as 260 | long as you offer spare parts or customer support for that product 261 | model, to give anyone who possesses the object code either (1) a 262 | copy of the Corresponding Source for all the software in the 263 | product that is covered by this License, on a durable physical 264 | medium customarily used for software interchange, for a price no 265 | more than your reasonable cost of physically performing this 266 | conveying of source, or (2) access to copy the 267 | Corresponding Source from a network server at no charge. 268 | 269 | c) Convey individual copies of the object code with a copy of the 270 | written offer to provide the Corresponding Source. This 271 | alternative is allowed only occasionally and noncommercially, and 272 | only if you received the object code with such an offer, in accord 273 | with subsection 6b. 274 | 275 | d) Convey the object code by offering access from a designated 276 | place (gratis or for a charge), and offer equivalent access to the 277 | Corresponding Source in the same way through the same place at no 278 | further charge. You need not require recipients to copy the 279 | Corresponding Source along with the object code. If the place to 280 | copy the object code is a network server, the Corresponding Source 281 | may be on a different server (operated by you or a third party) 282 | that supports equivalent copying facilities, provided you maintain 283 | clear directions next to the object code saying where to find the 284 | Corresponding Source. Regardless of what server hosts the 285 | Corresponding Source, you remain obligated to ensure that it is 286 | available for as long as needed to satisfy these requirements. 287 | 288 | e) Convey the object code using peer-to-peer transmission, provided 289 | you inform other peers where the object code and Corresponding 290 | Source of the work are being offered to the general public at no 291 | charge under subsection 6d. 292 | 293 | A separable portion of the object code, whose source code is excluded 294 | from the Corresponding Source as a System Library, need not be 295 | included in conveying the object code work. 296 | 297 | A "User Product" is either (1) a "consumer product", which means any 298 | tangible personal property which is normally used for personal, family, 299 | or household purposes, or (2) anything designed or sold for incorporation 300 | into a dwelling. In determining whether a product is a consumer product, 301 | doubtful cases shall be resolved in favor of coverage. For a particular 302 | product received by a particular user, "normally used" refers to a 303 | typical or common use of that class of product, regardless of the status 304 | of the particular user or of the way in which the particular user 305 | actually uses, or expects or is expected to use, the product. A product 306 | is a consumer product regardless of whether the product has substantial 307 | commercial, industrial or non-consumer uses, unless such uses represent 308 | the only significant mode of use of the product. 309 | 310 | "Installation Information" for a User Product means any methods, 311 | procedures, authorization keys, or other information required to install 312 | and execute modified versions of a covered work in that User Product from 313 | a modified version of its Corresponding Source. The information must 314 | suffice to ensure that the continued functioning of the modified object 315 | code is in no case prevented or interfered with solely because 316 | modification has been made. 317 | 318 | If you convey an object code work under this section in, or with, or 319 | specifically for use in, a User Product, and the conveying occurs as 320 | part of a transaction in which the right of possession and use of the 321 | User Product is transferred to the recipient in perpetuity or for a 322 | fixed term (regardless of how the transaction is characterized), the 323 | Corresponding Source conveyed under this section must be accompanied 324 | by the Installation Information. But this requirement does not apply 325 | if neither you nor any third party retains the ability to install 326 | modified object code on the User Product (for example, the work has 327 | been installed in ROM). 328 | 329 | The requirement to provide Installation Information does not include a 330 | requirement to continue to provide support service, warranty, or updates 331 | for a work that has been modified or installed by the recipient, or for 332 | the User Product in which it has been modified or installed. Access to a 333 | network may be denied when the modification itself materially and 334 | adversely affects the operation of the network or violates the rules and 335 | protocols for communication across the network. 336 | 337 | Corresponding Source conveyed, and Installation Information provided, 338 | in accord with this section must be in a format that is publicly 339 | documented (and with an implementation available to the public in 340 | source code form), and must require no special password or key for 341 | unpacking, reading or copying. 342 | 343 | 7. Additional Terms. 344 | 345 | "Additional permissions" are terms that supplement the terms of this 346 | License by making exceptions from one or more of its conditions. 347 | Additional permissions that are applicable to the entire Program shall 348 | be treated as though they were included in this License, to the extent 349 | that they are valid under applicable law. If additional permissions 350 | apply only to part of the Program, that part may be used separately 351 | under those permissions, but the entire Program remains governed by 352 | this License without regard to the additional permissions. 353 | 354 | When you convey a copy of a covered work, you may at your option 355 | remove any additional permissions from that copy, or from any part of 356 | it. (Additional permissions may be written to require their own 357 | removal in certain cases when you modify the work.) You may place 358 | additional permissions on material, added by you to a covered work, 359 | for which you have or can give appropriate copyright permission. 360 | 361 | Notwithstanding any other provision of this License, for material you 362 | add to a covered work, you may (if authorized by the copyright holders of 363 | that material) supplement the terms of this License with terms: 364 | 365 | a) Disclaiming warranty or limiting liability differently from the 366 | terms of sections 15 and 16 of this License; or 367 | 368 | b) Requiring preservation of specified reasonable legal notices or 369 | author attributions in that material or in the Appropriate Legal 370 | Notices displayed by works containing it; or 371 | 372 | c) Prohibiting misrepresentation of the origin of that material, or 373 | requiring that modified versions of such material be marked in 374 | reasonable ways as different from the original version; or 375 | 376 | d) Limiting the use for publicity purposes of names of licensors or 377 | authors of the material; or 378 | 379 | e) Declining to grant rights under trademark law for use of some 380 | trade names, trademarks, or service marks; or 381 | 382 | f) Requiring indemnification of licensors and authors of that 383 | material by anyone who conveys the material (or modified versions of 384 | it) with contractual assumptions of liability to the recipient, for 385 | any liability that these contractual assumptions directly impose on 386 | those licensors and authors. 387 | 388 | All other non-permissive additional terms are considered "further 389 | restrictions" within the meaning of section 10. If the Program as you 390 | received it, or any part of it, contains a notice stating that it is 391 | governed by this License along with a term that is a further 392 | restriction, you may remove that term. If a license document contains 393 | a further restriction but permits relicensing or conveying under this 394 | License, you may add to a covered work material governed by the terms 395 | of that license document, provided that the further restriction does 396 | not survive such relicensing or conveying. 397 | 398 | If you add terms to a covered work in accord with this section, you 399 | must place, in the relevant source files, a statement of the 400 | additional terms that apply to those files, or a notice indicating 401 | where to find the applicable terms. 402 | 403 | Additional terms, permissive or non-permissive, may be stated in the 404 | form of a separately written license, or stated as exceptions; 405 | the above requirements apply either way. 406 | 407 | 8. Termination. 408 | 409 | You may not propagate or modify a covered work except as expressly 410 | provided under this License. Any attempt otherwise to propagate or 411 | modify it is void, and will automatically terminate your rights under 412 | this License (including any patent licenses granted under the third 413 | paragraph of section 11). 414 | 415 | However, if you cease all violation of this License, then your 416 | license from a particular copyright holder is reinstated (a) 417 | provisionally, unless and until the copyright holder explicitly and 418 | finally terminates your license, and (b) permanently, if the copyright 419 | holder fails to notify you of the violation by some reasonable means 420 | prior to 60 days after the cessation. 421 | 422 | Moreover, your license from a particular copyright holder is 423 | reinstated permanently if the copyright holder notifies you of the 424 | violation by some reasonable means, this is the first time you have 425 | received notice of violation of this License (for any work) from that 426 | copyright holder, and you cure the violation prior to 30 days after 427 | your receipt of the notice. 428 | 429 | Termination of your rights under this section does not terminate the 430 | licenses of parties who have received copies or rights from you under 431 | this License. If your rights have been terminated and not permanently 432 | reinstated, you do not qualify to receive new licenses for the same 433 | material under section 10. 434 | 435 | 9. Acceptance Not Required for Having Copies. 436 | 437 | You are not required to accept this License in order to receive or 438 | run a copy of the Program. Ancillary propagation of a covered work 439 | occurring solely as a consequence of using peer-to-peer transmission 440 | to receive a copy likewise does not require acceptance. However, 441 | nothing other than this License grants you permission to propagate or 442 | modify any covered work. These actions infringe copyright if you do 443 | not accept this License. Therefore, by modifying or propagating a 444 | covered work, you indicate your acceptance of this License to do so. 445 | 446 | 10. Automatic Licensing of Downstream Recipients. 447 | 448 | Each time you convey a covered work, the recipient automatically 449 | receives a license from the original licensors, to run, modify and 450 | propagate that work, subject to this License. You are not responsible 451 | for enforcing compliance by third parties with this License. 452 | 453 | An "entity transaction" is a transaction transferring control of an 454 | organization, or substantially all assets of one, or subdividing an 455 | organization, or merging organizations. If propagation of a covered 456 | work results from an entity transaction, each party to that 457 | transaction who receives a copy of the work also receives whatever 458 | licenses to the work the party's predecessor in interest had or could 459 | give under the previous paragraph, plus a right to possession of the 460 | Corresponding Source of the work from the predecessor in interest, if 461 | the predecessor has it or can get it with reasonable efforts. 462 | 463 | You may not impose any further restrictions on the exercise of the 464 | rights granted or affirmed under this License. For example, you may 465 | not impose a license fee, royalty, or other charge for exercise of 466 | rights granted under this License, and you may not initiate litigation 467 | (including a cross-claim or counterclaim in a lawsuit) alleging that 468 | any patent claim is infringed by making, using, selling, offering for 469 | sale, or importing the Program or any portion of it. 470 | 471 | 11. Patents. 472 | 473 | A "contributor" is a copyright holder who authorizes use under this 474 | License of the Program or a work on which the Program is based. The 475 | work thus licensed is called the contributor's "contributor version". 476 | 477 | A contributor's "essential patent claims" are all patent claims 478 | owned or controlled by the contributor, whether already acquired or 479 | hereafter acquired, that would be infringed by some manner, permitted 480 | by this License, of making, using, or selling its contributor version, 481 | but do not include claims that would be infringed only as a 482 | consequence of further modification of the contributor version. For 483 | purposes of this definition, "control" includes the right to grant 484 | patent sublicenses in a manner consistent with the requirements of 485 | this License. 486 | 487 | Each contributor grants you a non-exclusive, worldwide, royalty-free 488 | patent license under the contributor's essential patent claims, to 489 | make, use, sell, offer for sale, import and otherwise run, modify and 490 | propagate the contents of its contributor version. 491 | 492 | In the following three paragraphs, a "patent license" is any express 493 | agreement or commitment, however denominated, not to enforce a patent 494 | (such as an express permission to practice a patent or covenant not to 495 | sue for patent infringement). To "grant" such a patent license to a 496 | party means to make such an agreement or commitment not to enforce a 497 | patent against the party. 498 | 499 | If you convey a covered work, knowingly relying on a patent license, 500 | and the Corresponding Source of the work is not available for anyone 501 | to copy, free of charge and under the terms of this License, through a 502 | publicly available network server or other readily accessible means, 503 | then you must either (1) cause the Corresponding Source to be so 504 | available, or (2) arrange to deprive yourself of the benefit of the 505 | patent license for this particular work, or (3) arrange, in a manner 506 | consistent with the requirements of this License, to extend the patent 507 | license to downstream recipients. "Knowingly relying" means you have 508 | actual knowledge that, but for the patent license, your conveying the 509 | covered work in a country, or your recipient's use of the covered work 510 | in a country, would infringe one or more identifiable patents in that 511 | country that you have reason to believe are valid. 512 | 513 | If, pursuant to or in connection with a single transaction or 514 | arrangement, you convey, or propagate by procuring conveyance of, a 515 | covered work, and grant a patent license to some of the parties 516 | receiving the covered work authorizing them to use, propagate, modify 517 | or convey a specific copy of the covered work, then the patent license 518 | you grant is automatically extended to all recipients of the covered 519 | work and works based on it. 520 | 521 | A patent license is "discriminatory" if it does not include within 522 | the scope of its coverage, prohibits the exercise of, or is 523 | conditioned on the non-exercise of one or more of the rights that are 524 | specifically granted under this License. You may not convey a covered 525 | work if you are a party to an arrangement with a third party that is 526 | in the business of distributing software, under which you make payment 527 | to the third party based on the extent of your activity of conveying 528 | the work, and under which the third party grants, to any of the 529 | parties who would receive the covered work from you, a discriminatory 530 | patent license (a) in connection with copies of the covered work 531 | conveyed by you (or copies made from those copies), or (b) primarily 532 | for and in connection with specific products or compilations that 533 | contain the covered work, unless you entered into that arrangement, 534 | or that patent license was granted, prior to 28 March 2007. 535 | 536 | Nothing in this License shall be construed as excluding or limiting 537 | any implied license or other defenses to infringement that may 538 | otherwise be available to you under applicable patent law. 539 | 540 | 12. No Surrender of Others' Freedom. 541 | 542 | If conditions are imposed on you (whether by court order, agreement or 543 | otherwise) that contradict the conditions of this License, they do not 544 | excuse you from the conditions of this License. If you cannot convey a 545 | covered work so as to satisfy simultaneously your obligations under this 546 | License and any other pertinent obligations, then as a consequence you may 547 | not convey it at all. For example, if you agree to terms that obligate you 548 | to collect a royalty for further conveying from those to whom you convey 549 | the Program, the only way you could satisfy both those terms and this 550 | License would be to refrain entirely from conveying the Program. 551 | 552 | 13. Use with the GNU Affero General Public License. 553 | 554 | Notwithstanding any other provision of this License, you have 555 | permission to link or combine any covered work with a work licensed 556 | under version 3 of the GNU Affero General Public License into a single 557 | combined work, and to convey the resulting work. The terms of this 558 | License will continue to apply to the part which is the covered work, 559 | but the special requirements of the GNU Affero General Public License, 560 | section 13, concerning interaction through a network will apply to the 561 | combination as such. 562 | 563 | 14. Revised Versions of this License. 564 | 565 | The Free Software Foundation may publish revised and/or new versions of 566 | the GNU General Public License from time to time. Such new versions will 567 | be similar in spirit to the present version, but may differ in detail to 568 | address new problems or concerns. 569 | 570 | Each version is given a distinguishing version number. If the 571 | Program specifies that a certain numbered version of the GNU General 572 | Public License "or any later version" applies to it, you have the 573 | option of following the terms and conditions either of that numbered 574 | version or of any later version published by the Free Software 575 | Foundation. If the Program does not specify a version number of the 576 | GNU General Public License, you may choose any version ever published 577 | by the Free Software Foundation. 578 | 579 | If the Program specifies that a proxy can decide which future 580 | versions of the GNU General Public License can be used, that proxy's 581 | public statement of acceptance of a version permanently authorizes you 582 | to choose that version for the Program. 583 | 584 | Later license versions may give you additional or different 585 | permissions. However, no additional obligations are imposed on any 586 | author or copyright holder as a result of your choosing to follow a 587 | later version. 588 | 589 | 15. Disclaimer of Warranty. 590 | 591 | THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY 592 | APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT 593 | HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY 594 | OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, 595 | THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 596 | PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM 597 | IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF 598 | ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 599 | 600 | 16. Limitation of Liability. 601 | 602 | IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING 603 | WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS 604 | THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY 605 | GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE 606 | USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF 607 | DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD 608 | PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), 609 | EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF 610 | SUCH DAMAGES. 611 | 612 | 17. Interpretation of Sections 15 and 16. 613 | 614 | If the disclaimer of warranty and limitation of liability provided 615 | above cannot be given local legal effect according to their terms, 616 | reviewing courts shall apply local law that most closely approximates 617 | an absolute waiver of all civil liability in connection with the 618 | Program, unless a warranty or assumption of liability accompanies a 619 | copy of the Program in return for a fee. 620 | 621 | END OF TERMS AND CONDITIONS 622 | 623 | How to Apply These Terms to Your New Programs 624 | 625 | If you develop a new program, and you want it to be of the greatest 626 | possible use to the public, the best way to achieve this is to make it 627 | free software which everyone can redistribute and change under these terms. 628 | 629 | To do so, attach the following notices to the program. It is safest 630 | to attach them to the start of each source file to most effectively 631 | state the exclusion of warranty; and each file should have at least 632 | the "copyright" line and a pointer to where the full notice is found. 633 | 634 | {one line to give the program's name and a brief idea of what it does.} 635 | Copyright (C) {year} {name of author} 636 | 637 | This program is free software: you can redistribute it and/or modify 638 | it under the terms of the GNU General Public License as published by 639 | the Free Software Foundation, either version 3 of the License, or 640 | (at your option) any later version. 641 | 642 | This program is distributed in the hope that it will be useful, 643 | but WITHOUT ANY WARRANTY; without even the implied warranty of 644 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 645 | GNU General Public License for more details. 646 | 647 | You should have received a copy of the GNU General Public License 648 | along with this program. If not, see . 649 | 650 | Also add information on how to contact you by electronic and paper mail. 651 | 652 | If the program does terminal interaction, make it output a short 653 | notice like this when it starts in an interactive mode: 654 | 655 | {project} Copyright (C) {year} {fullname} 656 | This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. 657 | This is free software, and you are welcome to redistribute it 658 | under certain conditions; type `show c' for details. 659 | 660 | The hypothetical commands `show w' and `show c' should show the appropriate 661 | parts of the General Public License. Of course, your program's commands 662 | might be different; for a GUI interface, you would use an "about box". 663 | 664 | You should also get your employer (if you work as a programmer) or school, 665 | if any, to sign a "copyright disclaimer" for the program, if necessary. 666 | For more information on this, and how to apply and follow the GNU GPL, see 667 | . 668 | 669 | The GNU General Public License does not permit incorporating your program 670 | into proprietary programs. If your program is a subroutine library, you 671 | may consider it more useful to permit linking proprietary applications with 672 | the library. If this is what you want to do, use the GNU Lesser General 673 | Public License instead of this License. But first, please read 674 | . 675 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # User guide 2 | 3 | ### What is SharpLoader? 4 | SharpLoader is a program that opens source code files (c#), randomizes them and compiles to an .exe assembly. 5 | This process reults a random file signature every time. 6 | 7 | ![](http://i.imgur.com/JePqmzS.png) 8 | 9 | ### How to compile a SharpLoader project? 10 | If everything is set up properly all you have to do is run SharpLoader.exe, select project .zip and click compile. 11 | 12 | ### What is seed? 13 | Seed is a unique randomization output. 14 | Value is random by default but it's possible to set it manually. 15 | 16 | ### How to set custom seed value? 17 | Use -seed argument. 18 | `SharpLoader.exe -seed 123` 19 | 20 | ### How to run SharpLoader in cmd? 21 | Use -cmd argument. 22 | `SharpLoader.exe -cmd` 23 | 24 | # Developer guide 25 | 26 | ## How to prepare source code files? 27 | Currently there are available 8 randomization features (that are listed below). 28 | Simply add proper tags to your source code. 29 | ```c# 30 | //- 31 | int a = 0; 32 | int b = 0; 33 | int c = 0; 34 | //- 35 | ``` 36 | 37 | *TIP: You can use <tag> or //-<tag> if you prefer comments* 38 | 39 | ### Features: 40 | 41 | #### 1. Swap 42 | ```c# 43 | //- 44 | int a = 0; 45 | int b = 0; 46 | int c = 0; 47 | //- 48 | ``` 49 | ```c# 50 | //- 51 | if (a == 0) 52 | { } 53 | //- 54 | if (b == 0) 55 | { } 56 | //- 57 | ``` 58 | 59 | #### 2. Trash 60 | Adds from 1 to 6 lines of trash. 61 | ```c# 62 | int a = 0; 63 | //- 64 | int b = 0; 65 | ``` 66 | 67 | #### 2.1. Trash +1 argument 68 | Adds from 1 to X lines of trash. 69 | ```c# 70 | int a = 0; 71 | //- 72 | int b = 0; 73 | ``` 74 | 75 | #### 2.2. Trash +2 arguments 76 | Adds from X to Y lines of trash. 77 | ```c# 78 | int a = 0; 79 | //- 80 | int b = 0; 81 | ``` 82 | 83 | #### 3. Flow 84 | Generates random code flow. 85 | ```c# 86 | //- 87 | int a = 0; 88 | int b = 0; 89 | int c = 0; 90 | //- 91 | ``` 92 | ```c# 93 | //- 94 | if (a == 0) 95 | { } 96 | //- 97 | if (b == 0) 98 | { } 99 | //- 100 | ``` 101 | 102 | #### 4. Seed 103 | Gets replaced with compilation seed value. 104 | ```c# 105 | int seed = ; 106 | ``` 107 | 108 | #### 5. Random 109 | Generates random int value. 110 | ```c# 111 | int a = ; 112 | ``` 113 | 114 | #### 5.1. Random +1 argument 115 | Generates random int value from 0 to X. 116 | ```c# 117 | int a = ; 118 | ``` 119 | 120 | #### 5.2. Random +2 arguments 121 | Generates random int value from X to Y. 122 | ```c# 123 | int a = ; 124 | ``` 125 | #### 6. Random String 126 | Generates random string with 8-16 length. 127 | ```c# 128 | string a = ; 129 | ``` 130 | 131 | #### 6.1. Random String +1 argument 132 | Generates random string with 1-X length. 133 | ```c# 134 | string a = ; 135 | ``` 136 | 137 | #### 6.2. Random String +2 arguments 138 | Generates random string with X-Y length. 139 | ```c# 140 | string a = ; 141 | ``` 142 | 143 | #### 7. Encrypt 144 | Encrpypts value. 145 | ```c# 146 | int a = ; 147 | ``` 148 | ```c# 149 | char a = ; 150 | ``` 151 | ```c# 152 | string a = ; 153 | ``` 154 | 155 | #### 8. Proxy 156 | Generates proxy functions. 157 | ```c# 158 | //- 159 | int a = 0; 160 | int b = 0; 161 | int c = 0; 162 | //- 163 | ``` 164 | ```c# 165 | //- 166 | if (a == 0) 167 | { } 168 | //- 169 | if (b == 0) 170 | { } 171 | //- 172 | ``` 173 | 174 | #### 8.1. Proxy +1 argument 175 | Generates proxy functions inside X namespace. 176 | ```c# 177 | //- 178 | int a = 0; 179 | int b = 0; 180 | int c = 0; 181 | //- 182 | ``` 183 | ```c# 184 | //- 185 | if (a == 0) 186 | { } 187 | //- 188 | if (b == 0) 189 | { } 190 | //- 191 | ``` 192 | 193 | #### 8.2. Proxy +1 argument 194 | Generates proxy variables for X argument. 195 | ```c# 196 | int a = ; 197 | ``` 198 | ```c# 199 | char a = ; 200 | ``` 201 | ```c# 202 | string a = ; 203 | ``` 204 | 205 | ## How to configure SharpLoader? 206 | All SharpLoader's configuration is stored in SharpLoader.ini file. 207 | You can generate this file by running SharpLoader in cmd mode. 208 | 209 | #### References 210 | All references that your application use (dlls). 211 | Separated by ';' character. 212 | `References=System.dll;System.Windows.Forms.dll` 213 | 214 | #### Directory 215 | Main project directory. 216 | `Directory=MySources` 217 | 218 | *TIP: Alternatively you can drag'n'drop source files/directories* 219 | 220 | #### Output 221 | Compiled assembly name. 222 | `Output=MyApplication` 223 | 224 | #### Arguments 225 | Compiler arguments (unsafe, prefer 32-bit etc.). 226 | `Arguments=/platform:anycpu32bitpreferred` 227 | 228 | #### AutoRun 229 | Should assembly be run after successful compilation. 230 | `AutoRun=true` 231 | -------------------------------------------------------------------------------- /SharpLoader/App.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /SharpLoader/Core/RuntimeCompiler.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.CodeDom.Compiler; 3 | using Microsoft.CodeDom.Providers.DotNetCompilerPlatform; 4 | 5 | namespace SharpLoader.Core 6 | { 7 | public class RuntimeCompiler 8 | { 9 | private readonly CSharpCodeProvider _compiler; 10 | 11 | public RuntimeCompiler() 12 | { 13 | _compiler = new CSharpCodeProvider(); 14 | } 15 | 16 | public bool Compile(string outputName, string compilerArguments, string[] assemblies, params string[] sources) 17 | { 18 | var parameters = new CompilerParameters 19 | { 20 | TreatWarningsAsErrors = false, 21 | IncludeDebugInformation = false, 22 | GenerateInMemory = false, 23 | GenerateExecutable = true, 24 | OutputAssembly = outputName, 25 | CompilerOptions = compilerArguments, 26 | }; 27 | 28 | parameters.ReferencedAssemblies.AddRange(assemblies); 29 | 30 | var result = _compiler.CompileAssemblyFromSource(parameters, sources); 31 | if (result.Errors.HasErrors) 32 | { 33 | Console.ForegroundColor = ConsoleColor.Red; 34 | Program.Out($"-=: Compilation error"); 35 | 36 | foreach (CompilerError error in result.Errors) 37 | { 38 | Program.Out(error.ToString()); 39 | } 40 | 41 | return false; 42 | } 43 | 44 | return true; 45 | } 46 | } 47 | } 48 | -------------------------------------------------------------------------------- /SharpLoader/FodyWeavers.xml: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | -------------------------------------------------------------------------------- /SharpLoader/MainForm.Designer.cs: -------------------------------------------------------------------------------- 1 | namespace SharpLoader 2 | { 3 | partial class MainForm 4 | { 5 | /// 6 | /// Required designer variable. 7 | /// 8 | private System.ComponentModel.IContainer components = null; 9 | 10 | /// 11 | /// Clean up any resources being used. 12 | /// 13 | /// true if managed resources should be disposed; otherwise, false. 14 | protected override void Dispose(bool disposing) 15 | { 16 | if (disposing && (components != null)) 17 | { 18 | components.Dispose(); 19 | } 20 | base.Dispose(disposing); 21 | } 22 | 23 | #region Windows Form Designer generated code 24 | 25 | /// 26 | /// Required method for Designer support - do not modify 27 | /// the contents of this method with the code editor. 28 | /// 29 | private void InitializeComponent() 30 | { 31 | System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(MainForm)); 32 | this.Theme = new SharpLoader.NSTheme(); 33 | this.CloseButton = new SharpLoader.NSButton(); 34 | this.nsLabel4 = new SharpLoader.NSLabel(); 35 | this.ResultText = new SharpLoader.NSTextBox(); 36 | this.VersionText = new SharpLoader.NSLabel(); 37 | this.AuthorText = new SharpLoader.NSLabel(); 38 | this.nsSeperator1 = new SharpLoader.NSSeperator(); 39 | this.OutputText = new SharpLoader.NSTextBox(); 40 | this.nsLabel3 = new SharpLoader.NSLabel(); 41 | this.nsLabel2 = new SharpLoader.NSLabel(); 42 | this.nsLabel1 = new SharpLoader.NSLabel(); 43 | this.HashText = new SharpLoader.NSTextBox(); 44 | this.SeedText = new SharpLoader.NSTextBox(); 45 | this.CompileBtn = new SharpLoader.NSButton(); 46 | this.pictureBox1 = new System.Windows.Forms.PictureBox(); 47 | this.Theme.SuspendLayout(); 48 | ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit(); 49 | this.SuspendLayout(); 50 | // 51 | // Theme 52 | // 53 | this.Theme.AccentOffset = 0; 54 | this.Theme.BorderStyle = System.Windows.Forms.FormBorderStyle.None; 55 | this.Theme.Colors = new Bloom[0]; 56 | this.Theme.Controls.Add(this.CloseButton); 57 | this.Theme.Controls.Add(this.nsLabel4); 58 | this.Theme.Controls.Add(this.ResultText); 59 | this.Theme.Controls.Add(this.VersionText); 60 | this.Theme.Controls.Add(this.AuthorText); 61 | this.Theme.Controls.Add(this.nsSeperator1); 62 | this.Theme.Controls.Add(this.OutputText); 63 | this.Theme.Controls.Add(this.nsLabel3); 64 | this.Theme.Controls.Add(this.nsLabel2); 65 | this.Theme.Controls.Add(this.nsLabel1); 66 | this.Theme.Controls.Add(this.HashText); 67 | this.Theme.Controls.Add(this.SeedText); 68 | this.Theme.Controls.Add(this.CompileBtn); 69 | this.Theme.Controls.Add(this.pictureBox1); 70 | this.Theme.Customization = ""; 71 | this.Theme.Dock = System.Windows.Forms.DockStyle.Fill; 72 | this.Theme.Font = new System.Drawing.Font("Verdana", 8F); 73 | this.Theme.Image = null; 74 | this.Theme.Location = new System.Drawing.Point(0, 0); 75 | this.Theme.Movable = true; 76 | this.Theme.Name = "Theme"; 77 | this.Theme.NoRounding = false; 78 | this.Theme.Sizable = false; 79 | this.Theme.Size = new System.Drawing.Size(500, 300); 80 | this.Theme.SmartBounds = true; 81 | this.Theme.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; 82 | this.Theme.TabIndex = 0; 83 | this.Theme.Text = "SharpLoader"; 84 | this.Theme.TransparencyKey = System.Drawing.Color.Empty; 85 | this.Theme.Transparent = false; 86 | this.Theme.KeyDown += new System.Windows.Forms.KeyEventHandler(this.ThemeKeyDown); 87 | // 88 | // CloseButton 89 | // 90 | this.CloseButton.Location = new System.Drawing.Point(477, 2); 91 | this.CloseButton.Name = "CloseButton"; 92 | this.CloseButton.Size = new System.Drawing.Size(21, 23); 93 | this.CloseButton.TabIndex = 16; 94 | this.CloseButton.Text = "X"; 95 | this.CloseButton.Click += new System.EventHandler(this.CloseClick); 96 | // 97 | // nsLabel4 98 | // 99 | this.nsLabel4.Font = new System.Drawing.Font("Segoe UI", 11.25F, System.Drawing.FontStyle.Bold); 100 | this.nsLabel4.Location = new System.Drawing.Point(12, 265); 101 | this.nsLabel4.Name = "nsLabel4"; 102 | this.nsLabel4.Size = new System.Drawing.Size(56, 23); 103 | this.nsLabel4.TabIndex = 15; 104 | this.nsLabel4.Value1 = "Result:"; 105 | this.nsLabel4.Value2 = ""; 106 | // 107 | // ResultText 108 | // 109 | this.ResultText.Cursor = System.Windows.Forms.Cursors.IBeam; 110 | this.ResultText.Location = new System.Drawing.Point(74, 265); 111 | this.ResultText.MaxLength = 32767; 112 | this.ResultText.Multiline = false; 113 | this.ResultText.Name = "ResultText"; 114 | this.ResultText.ReadOnly = true; 115 | this.ResultText.Size = new System.Drawing.Size(108, 23); 116 | this.ResultText.TabIndex = 14; 117 | this.ResultText.Text = "- NOT COMPILED -"; 118 | this.ResultText.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; 119 | this.ResultText.UseSystemPasswordChar = false; 120 | // 121 | // VersionText 122 | // 123 | this.VersionText.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238))); 124 | this.VersionText.Location = new System.Drawing.Point(312, 60); 125 | this.VersionText.Name = "VersionText"; 126 | this.VersionText.Size = new System.Drawing.Size(172, 14); 127 | this.VersionText.TabIndex = 13; 128 | this.VersionText.Text = "nsLabel5"; 129 | this.VersionText.Value1 = "Version: "; 130 | this.VersionText.Value2 = ""; 131 | // 132 | // AuthorText 133 | // 134 | this.AuthorText.Font = new System.Drawing.Font("Segoe UI", 11.25F, System.Drawing.FontStyle.Bold); 135 | this.AuthorText.Location = new System.Drawing.Point(312, 40); 136 | this.AuthorText.Name = "AuthorText"; 137 | this.AuthorText.Size = new System.Drawing.Size(172, 23); 138 | this.AuthorText.TabIndex = 12; 139 | this.AuthorText.Text = "nsLabel4"; 140 | this.AuthorText.Value1 = "SharpLoader by"; 141 | this.AuthorText.Value2 = ""; 142 | // 143 | // nsSeperator1 144 | // 145 | this.nsSeperator1.Location = new System.Drawing.Point(12, 93); 146 | this.nsSeperator1.Name = "nsSeperator1"; 147 | this.nsSeperator1.Size = new System.Drawing.Size(476, 10); 148 | this.nsSeperator1.TabIndex = 10; 149 | this.nsSeperator1.Text = "nsSeperator1"; 150 | // 151 | // OutputText 152 | // 153 | this.OutputText.Cursor = System.Windows.Forms.Cursors.IBeam; 154 | this.OutputText.Font = new System.Drawing.Font("Verdana", 7F); 155 | this.OutputText.Location = new System.Drawing.Point(12, 128); 156 | this.OutputText.MaxLength = 32767; 157 | this.OutputText.Multiline = true; 158 | this.OutputText.Name = "OutputText"; 159 | this.OutputText.ReadOnly = true; 160 | this.OutputText.Size = new System.Drawing.Size(476, 131); 161 | this.OutputText.TabIndex = 9; 162 | this.OutputText.TextAlign = System.Windows.Forms.HorizontalAlignment.Left; 163 | this.OutputText.UseSystemPasswordChar = false; 164 | // 165 | // nsLabel3 166 | // 167 | this.nsLabel3.Font = new System.Drawing.Font("Segoe UI", 11.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(238))); 168 | this.nsLabel3.Location = new System.Drawing.Point(213, 102); 169 | this.nsLabel3.Name = "nsLabel3"; 170 | this.nsLabel3.Size = new System.Drawing.Size(66, 24); 171 | this.nsLabel3.TabIndex = 8; 172 | this.nsLabel3.Value1 = " Output:"; 173 | this.nsLabel3.Value2 = ""; 174 | // 175 | // nsLabel2 176 | // 177 | this.nsLabel2.Font = new System.Drawing.Font("Segoe UI", 11.25F, System.Drawing.FontStyle.Bold); 178 | this.nsLabel2.Location = new System.Drawing.Point(12, 69); 179 | this.nsLabel2.Name = "nsLabel2"; 180 | this.nsLabel2.Size = new System.Drawing.Size(45, 23); 181 | this.nsLabel2.TabIndex = 6; 182 | this.nsLabel2.Value1 = "Hash:"; 183 | this.nsLabel2.Value2 = ""; 184 | // 185 | // nsLabel1 186 | // 187 | this.nsLabel1.Font = new System.Drawing.Font("Segoe UI", 11.25F, System.Drawing.FontStyle.Bold); 188 | this.nsLabel1.Location = new System.Drawing.Point(12, 40); 189 | this.nsLabel1.Name = "nsLabel1"; 190 | this.nsLabel1.Size = new System.Drawing.Size(45, 23); 191 | this.nsLabel1.TabIndex = 5; 192 | this.nsLabel1.Value1 = "Seed:"; 193 | this.nsLabel1.Value2 = ""; 194 | // 195 | // HashText 196 | // 197 | this.HashText.Cursor = System.Windows.Forms.Cursors.IBeam; 198 | this.HashText.Location = new System.Drawing.Point(63, 69); 199 | this.HashText.MaxLength = 32767; 200 | this.HashText.Multiline = false; 201 | this.HashText.Name = "HashText"; 202 | this.HashText.ReadOnly = true; 203 | this.HashText.Size = new System.Drawing.Size(233, 23); 204 | this.HashText.TabIndex = 4; 205 | this.HashText.Text = "- NOT COMPILED -"; 206 | this.HashText.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; 207 | this.HashText.UseSystemPasswordChar = false; 208 | // 209 | // SeedText 210 | // 211 | this.SeedText.Cursor = System.Windows.Forms.Cursors.IBeam; 212 | this.SeedText.Location = new System.Drawing.Point(63, 40); 213 | this.SeedText.MaxLength = 32767; 214 | this.SeedText.Multiline = false; 215 | this.SeedText.Name = "SeedText"; 216 | this.SeedText.ReadOnly = true; 217 | this.SeedText.Size = new System.Drawing.Size(233, 23); 218 | this.SeedText.TabIndex = 1; 219 | this.SeedText.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; 220 | this.SeedText.UseSystemPasswordChar = false; 221 | // 222 | // CompileBtn 223 | // 224 | this.CompileBtn.BackColor = System.Drawing.SystemColors.Control; 225 | this.CompileBtn.Font = new System.Drawing.Font("Verdana", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238))); 226 | this.CompileBtn.Location = new System.Drawing.Point(415, 265); 227 | this.CompileBtn.Name = "CompileBtn"; 228 | this.CompileBtn.Size = new System.Drawing.Size(73, 23); 229 | this.CompileBtn.TabIndex = 0; 230 | this.CompileBtn.Text = "COMPILE"; 231 | this.CompileBtn.Click += new System.EventHandler(this.CompileClick); 232 | // 233 | // pictureBox1 234 | // 235 | this.pictureBox1.BackColor = System.Drawing.Color.Transparent; 236 | this.pictureBox1.BackgroundImage = ((System.Drawing.Image)(resources.GetObject("pictureBox1.BackgroundImage"))); 237 | this.pictureBox1.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom; 238 | this.pictureBox1.Location = new System.Drawing.Point(180, 114); 239 | this.pictureBox1.Name = "pictureBox1"; 240 | this.pictureBox1.Size = new System.Drawing.Size(382, 277); 241 | this.pictureBox1.TabIndex = 11; 242 | this.pictureBox1.TabStop = false; 243 | // 244 | // MainForm 245 | // 246 | this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); 247 | this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; 248 | this.ClientSize = new System.Drawing.Size(500, 300); 249 | this.Controls.Add(this.Theme); 250 | this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None; 251 | this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); 252 | this.Name = "MainForm"; 253 | this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; 254 | this.Text = "SharpLoader"; 255 | this.Theme.ResumeLayout(false); 256 | ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit(); 257 | this.ResumeLayout(false); 258 | 259 | } 260 | 261 | #endregion 262 | 263 | private NSTheme Theme; 264 | private NSButton CompileBtn; 265 | private NSTextBox SeedText; 266 | private NSTextBox HashText; 267 | private NSLabel nsLabel1; 268 | private NSLabel nsLabel2; 269 | private NSLabel nsLabel3; 270 | private NSSeperator nsSeperator1; 271 | private System.Windows.Forms.PictureBox pictureBox1; 272 | private NSLabel AuthorText; 273 | private NSLabel VersionText; 274 | public NSTextBox OutputText; 275 | private NSLabel nsLabel4; 276 | private NSTextBox ResultText; 277 | private NSButton CloseButton; 278 | } 279 | } -------------------------------------------------------------------------------- /SharpLoader/MainForm.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.IO; 3 | using System.Windows.Forms; 4 | 5 | namespace SharpLoader 6 | { 7 | public partial class MainForm : Form 8 | { 9 | private int _lastSeed; 10 | 11 | public MainForm() 12 | { 13 | if (Program.DragDropPaths.Count == 0 && 14 | !File.Exists(Program.ConfigPath)) 15 | { 16 | new SelectForm().ShowDialog(); 17 | } 18 | 19 | InitializeComponent(); 20 | 21 | AuthorText.Value2 = Program.Author; 22 | VersionText.Value1 += Program.Version; 23 | SeedText.Text = Program.Seed.ToString(); 24 | 25 | // Focus form 26 | Select(); 27 | } 28 | 29 | private void ThemeKeyDown(object sender, KeyEventArgs e) 30 | { 31 | if (e.KeyCode == Keys.Enter || 32 | e.KeyCode == Keys.Space) 33 | { 34 | CompileClick(null, null); 35 | } 36 | } 37 | 38 | private void CompileClick(object sender, EventArgs e) 39 | { 40 | if (_lastSeed == Program.Seed) 41 | { 42 | Program.Seed = new Random(Environment.TickCount).Next(0, int.MaxValue); 43 | SeedText.Text = Program.Seed.ToString(); 44 | Refresh(); 45 | } 46 | 47 | OutputText.Text = string.Empty; 48 | 49 | var result = Program.Compile(); 50 | 51 | if (Program.Hash != null) 52 | { 53 | HashText.Text = Program.Hash; 54 | } 55 | 56 | if (result == 0) 57 | { 58 | ResultText.Text = "SUCCESS"; 59 | _lastSeed = Program.Seed; 60 | } 61 | else 62 | { 63 | ResultText.Text = "FAIL"; 64 | } 65 | 66 | GC.Collect(); 67 | } 68 | 69 | private void CloseClick(object sender, EventArgs e) 70 | { 71 | Program.CleanTemp(); 72 | Application.Exit(); 73 | } 74 | } 75 | } 76 | -------------------------------------------------------------------------------- /SharpLoader/Program.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Diagnostics; 4 | using System.IO; 5 | using System.IO.Compression; 6 | using System.Linq; 7 | using System.Reflection; 8 | using System.Runtime.InteropServices; 9 | using System.Security.Cryptography; 10 | using System.Text; 11 | using System.Windows.Forms; 12 | using SharpLoader.Core; 13 | 14 | namespace SharpLoader 15 | { 16 | public static class Program 17 | { 18 | /* Exit codes: 19 | * 0 - default 20 | * 1 - data file not found 21 | * 2 - incorrect data value 22 | * 3 - entry point not found 23 | * 4 - compilation error 24 | * 5 - source file not found 25 | * 6 - file in use 26 | */ 27 | 28 | [DllImport("kernel32.dll")] 29 | private static extern IntPtr GetConsoleWindow(); 30 | 31 | [DllImport("user32.dll")] 32 | private static extern bool ShowWindow(IntPtr hWnd, int nCmdShow); 33 | 34 | private const int SW_HIDE = 0; 35 | private const int SW_SHOW = 5; 36 | 37 | public const string Author = "Zaczero"; 38 | public const string Version = "2.2"; 39 | 40 | private const int ReadBufferSize = ushort.MaxValue; 41 | 42 | private const string ConfigFileName = "SharpLoader.ini"; 43 | private static readonly string MyPath = Process.GetCurrentProcess().MainModule.FileName; 44 | private static readonly string MyDirectory = Path.GetDirectoryName(MyPath); 45 | public static string ConfigPath; 46 | 47 | public static List DragDropPaths; 48 | public static int Seed = -1; 49 | public static string Hash; 50 | public static string SaveDir; 51 | 52 | private static MainForm _form; 53 | private static bool _outToConsole; 54 | 55 | [STAThread] 56 | public static void Main(string[] args) 57 | { 58 | Console.Title = $"SharpLoader"; 59 | 60 | // Hide cmd 61 | ShowWindow(GetConsoleWindow(), SW_HIDE); 62 | 63 | DragDropPaths = new List(); 64 | 65 | var cmdMode = false; 66 | 67 | for (var i = 0; i < args.Length; i++) 68 | { 69 | // Argument is path 70 | if ((File.Exists(args[i]) || Directory.Exists(args[i])) && Path.GetExtension(args[i]) != ".exe") 71 | { 72 | // Directory 73 | if (File.GetAttributes(args[i]).HasFlag(FileAttributes.Directory)) 74 | { 75 | DragDropPaths.AddRange(GetFilesFromDirectory(args[i])); 76 | } 77 | // File 78 | else 79 | { 80 | // Zip 81 | if (Path.GetExtension(args[i]) == ".zip") 82 | { 83 | ProcessZip(args[i]); 84 | } 85 | // Normal 86 | else 87 | { 88 | DragDropPaths.Add(args[i]); 89 | } 90 | } 91 | } 92 | // Normal argument 93 | else 94 | { 95 | if (args[i] == "-cmd") 96 | { 97 | cmdMode = true; 98 | continue; 99 | } 100 | 101 | // Multiple arguments 102 | if (i + 1 < args.Length) 103 | { 104 | // Get seed from arguments 105 | if (args[i] == "-seed") 106 | { 107 | var result = int.TryParse(args[i + 1], out Seed); 108 | if (!result) 109 | { 110 | throw new Exception($"invalid seed value: {args[i + 1]}"); 111 | } 112 | i++; 113 | } 114 | else if (args[i] == "-path") 115 | { 116 | SaveDir = args[i + 1]; 117 | i++; 118 | } 119 | } 120 | } 121 | } 122 | 123 | // Generate random seed 124 | if (Seed == -1) 125 | { 126 | Seed = new Random(Environment.TickCount).Next(0, int.MaxValue); 127 | } 128 | 129 | if (string.IsNullOrEmpty(SaveDir)) 130 | { 131 | ConfigPath = Path.Combine(MyDirectory, ConfigFileName); 132 | SaveDir = MyDirectory; 133 | } 134 | else 135 | { 136 | ConfigPath = Path.Combine(SaveDir, ConfigFileName); 137 | } 138 | 139 | DumpToAppData(); 140 | 141 | // Show UI 142 | if (!cmdMode) 143 | { 144 | Application.EnableVisualStyles(); 145 | Application.SetCompatibleTextRenderingDefault(false); 146 | Application.Run(_form = new MainForm()); 147 | } 148 | // Show cmd 149 | else 150 | { 151 | // Data file not found 152 | if (!File.Exists(ConfigPath)) 153 | { 154 | WinApi.WritePrivateProfileString("SharpLoader", "References", "", ConfigPath); 155 | WinApi.WritePrivateProfileString("SharpLoader", "Directory", "", ConfigPath); 156 | WinApi.WritePrivateProfileString("SharpLoader", "Sources", "", ConfigPath); 157 | WinApi.WritePrivateProfileString("SharpLoader", "Output", "SharpLoader", ConfigPath); 158 | WinApi.WritePrivateProfileString("SharpLoader", "Arguments", "/platform:anycpu32bitpreferred", ConfigPath); 159 | WinApi.WritePrivateProfileString("SharpLoader", "AutoRun", "false", ConfigPath); 160 | 161 | Environment.Exit(1); 162 | } 163 | 164 | ShowWindow(GetConsoleWindow(), SW_SHOW); 165 | _outToConsole = true; 166 | 167 | var compileResult = Compile(); 168 | if (compileResult != 0) 169 | { 170 | Console.ReadKey(); 171 | } 172 | 173 | CleanTemp(); 174 | Environment.Exit(compileResult); 175 | } 176 | } 177 | 178 | public static void DumpToAppData() 179 | { 180 | var appDataPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "SharpLoader"); 181 | var exePath = Path.Combine(appDataPath, "SharpLoader.exe"); 182 | var thisPath = Process.GetCurrentProcess().MainModule.FileName; 183 | 184 | if (thisPath != exePath) 185 | { 186 | if (!Directory.Exists(appDataPath)) 187 | { 188 | Directory.CreateDirectory(appDataPath); 189 | } 190 | 191 | // Run the newest file 192 | retry: 193 | try 194 | { 195 | File.Copy(thisPath, exePath, true); 196 | } 197 | catch (Exception) 198 | { 199 | if (MessageBox.Show("SharpLoader is already running.", "SharpLoader", MessageBoxButtons.RetryCancel, 200 | MessageBoxIcon.Information) == DialogResult.Retry) 201 | { 202 | goto retry; 203 | } 204 | 205 | Environment.Exit(0); 206 | } 207 | 208 | var argsString = string.Empty; 209 | foreach (var arg in Environment.GetCommandLineArgs()) 210 | { 211 | if (File.Exists(arg)) 212 | { 213 | argsString += $"\"{arg}\" "; 214 | } 215 | else 216 | { 217 | argsString += $"{arg} "; 218 | } 219 | } 220 | argsString = argsString.TrimEnd(' '); 221 | 222 | Process.Start(exePath, $"{argsString} -path \"{SaveDir}\""); 223 | Environment.Exit(0); 224 | } 225 | 226 | var binPath = Path.Combine(appDataPath, "bin"); 227 | var binZipPath = Path.Combine(appDataPath, "bin.zip"); 228 | 229 | if (!Directory.Exists(binPath)) 230 | { 231 | if (!File.Exists(binZipPath)) 232 | { 233 | WriteResourceToFile("SharpLoader.bin.zip", binZipPath); 234 | } 235 | 236 | ZipFile.ExtractToDirectory(binZipPath, binPath); 237 | File.Delete(binZipPath); 238 | } 239 | } 240 | 241 | public static int Compile() 242 | { 243 | var randomizer = new SourceRandomizer(Seed); 244 | var compiler = new RuntimeCompiler(); 245 | 246 | var primaryColorValue = new Random(Environment.TickCount).Next(10, 14 + 1); 247 | var secondaryColorValue = primaryColorValue - 8; 248 | 249 | Console.ForegroundColor = (ConsoleColor)primaryColorValue; 250 | Out($"-=: SharpLoader v{Version}"); 251 | Console.ForegroundColor = (ConsoleColor)secondaryColorValue; 252 | Out($"-=: Created by {Author}"); 253 | Console.ForegroundColor = ConsoleColor.DarkGray; 254 | Out($"-=: Seed : {Seed}"); 255 | 256 | Out(""); 257 | 258 | // Data file not found 259 | if (!File.Exists(ConfigPath)) 260 | { 261 | Console.ForegroundColor = ConsoleColor.Red; 262 | Out($"-=: Config file not found ({ConfigFileName})"); 263 | 264 | return 1; 265 | } 266 | 267 | Console.ForegroundColor = ConsoleColor.White; 268 | Out("-=: Reading..."); 269 | 270 | var userReferencesReadSb = new StringBuilder(ReadBufferSize); 271 | var baseDirectoryReadSb = new StringBuilder(ReadBufferSize); 272 | var sourceFilesReadSb = new StringBuilder(ReadBufferSize); 273 | var outputNameReadSb = new StringBuilder(ReadBufferSize); 274 | var compilerArgumentsReadSb = new StringBuilder(ReadBufferSize); 275 | var autoRunReadSb = new StringBuilder(ReadBufferSize); 276 | 277 | WinApi.GetPrivateProfileString("SharpLoader", "References", string.Empty, userReferencesReadSb, ReadBufferSize, ConfigPath); 278 | WinApi.GetPrivateProfileString("SharpLoader", "Directory", string.Empty, baseDirectoryReadSb, ReadBufferSize, ConfigPath); 279 | WinApi.GetPrivateProfileString("SharpLoader", "Sources", string.Empty, sourceFilesReadSb, ReadBufferSize, ConfigPath); 280 | WinApi.GetPrivateProfileString("SharpLoader", "Output", string.Empty, outputNameReadSb, ReadBufferSize, ConfigPath); 281 | WinApi.GetPrivateProfileString("SharpLoader", "Arguments", string.Empty, compilerArgumentsReadSb, ReadBufferSize, ConfigPath); 282 | WinApi.GetPrivateProfileString("SharpLoader", "AutoRun", string.Empty, autoRunReadSb, ReadBufferSize, ConfigPath); 283 | 284 | var userReferences = userReferencesReadSb.ToString().Split(new[] { ';' }, StringSplitOptions.RemoveEmptyEntries); 285 | var baseDirectory = baseDirectoryReadSb.ToString(); 286 | string[] userSourcePaths; 287 | var outputName = $"{outputNameReadSb}-{DateTime.Now:dd-MM-yyyy}.exe"; 288 | var compilerArguments = compilerArgumentsReadSb.ToString(); 289 | var autoRun = autoRunReadSb.ToString().Equals("true", StringComparison.OrdinalIgnoreCase); 290 | 291 | // Drag n Drop 292 | if (DragDropPaths.Count != 0) 293 | { 294 | userSourcePaths = DragDropPaths.ToArray(); 295 | } 296 | // Read from config 297 | else 298 | { 299 | userSourcePaths = sourceFilesReadSb.ToString().Split(new[] { ';' }, StringSplitOptions.RemoveEmptyEntries); 300 | } 301 | 302 | // Check values 303 | if (userReferences.Length == 0) 304 | { 305 | Console.ForegroundColor = ConsoleColor.Red; 306 | Out($"-=: References are not given"); 307 | 308 | return 2; 309 | } 310 | 311 | if (string.IsNullOrWhiteSpace(outputName)) 312 | { 313 | Console.ForegroundColor = ConsoleColor.Red; 314 | Out($"-=: Output name is not given"); 315 | 316 | return 2; 317 | } 318 | 319 | outputName = Path.Combine(SaveDir, outputName); 320 | 321 | // Read sources 322 | var userSourceFiles = new List(); 323 | 324 | // Add from config 325 | foreach (var path in userSourcePaths) 326 | { 327 | if (!File.Exists(path)) 328 | { 329 | Console.ForegroundColor = ConsoleColor.Red; 330 | Out($"-=: Source file not found ({path})"); 331 | 332 | return 5; 333 | } 334 | 335 | if (path.EndsWith(".cs")) 336 | { 337 | userSourceFiles.Add(File.ReadAllText(path)); 338 | } 339 | } 340 | // Add from directory 341 | if (!string.IsNullOrWhiteSpace(baseDirectory)) 342 | { 343 | userSourceFiles.AddRange(from path in GetFilesFromDirectory(baseDirectory) where path.EndsWith(".cs") select File.ReadAllText(path)); 344 | } 345 | 346 | if (userSourceFiles.Count == 0) 347 | { 348 | Console.ForegroundColor = ConsoleColor.Red; 349 | Out($"-=: Source files not found"); 350 | 351 | return 2; 352 | } 353 | 354 | Console.ForegroundColor = ConsoleColor.White; 355 | Out("-=: Randomizing..."); 356 | 357 | // Randomize 358 | for (var i = 0; i < userSourceFiles.Count; i++) 359 | { 360 | var tmp = userSourceFiles[i]; 361 | randomizer.Randomize(ref tmp); 362 | userSourceFiles[i] = tmp; 363 | } 364 | for (var i = 0; i < randomizer.InjectSources.Count; i++) 365 | { 366 | var tmp = randomizer.InjectSources[i]; 367 | randomizer.Randomize(ref tmp); 368 | randomizer.InjectSources[i] = tmp; 369 | } 370 | 371 | // Inject sources 372 | var compileSourceFiles = userSourceFiles.ToList(); 373 | compileSourceFiles.AddRange(randomizer.InjectSources); 374 | 375 | // Inject bytes 376 | if (randomizer.InjectBytes.Count > 0) 377 | { 378 | var output = new StringBuilder("new byte[] {"); 379 | foreach (var b in randomizer.InjectBytes) 380 | { 381 | output.Append($"{b},"); 382 | } 383 | output.Remove(output.Length - 1, 1); 384 | output.Append("}"); 385 | 386 | compileSourceFiles.Add($"namespace {randomizer.InjectBytesNamespace}" + 387 | $"{{" + 388 | $"public static class {randomizer.InjectBytesClass}" + 389 | $"{{" + 390 | $"public static byte[] {randomizer.InjectBytesProperty} = {output};" + 391 | $"}}" + 392 | $"}}"); 393 | } 394 | 395 | // Inject bools 396 | if (randomizer.InjectBools.Count > 0) 397 | { 398 | var output = new StringBuilder("new bool[] {"); 399 | foreach (var b in randomizer.InjectBools) 400 | { 401 | output.Append($"{b.ToString().ToLower()},"); 402 | } 403 | output.Remove(output.Length - 1, 1); 404 | output.Append("}"); 405 | 406 | compileSourceFiles.Add($"namespace {randomizer.InjectBoolsNamespace}" + 407 | $"{{" + 408 | $"public static class {randomizer.InjectBoolsClass}" + 409 | $"{{" + 410 | $"public static bool[] {randomizer.InjectBoolsProperty} = {output};" + 411 | $"}}" + 412 | $"}}"); 413 | } 414 | 415 | // Inject ints 416 | if (randomizer.InjectInts.Count > 0) 417 | { 418 | var output = new StringBuilder("new int[] {"); 419 | foreach (var b in randomizer.InjectInts) 420 | { 421 | output.Append($"{b},"); 422 | } 423 | output.Remove(output.Length - 1, 1); 424 | output.Append("}"); 425 | 426 | compileSourceFiles.Add($"namespace {randomizer.InjectIntsNamespace}" + 427 | $"{{" + 428 | $"public static class {randomizer.InjectIntsClass}" + 429 | $"{{" + 430 | $"public static int[] {randomizer.InjectIntsProperty} = {output};" + 431 | $"}}" + 432 | $"}}"); 433 | } 434 | 435 | // Inject strings 436 | if (randomizer.InjectStrings.Count > 0) 437 | { 438 | var output = new StringBuilder("new string[] {"); 439 | foreach (var b in randomizer.InjectStrings) 440 | { 441 | output.Append($"\"{b}\","); 442 | } 443 | output.Remove(output.Length - 1, 1); 444 | output.Append("}"); 445 | 446 | compileSourceFiles.Add($"namespace {randomizer.InjectStringsNamespace}" + 447 | $"{{" + 448 | $"public static class {randomizer.InjectStringsClass}" + 449 | $"{{" + 450 | $"public static string[] {randomizer.InjectStringsProperty} = {output};" + 451 | $"}}" + 452 | $"}}"); 453 | } 454 | 455 | // Inject references 456 | var compileReferences = userReferences.ToList(); 457 | foreach (var t in randomizer.InjectReferences) 458 | { 459 | if (compileReferences.All(a => a != t)) 460 | { 461 | compileReferences.Add(t); 462 | } 463 | } 464 | 465 | Console.ForegroundColor = ConsoleColor.White; 466 | Out("-=: Compiling..."); 467 | 468 | if (File.Exists(outputName)) 469 | { 470 | try 471 | { 472 | File.Delete(outputName); 473 | } 474 | catch (UnauthorizedAccessException) 475 | { 476 | Console.ForegroundColor = ConsoleColor.Red; 477 | Out($"-=: File in use"); 478 | 479 | return 6; 480 | } 481 | } 482 | 483 | if (!compiler.Compile( 484 | outputName, 485 | compilerArguments, 486 | compileReferences.ToArray(), 487 | compileSourceFiles.ToArray())) 488 | { 489 | return 4; 490 | } 491 | 492 | Console.ForegroundColor = ConsoleColor.Green; 493 | Out($"-=: Done [{Path.GetFileName(outputName)}] {(_outToConsole ? "(press any key to exit)" : string.Empty)}"); 494 | 495 | var sourceBytes = new List(); 496 | foreach (var s in compileSourceFiles) 497 | { 498 | sourceBytes.AddRange(Encoding.Default.GetBytes(s)); 499 | } 500 | var sourceHash = MD5.Create().ComputeHash(sourceBytes.ToArray()); 501 | 502 | Console.ForegroundColor = ConsoleColor.Yellow; 503 | Out($"-=: Hash [{Hash = ByteArrayToString(sourceHash)}]"); 504 | 505 | if (autoRun && File.Exists(outputName)) 506 | { 507 | Out("-=: Starting..."); 508 | Process.Start(outputName); 509 | } 510 | 511 | return 0; 512 | } 513 | 514 | public static void Out(object obj) 515 | { 516 | if (_outToConsole) 517 | { 518 | Console.WriteLine(obj); 519 | } 520 | else 521 | { 522 | _form.OutputText.Text += $"{obj}{Environment.NewLine}"; 523 | } 524 | } 525 | 526 | public static void ProcessZip(string path) 527 | { 528 | var zipBytes = File.ReadAllBytes(path); 529 | var zipHash = MD5.Create().ComputeHash(zipBytes); 530 | 531 | var tempDir = Path.GetTempPath() + @"SharpLoader\" + ByteArrayToString(zipHash); 532 | 533 | if (Directory.Exists(tempDir)) 534 | { 535 | Directory.Delete(tempDir, true); 536 | } 537 | 538 | ZipFile.ExtractToDirectory(path, tempDir); 539 | 540 | var unzipFiles = ScanDir(tempDir); 541 | 542 | foreach (var unzipFile in unzipFiles) 543 | { 544 | if (unzipFile.EndsWith(ConfigFileName)) 545 | { 546 | ConfigPath = unzipFile; 547 | } 548 | else 549 | { 550 | DragDropPaths.Add(unzipFile); 551 | } 552 | } 553 | } 554 | 555 | public static void CleanTemp() 556 | { 557 | var path = Path.GetTempPath() + "SharpLoader"; 558 | if (Directory.Exists(path)) 559 | { 560 | Directory.Delete(path, true); 561 | } 562 | } 563 | 564 | private static void WriteResourceToFile(string resourceName, string fileName) 565 | { 566 | using (var resource = Assembly.GetExecutingAssembly().GetManifestResourceStream(resourceName)) 567 | { 568 | using (var file = new FileStream(fileName, FileMode.Create, FileAccess.Write)) 569 | { 570 | resource.CopyTo(file); 571 | } 572 | } 573 | } 574 | 575 | private static IEnumerable GetFilesFromDirectory(string directory) 576 | { 577 | var dir = new DirectoryInfo(directory); 578 | 579 | var files = dir.GetFiles(); 580 | var subdirs = dir.GetDirectories(); 581 | 582 | var returnList = files.Select(file => file.FullName).ToList(); 583 | 584 | foreach (var subdir in subdirs) 585 | { 586 | returnList.AddRange(GetFilesFromDirectory(subdir.FullName)); 587 | } 588 | 589 | return returnList; 590 | } 591 | 592 | private static string ByteArrayToString(IEnumerable bytes) 593 | { 594 | var returnSb = new StringBuilder(); 595 | 596 | foreach (var b in bytes) 597 | { 598 | var hex = b.ToString("X"); 599 | returnSb.Append(hex.Length < 2 ? '0' + hex : hex); 600 | } 601 | 602 | return returnSb.ToString(); 603 | } 604 | 605 | private static IEnumerable ScanDir(string dir) 606 | { 607 | var files = Directory.GetFiles(dir).ToList(); 608 | 609 | foreach (var d in Directory.GetDirectories(dir)) 610 | { 611 | files.AddRange(ScanDir(d)); 612 | } 613 | 614 | return files; 615 | } 616 | } 617 | } 618 | -------------------------------------------------------------------------------- /SharpLoader/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.InteropServices; 3 | 4 | // General Information about an assembly is controlled through the following 5 | // set of attributes. Change these attribute values to modify the information 6 | // associated with an assembly. 7 | [assembly: AssemblyTitle("SharpLoader")] 8 | [assembly: AssemblyDescription("")] 9 | [assembly: AssemblyConfiguration("")] 10 | [assembly: AssemblyCompany("Zaczero")] 11 | [assembly: AssemblyProduct("SharpLoader")] 12 | [assembly: AssemblyCopyright("Copyright © 2017 Zaczero")] 13 | [assembly: AssemblyTrademark("")] 14 | [assembly: AssemblyCulture("")] 15 | 16 | // Setting ComVisible to false makes the types in this assembly not visible 17 | // to COM components. If you need to access a type in this assembly from 18 | // COM, set the ComVisible attribute to true on that type. 19 | [assembly: ComVisible(false)] 20 | 21 | // The following GUID is for the ID of the typelib if this project is exposed to COM 22 | [assembly: Guid("e51de02d-f8eb-446b-860a-c37892bae5a2")] 23 | 24 | // Version information for an assembly consists of the following four values: 25 | // 26 | // Major Version 27 | // Minor Version 28 | // Build Number 29 | // Revision 30 | // 31 | // You can specify all the values or you can default the Build and Revision Numbers 32 | // by using the '*' as shown below: 33 | // [assembly: AssemblyVersion("1.0.*")] 34 | [assembly: AssemblyVersion("2.2.0.0")] 35 | [assembly: AssemblyFileVersion("2.2.0.0")] 36 | -------------------------------------------------------------------------------- /SharpLoader/Properties/Resources.Designer.cs: -------------------------------------------------------------------------------- 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 | namespace SharpLoader.Properties { 12 | using System; 13 | 14 | 15 | /// 16 | /// A strongly-typed resource class, for looking up localized strings, etc. 17 | /// 18 | // This class was auto-generated by the StronglyTypedResourceBuilder 19 | // class via a tool like ResGen or Visual Studio. 20 | // To add or remove a member, edit your .ResX file then rerun ResGen 21 | // with the /str option, or rebuild your VS project. 22 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] 23 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] 24 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] 25 | internal class Resources { 26 | 27 | private static global::System.Resources.ResourceManager resourceMan; 28 | 29 | private static global::System.Globalization.CultureInfo resourceCulture; 30 | 31 | [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] 32 | internal Resources() { 33 | } 34 | 35 | /// 36 | /// Returns the cached ResourceManager instance used by this class. 37 | /// 38 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] 39 | internal static global::System.Resources.ResourceManager ResourceManager { 40 | get { 41 | if (object.ReferenceEquals(resourceMan, null)) { 42 | global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("SharpLoader.Properties.Resources", typeof(Resources).Assembly); 43 | resourceMan = temp; 44 | } 45 | return resourceMan; 46 | } 47 | } 48 | 49 | /// 50 | /// Overrides the current thread's CurrentUICulture property for all 51 | /// resource lookups using this strongly typed resource class. 52 | /// 53 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] 54 | internal static global::System.Globalization.CultureInfo Culture { 55 | get { 56 | return resourceCulture; 57 | } 58 | set { 59 | resourceCulture = value; 60 | } 61 | } 62 | 63 | /// 64 | /// Looks up a localized resource of type System.Drawing.Icon similar to (Icon). 65 | /// 66 | internal static System.Drawing.Icon SharpLoader { 67 | get { 68 | object obj = ResourceManager.GetObject("SharpLoader", resourceCulture); 69 | return ((System.Drawing.Icon)(obj)); 70 | } 71 | } 72 | } 73 | } 74 | -------------------------------------------------------------------------------- /SharpLoader/Properties/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 | ..\Resources\SharpLoader.ico;System.Drawing.Icon, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a 123 | 124 | -------------------------------------------------------------------------------- /SharpLoader/Resources/SharpLoader.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zaczero/SharpLoader/63b8b2dbdb8bc1f9286b02d68050aac21e22736a/SharpLoader/Resources/SharpLoader.ico -------------------------------------------------------------------------------- /SharpLoader/SelectForm.Designer.cs: -------------------------------------------------------------------------------- 1 | namespace SharpLoader 2 | { 3 | partial class SelectForm 4 | { 5 | /// 6 | /// Required designer variable. 7 | /// 8 | private System.ComponentModel.IContainer components = null; 9 | 10 | /// 11 | /// Clean up any resources being used. 12 | /// 13 | /// true if managed resources should be disposed; otherwise, false. 14 | protected override void Dispose(bool disposing) 15 | { 16 | if (disposing && (components != null)) 17 | { 18 | components.Dispose(); 19 | } 20 | base.Dispose(disposing); 21 | } 22 | 23 | #region Windows Form Designer generated code 24 | 25 | /// 26 | /// Required method for Designer support - do not modify 27 | /// the contents of this method with the code editor. 28 | /// 29 | private void InitializeComponent() 30 | { 31 | System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(SelectForm)); 32 | this.Theme = new SharpLoader.NSTheme(); 33 | this.NotSelectedText = new SharpLoader.NSLabel(); 34 | this.CloseButton = new SharpLoader.NSButton(); 35 | this.ContinueButton = new SharpLoader.NSButton(); 36 | this.SelectButton = new SharpLoader.NSButton(); 37 | this.PathText = new SharpLoader.NSTextBox(); 38 | this.Theme.SuspendLayout(); 39 | this.SuspendLayout(); 40 | // 41 | // Theme 42 | // 43 | this.Theme.AccentOffset = 0; 44 | this.Theme.BorderStyle = System.Windows.Forms.FormBorderStyle.None; 45 | this.Theme.Colors = new Bloom[0]; 46 | this.Theme.Controls.Add(this.NotSelectedText); 47 | this.Theme.Controls.Add(this.CloseButton); 48 | this.Theme.Controls.Add(this.ContinueButton); 49 | this.Theme.Controls.Add(this.SelectButton); 50 | this.Theme.Controls.Add(this.PathText); 51 | this.Theme.Customization = ""; 52 | this.Theme.Dock = System.Windows.Forms.DockStyle.Fill; 53 | this.Theme.Font = new System.Drawing.Font("Verdana", 8F); 54 | this.Theme.Image = null; 55 | this.Theme.Location = new System.Drawing.Point(0, 0); 56 | this.Theme.Movable = true; 57 | this.Theme.Name = "Theme"; 58 | this.Theme.NoRounding = false; 59 | this.Theme.Sizable = false; 60 | this.Theme.Size = new System.Drawing.Size(500, 105); 61 | this.Theme.SmartBounds = true; 62 | this.Theme.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; 63 | this.Theme.TabIndex = 0; 64 | this.Theme.Text = "Select file"; 65 | this.Theme.TransparencyKey = System.Drawing.Color.Empty; 66 | this.Theme.Transparent = false; 67 | this.Theme.KeyDown += new System.Windows.Forms.KeyEventHandler(this.ThemeKeyDown); 68 | // 69 | // NotSelectedText 70 | // 71 | this.NotSelectedText.Font = new System.Drawing.Font("Segoe UI", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238))); 72 | this.NotSelectedText.Location = new System.Drawing.Point(293, 71); 73 | this.NotSelectedText.Name = "NotSelectedText"; 74 | this.NotSelectedText.Size = new System.Drawing.Size(90, 23); 75 | this.NotSelectedText.TabIndex = 18; 76 | this.NotSelectedText.Text = "nsLabel1"; 77 | this.NotSelectedText.Value1 = "File not selected."; 78 | this.NotSelectedText.Value2 = ""; 79 | this.NotSelectedText.Visible = false; 80 | // 81 | // CloseButton 82 | // 83 | this.CloseButton.Location = new System.Drawing.Point(477, 2); 84 | this.CloseButton.Name = "CloseButton"; 85 | this.CloseButton.Size = new System.Drawing.Size(21, 23); 86 | this.CloseButton.TabIndex = 17; 87 | this.CloseButton.Text = "X"; 88 | this.CloseButton.Click += new System.EventHandler(this.CloseClick); 89 | // 90 | // ContinueButton 91 | // 92 | this.ContinueButton.Location = new System.Drawing.Point(212, 71); 93 | this.ContinueButton.Name = "ContinueButton"; 94 | this.ContinueButton.Size = new System.Drawing.Size(75, 23); 95 | this.ContinueButton.TabIndex = 2; 96 | this.ContinueButton.Text = "CONTINUE"; 97 | this.ContinueButton.Click += new System.EventHandler(this.ContinueClick); 98 | // 99 | // SelectButton 100 | // 101 | this.SelectButton.Location = new System.Drawing.Point(461, 40); 102 | this.SelectButton.Name = "SelectButton"; 103 | this.SelectButton.Size = new System.Drawing.Size(27, 23); 104 | this.SelectButton.TabIndex = 1; 105 | this.SelectButton.Text = "..."; 106 | this.SelectButton.Click += new System.EventHandler(this.SelectClick); 107 | // 108 | // PathText 109 | // 110 | this.PathText.Cursor = System.Windows.Forms.Cursors.IBeam; 111 | this.PathText.Location = new System.Drawing.Point(12, 40); 112 | this.PathText.MaxLength = 32767; 113 | this.PathText.Multiline = false; 114 | this.PathText.Name = "PathText"; 115 | this.PathText.ReadOnly = true; 116 | this.PathText.Size = new System.Drawing.Size(443, 23); 117 | this.PathText.TabIndex = 0; 118 | this.PathText.TextAlign = System.Windows.Forms.HorizontalAlignment.Left; 119 | this.PathText.UseSystemPasswordChar = false; 120 | // 121 | // SelectForm 122 | // 123 | this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); 124 | this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; 125 | this.ClientSize = new System.Drawing.Size(500, 105); 126 | this.Controls.Add(this.Theme); 127 | this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None; 128 | this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); 129 | this.Name = "SelectForm"; 130 | this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; 131 | this.Text = "SelectForm"; 132 | this.Theme.ResumeLayout(false); 133 | this.ResumeLayout(false); 134 | 135 | } 136 | 137 | #endregion 138 | 139 | private NSTheme Theme; 140 | private NSTextBox PathText; 141 | private NSButton SelectButton; 142 | private NSButton ContinueButton; 143 | private NSButton CloseButton; 144 | private NSLabel NotSelectedText; 145 | } 146 | } -------------------------------------------------------------------------------- /SharpLoader/SelectForm.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Threading; 3 | using System.Windows.Forms; 4 | 5 | namespace SharpLoader 6 | { 7 | public partial class SelectForm : Form 8 | { 9 | public SelectForm() 10 | { 11 | InitializeComponent(); 12 | 13 | // Focus form 14 | Theme.Select(); 15 | } 16 | 17 | private void ThemeKeyDown(object sender, KeyEventArgs e) 18 | { 19 | if (e.KeyCode == Keys.Enter || 20 | e.KeyCode == Keys.Space) 21 | { 22 | SelectClick(null, null); 23 | } 24 | } 25 | 26 | private void CloseClick(object sender, EventArgs e) 27 | { 28 | Program.CleanTemp(); 29 | Application.Exit(); 30 | } 31 | 32 | private void ContinueClick(object sender, EventArgs e) 33 | { 34 | if (!string.IsNullOrEmpty(PathText.Text)) 35 | { 36 | Program.ProcessZip(PathText.Text); 37 | Close(); 38 | } 39 | else 40 | { 41 | NotSelectedText.Visible = true; 42 | 43 | var thr = new Thread(() => 44 | { 45 | Thread.Sleep(600); 46 | Invoke((MethodInvoker) delegate 47 | { 48 | NotSelectedText.Visible = false; 49 | }); 50 | }) 51 | {IsBackground = true}; 52 | thr.Start(); 53 | } 54 | } 55 | 56 | private void SelectClick(object sender, EventArgs e) 57 | { 58 | var ofd = new OpenFileDialog 59 | { 60 | AddExtension = true, 61 | CheckFileExists = true, 62 | CheckPathExists = true, 63 | Filter = "Compressed File (ZIP)|*.zip", 64 | DefaultExt = ".zip", 65 | }; 66 | 67 | if (ofd.ShowDialog() == DialogResult.OK) 68 | { 69 | PathText.Text = ofd.FileName; 70 | } 71 | } 72 | } 73 | } 74 | -------------------------------------------------------------------------------- /SharpLoader/SelectForm.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 | AAABAAUAEBAAAAEAIABoBAAAVgAAABgYAAABACAAiAkAAL4EAAAgIAAAAQAgAKgQAABGDgAAMDAAAAEA 124 | IACoJQAA7h4AAAAAAAABACAAPEsAAJZEAAAoAAAAEAAAACAAAAABACAAAAAAAAAEAAATCwAAEwsAAAAA 125 | AAAAAAAAAAAAAAAAAAC6UnIAulNzB7hPb0i4T2+mulJy47pTc/u6UnL7uVBx47pScqa6U3NHulNzB7pT 126 | cwAAAAAAAAAAALpTcwC6U3MAulNzGLpTc5PBZYHuzoie/8JohP+5UXH/wGSB/8p9lf++XHv/uVFx7rpT 127 | c5G6U3MYulNzALpTcwC5UHEAuVBxGLlRcbDAYn//69Tc//Di5//BZ4P/u1V0/+C4xf/5+fr/6tHa/8uA 128 | l/+6U3P/ulNzsLpTcxi6U3MAtEJlBrxZeJG7V3b/yHmS//n4+v/husf/uVFx/8l7lP/38/X//P////z/ 129 | ///17/L/0I2j/7pScv+6U3ORulNzBrhOb0jRjqPsxnON/86Hnv/6/f3/1Jeq/7lPcP/es8H//P////v/ 130 | ///7/////P////Pq7v/HdY7/uVFx7LpTc0jEbIil6tHa/8h4kf/Rj6P/+fr7/8yCmf+9Wnn/7drh//z/ 131 | ///7////+/////v////8////4rzI/7tVdP+6U3Ol0pOn4vby9f/Kfpb/z4ug//j3+P/Je5T/wmmF//Tt 132 | 8P/7////+/////v////7/////P////Po7f/CaIT/uVFy4tysvPr7////0pGm/8p9lf/39Pb/y4GZ/8Vx 133 | i//38/X/+/////v////7////+/////v////4+Pn/ynyV/7lQcfrftML6/P///9+0wv/Da4b/9Ozw/9OW 134 | qf/Ebon/9vH0//v////7////+/////v////7////+fr7/8yCmf+5UHD626u74vv////v3uX/wmeD/+rQ 135 | 2f/hu8j/wGOA//Hj6P/8////+/////v////7////+/////f09v/Hdo//uVBx4tGRpaX28fP/+vz9/9GP 136 | o//Vmq3/8ePo/8JohP/kw87//P////v////7////+/////z////u3OP/v199/7lScqXBZoNI6MvV7P3/ 137 | ///s2N//x3aP/+/d4//Vm63/0Y+k//r8/f/7////+/////v////7/v7/2KKz/7lScuy6U3NIlgAmBtCN 138 | o5Hy5ur//P///96xwP/UmKv/7tzj/8l8lP/s2N///P////v////8////6c/Y/79hfv+5UXKRulNzBrxY 139 | dwC1RmgY05WpsPDh5v/6+fr/3K28/9+1w//jwMz/1Jms//j29//7/v7/6M3W/8Nrh/+5UXGwulNzGLpT 140 | cwBuARAAvlt7ALREZxjKfZaR37bE7u3a4f/gtsT/4LfF/9upuf/Yo7T/1p6w/79gfu65UHGRulNzGLpT 141 | cwC6U3MAAAAAAAAAAACuM1kApiNJB7lSckfEbommy3+W48Nsh/vDaob7vFd247lQcKe5T3BHu1R0B7pT 142 | cwAAAAAAAAAAAOAHAADAAwAAgAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 143 | AACAAQAAwAMAAOAHAAAoAAAAGAAAADAAAAABACAAAAAAAAAJAAATCwAAEwsAAAAAAAAAAAAAAAAAAAAA 144 | AAAAAAAAAAAAAAAAAAC6U3MAulNzB7pTczm6U3OIulNzyLpTc+y6U3P8ulNz/LpTc+y6U3PIulNziLpT 145 | czm6U3MGulNzAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAulNzALpTcwG6U3MyulJyn7lQ 146 | cem5UXL+ulR0/7pTc/+6U3P/ulNz/7lRcf+5UXH/ulJy/rpTc+m6U3OdulNzMLpTcwG6U3MAAAAAAAAA 147 | AAAAAAAAAAAAAAAAAAC6U3MAulNzBrpTc2W6UnPivVt5/8t/l//bq7r/yn6W/7lRcv+6U3P/vFd2/9KR 148 | pv/Nhp3/vl58/7lRcf+6U3P/ulNz4bpTc2O6U3MFulNzAAAAAAAAAAAAAAAAALpTcwC6U3MFulNzd7pS 149 | cvS9XHr/5MHM//n5+v/06+//xG6J/7lRcv+5UXH/z4ug//j3+P/5+vv/69bd/8+Mof+7Vnb/ulJy/7pT 150 | c/S6U3N2ulNzBbpTcwAAAAAAulNzALZJawC6UnJjulJy87lRcf/Gc43/9/L0//3////jvsr/ulR0/7pS 151 | cv+/YX7/7djg//z////7/////P////n4+f/essH/vl18/7pScv+6U3PzulNzY7pTcwC6U3MAulNzALlR 152 | cTG8WHfgvl58/7lQcP/OiZ//+vz9//v+/v/Skqb/uVBx/7lRcf/Tlan/+v39//v////7////+/////v/ 153 | ///7/v7/4bvH/71bef+6UnL/ulNz4LpTczG6U3MAulJyBblRcZ3RkKX/zISb/7hOb//Vm67//P////bz 154 | 9f/Gc43/uVFx/7xZeP/pztf//P////v////7////+/////v////7////+vz9/9ijtP+6U3P/ulNz/7pT 155 | c526U3MFt0xtOcNrhujv3eP/zYWc/7hOb//ap7f//P////Hk6f/AY4D/uVBx/8ZyjP/28fP/+/////v/ 156 | ///7////+/////v////7/////P////Xt8P/HdI7/uVFx/7pTc+i6U3M5uE9wiNehsv/6+/z/zISb/7hO 157 | b//bq7r//f///+zY3/+9W3r/uVBw/9KSpv/7/v7/+/////v////7////+/////v////7////+/////z/ 158 | ///es8H/ulNz/7pTc/+6U3OIvl58x+rS2v/7////z4yh/7hOb//ap7f//f///+rS2/+8WXj/uVFx/9ys 159 | vP/8////+/////v////7////+/////v////7////+/////z////w4uf/wGOA/7pScv+6U3PHxnON7PTs 160 | 8P/8////1pyu/7hNbv/WnK7//P///+vU3P+8WXj/ulNz/+K9yv/8////+/////v////7////+/////v/ 161 | ///7////+/////v////49/j/yXuU/7lRcf+6U3PszYSb/Pj3+P/8////37XD/7lPcP/PiZ//+/7+/+7e 162 | 5P++Xnz/ulRz/+XEz//8////+/////v////7////+/////v////7////+/////v////7/v7/0Y6j/7lQ 163 | cf+6U3P8z4ug/Pn5+v/8////69Tc/7xYd//Gco3/9/P1//Ts8P/DaoX/ulJy/+PAzP/8////+/////v/ 164 | ///7////+/////v////7////+/////v////7////05Wp/7lQcf+6U3P8zoad7Pj2+P/8////9vDz/8Zy 165 | jP++XHv/7tzi//r7/P/LgZj/uE9w/92wv//8////+/////v////7////+/////v////7////+/////v/ 166 | ///6/f7/0I6j/7lQcf+6U3PsyHiRx/Pr7v/7////+////9ihsv+5UHH/37TC//3////ap7f/uE5v/9OU 167 | qP/7/v7/+/////v////7////+/////v////7////+/////v////49vj/yXqT/7lRcf+6U3PHv2F/iOrQ 168 | 2f/8/////P///+3a4f++Xnz/y4CY//n6+//s1t7/vVp5/8Zzjf/28vT/+/////v////7////+/////v/ 169 | ///7////+/////z////v4OX/wGJ//7pScv+6U3OItkhqOdmktej7/f7/+/////r8/f/Ulqr/vFl4/+rQ 170 | 2f/5+vv/zYSb/7xYd//q0tr//P////v////7////+/////v////7////+/////z////dr77/ulJz/7pT 171 | c+i6U3M5ohM/BcVxi53u3eP//P////z////w4ef/wmiE/86Jn//6+vv/58nT/7tXdv/Vm67/+/7+//v/ 172 | ///7////+/////v////7/////P////Pq7v/FcYv/uVFy/7pTc526U3MFulNzALdKazHTlang+PX3//v/ 173 | ///8////4r3J/75efP/jv8v/+vr7/9GPpP/BZYH/8OLn//z////7////+/////v////7////+vv8/9ae 174 | sP+6UnL/ulNz4LpTczG6U3MAuE9wAP3//wC8WHdj2qi48/n4+f/8////+vv8/9mmtv/Ebon/797k//Hk 175 | 6f/EbYj/1Zqs//r8/f/7////+/////v////7/P3/37TC/7xZeP+6UnLzulNzY7pTcwC6U3MAAAAAALZJ 176 | awCtMlgFvVt6dtegsvT17vH//P////n4+f/ZpLX/y4GY//Ll6v/pztf/xGyI/+bI0v/8/////P////f1 177 | 9//bqrr/vVt5/7pScvS6U3N2ulNzBbpTcwAAAAAAAAAAAAAAAAC1RmgAsDleBbpTc2PLgJjh5cTP//fz 178 | 9f/6+/z/4r3J/9KSp//u3OL/5cXQ/8yCmf/s2N//6c/Y/8yEm/+7VXT/ulJy4bpTc2O6U3MFulNzAAAA 179 | AAAAAAAAAAAAAAAAAAAAAAAAs0FkAKooUAG2SGowvVt5ncl7k+nYobP+48DL/9yuvf/Mgpr/2qi4/8t/ 180 | l//AYn//vVt6/rlRcem6U3OdulNzMLpTcwG6U3MAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 181 | AAC1RmgAtENmBrZIajm4Tm+IulR0yL1aeey7V3b8uVFy/LpTc+y5UXLJulJyirpTczm6U3MGulNzAAAA 182 | AAAAAAAAAAAAAAAAAAAAAAAA/AA/APAADwDgAAcAwAADAMAAAwCAAAEAAAAAAAAAAAAAAAAAAAAAAAAA 183 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAABAMAAAwDAAAMA4AAHAPAADwD8AD8AKAAAACAA 184 | AABAAAAAAQAgAAAAAAAAEAAAEwsAABMLAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 185 | AAAAAAAAulNzALpTcwO6U3MnulNzabpTc6m6U3PWulNz8bpTc/y6U3P8ulNz8bpTc9e6U3OpulNzabpT 186 | cye6U3MDulNzAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 187 | AAAAAAAAulNzALpTcwS6U3M4ulNzlbpTc926U3P7ulJz/7pTc/+6U3P/ulNz/7pTc/+6U3P/ulNz/7pT 188 | c/+6U3P7ulNz3bpTc5S6U3M1ulNzA7pTcwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 189 | AAAAAAAAulNzALpTcwC6U3MbulNzirpTc+q5UXL/uVFx/7xXdv++XHv/ulNz/7pTc/+6U3P/ulNz/7pS 190 | c/+6UnL/uVBx/7pScv+6U3P/ulNz/7pTc+i6U3OHulNzGbpTcwC6U3MAAAAAAAAAAAAAAAAAAAAAAAAA 191 | AAAAAAAAAAAAALpTcwC6U3MAulNzN7pTc8O6U3P+u1V1/8VxjP/XobL/6MzV/9SZrP+6UnL/ulNz/7pT 192 | c/+5UXL/zIGZ/9+1w//OiZ//v199/7lRcf+6UnL/ulNz/7pTc/66U3PAulNzNLpTcwC6U3MAAAAAAAAA 193 | AAAAAAAAAAAAAAAAAAC6U3MAulNzALpTc0C6U3PZulNz/7xYd//crbz/9e/y//z////28PP/x3WP/7lR 194 | cf+6U3P/uVJy/8Jng//u3eP//f////n6+//t2eD/0pSo/71bef+5UXL/ulNz/7pTc/+6U3PXulNzQLpT 195 | cwC6U3MAAAAAAAAAAAAAAAAAulNzALpTcwC6U3M0ulNz17pTc/+5UXL/w2uH//Ts7//8/////P///+bG 196 | 0P+7Vnb/ulNz/7pTc/+6VHP/3a++//v////7////+/////z////6+/v/5sbR/8Ruif+5UXL/ulNz/7pT 197 | c/+6U3PXulNzNLpTcwC6U3MAAAAAAAAAAAC6U3MAulNzGbpTc7+6UnL/ulNz/7lQcf/Mg5r/+fr7//v/ 198 | ///7/v7/05Wp/7lQcf+6U3P/uVFx/8Z0jv/17vH/+/////v////7////+/////v////8////797k/8h5 199 | kv+5UXL/ulNz/7pTc/+6U3O/ulNzGbpTcwAAAAAAulNzALpTcwK6UnKHvFh3/8Fmgv+6U3P/uVBx/9Wa 200 | rf/7////+/////Xw8//FcYv/uVFx/7pTc/+6U3P/3rHA//z////7////+/////v////7////+/////v/ 201 | ///8////8OLn/8Z0jv+5UXH/ulNz/7pTc/+6U3OHulNzArpTcwC6U3MAulNzNblRcufSlKj/0pOn/7lR 202 | cf+5UXH/3K69//z////8////7dng/75de/+6UnP/ulJy/8Fng//x5er//P////v////7////+/////v/ 203 | ///7////+/////v////8////6tLa/8Bif/+6UnL/ulNz/7pTc+e6U3M1ulNzALpUdAK5UHGUxGyI//Hk 204 | 6f/Skqb/uVBx/7pTc//hu8j//P////z////jwMz/ulR0/7pTc/+5UHH/0I2j//r8/f/7////+/////v/ 205 | ///7////+/////v////7////+/////v////7/v//26m5/7pTc/+6U3P/ulNz/7pTc5S6U3MCulJyKLpT 206 | c9zdr77/+////9CNov+5UHH/ulR0/+TDzv/8/////P///9ysu/+5UXH/ulNz/7pTc//gt8X//P////v/ 207 | ///7////+/////v////7////+/////v////7////+/////z////06+//xXCL/7lRcv+6U3P/ulNz3LpT 208 | cyi4T3Bpw2qG+vLo7P/7////0ZCk/7lQcf+7VHT/5cTP//z////7////1p6w/7lQcf+6UnP/vVx6/+zX 209 | 3v/8////+/////v////7////+/////v////7////+/////v////7////+/////z////bqbn/uVJy/7pT 210 | c/+6U3P6ulNzabhOb6nSk6f/+/7+//v////UmKv/uVBx/7pUdP/kwcz//P////v////Ul6v/uVBx/7lS 211 | cv/CaYX/8+ru//v////7////+/////v////7////+/////v////7////+/////v////7/////P///+3a 212 | 4f++Xnz/ulJy/7pTc/+6U3OpulR01uG7yP/8/////P///9qnt/+5UXH/ulJy/+C3xf/8////+////9SX 213 | q/+5UHH/uVFx/8d2kP/39ff/+/////v////7////+/////v////7////+/////v////7////+/////v/ 214 | ///7////9/T2/8d2kP+5UXH/ulNz/7pTc9a+XXvw7Nbd//z////8////4rzI/7pTc/+5UXH/2qi4//z/ 215 | ///7////1p6w/7lQcf+5UHH/y4CY//n5+v/7////+/////v////7////+/////v////7////+/////v/ 216 | ///7////+/////v////7/v7/0Y+k/7lQcf+6U3P/ulNz8cFmgvzx5On//P////z////r1Nz/vVp5/7lQ 217 | cP/SlKf/+/7///z////crLv/uVFx/7lQcf/NhJv/+fv8//v////7////+/////v////7////+/////v/ 218 | ///7////+/////v////7////+/////z////YobP/uVBx/7pTc/+6U3P8w2qG/PLo7P/8////+/////Ts 219 | 8P/DbIf/uU9w/8l7lP/49/j//P///+PAzP+6VHT/uVBx/8uBmP/5+vv/+/////v////7////+/////v/ 220 | ///7////+/////v////7////+/////v////7/////P///9qouP+5UXH/ulNz/7pTc/zCaYXw8eXq//z/ 221 | ///7////+vz9/9CMov+5T3D/wWWB//Hl6v/8////7dng/75de/+5UHH/x3aQ//f09v/7////+/////v/ 222 | ///7////+/////v////7////+/////v////7////+/////v////8////2aS1/7lQcf+6U3P/ulNz8b9h 223 | f9bt2uH//P////v////8////4bvH/7pTc/+7VXX/5cXP//z////18PP/xXGL/7lQcP/BZ4P/8ujs//z/ 224 | ///7////+/////v////7////+/////v////7////+/////v////7////+/////v////Tlan/uVBx/7pT 225 | c/+6U3PWu1d2qeTDzv/8////+/////z////y5+v/wmmF/7hPcP/UmKv/+/7+//v+/v/Tlan/uVBw/7xZ 226 | eP/q0Nn//P////v////7////+/////v////7////+/////v////7////+/////v////7////+Pf5/8p9 227 | lf+5UXH/ulNz/7pTc6m4TG5p16Cy+vv////7////+/////v+/v/Wna//uU9w/8Nsh//z6u7//P///+bG 228 | 0P+7Vnb/uVFy/9ytvP/8////+/////v////7////+/////v////7////+/////v////7////+/////z/ 229 | ///w4uj/wGSA/7pScv+6U3P6ulNzabVFaCjIeJHc9e/y//v////7/////P///+7c4//AYoD/ulNz/+G5 230 | xv/8////9e/y/8Z0jv+4Tm//zIOa//n5+v/7////+/////v////7////+/////v////7////+/////v/ 231 | ///7/////P///+C3xP+6U3P/ulNz/7pTc9y6U3MoqyxTArxZeJTjwMz//P////v////7////+/7+/9eh 232 | sv+5T3D/yXqT//by9P/8////3bC+/7pScv+/YH7/7tzi//z////7////+/////v////7////+/////v/ 233 | ///7////+/////v////39Pb/yn2V/7lRcf+6U3P/ulNzlLpTcwK6UnIAtklrNct/l+f28PP/+/////v/ 234 | ///8////8+nt/8Zyjf+6U3P/4bnG//z////06+//xnKM/7lQcP/aprf/+/////v////7////+/////v/ 235 | ///7////+/////v////7/////P///+K9yf+7Vnb/ulNz/7pTc+e6U3M1ulNzALpTcwCxO2ACu1V0h9uq 236 | uv/7/f7/+/////v////8////58nT/71cev/EbYj/8uXq//z////ivMn/u1V1/8RsiP/z6O3//P////v/ 237 | ///7////+/////v////7////+/////z////x5On/xW+K/7lRcv+6U3P/ulNzh7pTcwK6U3MAAAAAALlR 238 | cQC2SWsZwGJ/v+XF0P/8////+/////v////7/f3/3a69/7tVdP/Skqb/+fj5//n4+f/Rj6T/uVBx/9qo 239 | uf/7////+/////v////7////+/////v////8////9vH0/8+Jn/+5UXL/ulNz/7pTc7+6U3MZulNzAAAA 240 | AAAAAAAAulNzALhPbwC3TG00wmmF1+fJ0//7/v//+/////v////5+fr/2KKz/7xYd//crbz/+/7+//Lm 241 | 6v/Gco3/wGOA/+7b4v/8////+/////v////7/////P////bx8//Sk6f/ulNz/7pTc/+6U3PXulNzNLpT 242 | cwC6U3MAAAAAAAAAAAAAAAAAulNzALdLbAC4TW5AwWWB1+C3xP/5+Pn//P////v////5+Pn/2aa2/79h 243 | f//gt8T/+/7+/+vV3f/BZoL/zYSb//fz9f/7////+/////z////w4uf/zoed/7pTc/+6U3P/ulNz17pT 244 | c0C6U3MAulNzAAAAAAAAAAAAAAAAAAAAAAAAAAAAulJzALVGaQC4TW40vFl4wNCOo/7s2OD/+vz8//z/ 245 | ///6+/z/4rvI/8Vwi//crr3/+fn6/+nO1//CaYX/2KO0//r7/P/28fP/4LbE/8Nrh/+5UXL/ulNz/rpT 246 | c8C6U3M0ulNzALpTcwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAulNzALhNbgC4Tm8ZuU9wh8Bi 247 | f+jRj6T/5cTP//Lo7P/5+fr/7dvi/9KSpv/WnK//8eXq/+TDzv/CZ4T/0Y+k/8h3kP+7VXT/uVFy/7pT 248 | c+i6U3OHulNzGbpTcwC6U3MAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALpS 249 | cgC6VHMDuE9vNbhPcJS7VnbdwmeD+8l8lP/QjqP/0Y6j/8Fmgv/CaYX/xnKM/7xYd/+5UHH/uVFx+7pT 250 | c966U3OUulNzNbpTcwO6U3MAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 251 | AAAAAAAAAAAAAAAAAAC6U3MAulNzA7lRcie5UHBpuE9wqblPcNa5UHHxulJy/LlRcvy5UXHxulNz1rpT 252 | c6y6U3NsulNzKbpTcwO6U3MAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/gAH//gAAf/wA 253 | AD/4AAAf8AAAD+AAAAfAAAADgAAAAYAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 254 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAGAAAABwAAAA+AAAAfwAAAP+AAAH/wAAD/+AAB//4AB/ygA 255 | AAAwAAAAYAAAAAEAIAAAAAAAACQAABMLAAATCwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 256 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALpTcwC6U3MAulNzDLpTczO6U3NqulNzn7pT 257 | c8i6U3PkulNz9LpTc/26U3P9ulNz9LpTc+S6U3PIulNzn7pTc2q6U3MzulNzDLpTcwC6U3MAAAAAAAAA 258 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 259 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC6U3MAulNzA7pTcyW6U3NuulNzuLpT 260 | c+e6U3P7ulNz/7pTc/+6U3P/ulNz/7pTc/+6U3P/ulNz/7pTc/+6U3P/ulNz/7pTc/u6U3PnulNzuLpT 261 | c266U3MlulNzArpTcwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 262 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAulNzALpTcwK6U3MvulNzkLpT 263 | c9+6U3P9ulNz/7pTc/+6U3P/ulNz/7pTc/+6U3P/ulNz/7pTc/+6U3P/ulNz/7pTc/+6U3P/ulNz/7pT 264 | c/+6U3P/ulNz/7pTc/26U3PfulNzjLpTcyu6U3MBulNzAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 265 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALpTcwC6U3MAulNzF7pT 266 | c366U3PjulNz/7pTc/+6U3P/ulJy/7lRcf+5UXH/ulNz/7pTc/+6U3P/ulNz/7pTc/+6U3P/ulNz/7pT 267 | c/+6UnL/ulNz/7pTc/+6U3P/ulNz/7pTc/+6U3P/ulNz/7pTc9+6U3N4ulNzFbpTcwC6U3MAAAAAAAAA 268 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAulNzALpT 269 | cwG6U3M9ulNzwLpTc/26U3P/ulJz/7lRcf+6U3P/v2F+/8l6k//Pi6H/vl58/7pScv+6U3P/ulNz/7pT 270 | c/+6U3P/ulJy/71aef/BZYH/u1V1/7lQcf+6UnL/ulNz/7pTc/+6U3P/ulNz/7pTc/+6U3P8ulNzu7pT 271 | czm6U3MAulNzAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 272 | AAC6U3MAulNzBLpTc2C6U3PjulNz/7pTc/+5UXL/vVx6/8yCmf/ftsT/79/l//j4+f/lxM//vFh3/7pT 273 | c/+6U3P/ulNz/7pTc/+6U3P/u1V0/9qpuf/y5ur/5MLN/9GPpP/AY4D/uVFy/7pScv+6U3P/ulNz/7pT 274 | c/+6U3P/ulNz/7pTc+C6U3NbulNzBLpTcwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 275 | AAAAAAAAAAAAALpTcwC6U3MFulNzcLpTc/G6U3P/ulNz/7pTc//NhZz/6tHa//j3+f/8/////P////n4 276 | +v/Nhp3/uVFx/7pTc/+6U3P/ulNz/7pTc/+5UXH/zYWc//fz9f/8/////P////r7/P/v3uT/15+x/8Bj 277 | gP+5UXH/ulNz/7pTc/+6U3P/ulNz/7pTc/+6U3PvulNzbrpTcwW6U3MAAAAAAAAAAAAAAAAAAAAAAAAA 278 | AAAAAAAAAAAAAAAAAAAAAAAAulNzALpTcwO6U3NuulNz8rpTc/+6U3P/ulJy/75efP/t2uH//f////v/ 279 | ///7/////P///+zW3v++Xnz/ulJy/7pTc/+6U3P/ulNz/7pScv/AY4D/7Njf//z////7////+/////v/ 280 | ///8////+/39/+3a4f/Pip//u1Z1/7pScv+6U3P/ulNz/7pTc/+6U3P/ulNz8rpTc266U3MDulNzAAAA 281 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC6U3MAulNzALpTc1u6U3PvulNz/7pTc/+6U3P/uVFx/8Zz 282 | jf/28fT/+/////v////7////+////9ijtP+5UXH/ulNz/7pTc/+6U3P/ulNz/7pScv/ZpLX/+/7+//v/ 283 | ///7////+/////v////7////+/////z////49vf/3bC//79fff+5UXL/ulNz/7pTc/+6U3P/ulNz/7pT 284 | c++6U3NbulNzALpTcwAAAAAAAAAAAAAAAAAAAAAAAAAAALpTcwC6U3MAulNzObpTc9+6U3P/ulNz/7pT 285 | c/+6U3P/uVBx/9CNov/6/f3/+/////v////7////9vL1/8d2kP+5UXH/ulNz/7pTc/+6U3P/uVFy/8Rt 286 | iP/y5+v//P////v////7////+/////v////7////+/////v////7////+/3+/+bI0v/CZ4T/uVFy/7pT 287 | c/+6U3P/ulNz/7pTc/+6U3PgulNzObpTcwC6U3MAAAAAAAAAAAAAAAAAAAAAALpTcwC6U3MVulNzu7pT 288 | c/+6U3P/ulNz/7pTc/+6U3P/uVFx/9qouP/8////+/////v////8////69bd/71cev+6UnP/ulNz/7pT 289 | c/+6U3P/ulJy/9uquf/7////+/////v////7////+/////v////7////+/////v////7////+/////z/ 290 | ///pz9j/wmiE/7lRcv+6U3P/ulNz/7pTc/+6U3P/ulNzu7pTcxW6U3MAAAAAAAAAAAAAAAAAulNzALpT 291 | cwC6U3N4ulNz/bxYd//JepP/u1Z2/7pTc/+6U3P/ulR0/+O+yv/8////+/////v////8////3rG//7pS 292 | cv+6U3P/ulNz/7pTc/+6UnL/wWaD//Hj6P/8////+/////v////7////+/////v////7////+/////v/ 293 | ///7////+/////v////8////5sjT/79gfv+6UnL/ulNz/7pTc/+6U3P/ulNz/bpTc3i6U3MAulNzAAAA 294 | AAAAAAAAulNzALpTcyy6U3PfuVJy/9OVqf/ftML/ulR0/7pTc/+6U3P/vFh3/+nQ2f/8////+/////v/ 295 | ///6/f3/0Y6j/7lQcf+6U3P/ulNz/7pTc/+5UXH/05Wo//r9/f/7////+/////v////7////+/////v/ 296 | ///7////+/////v////7////+/////v////7////+/7+/96ywP+7Vnb/ulNz/7pTc/+6U3P/ulNz/7pT 297 | c9+6U3MsulNzAAAAAAC6U3MAulNzAbpTc4y5UXL/xXGL//Pp7f/escD/uVFy/7pTc/+6UnL/vl58/+7c 298 | 4//8////+/////v////28/X/x3WO/7lRcf+6U3P/ulNz/7pTc/+8V3f/58jT//z////7////+/////v/ 299 | ///7////+/////v////7////+/////v////7////+/////v////7////+/////j2+P/QjKL/uVFx/7pT 300 | c/+6U3P/ulNz/7pTc/+6U3OMulNzAbpTcwC6U3MAulNzJrpTc968V3b/477K//3////aqLj/uVFx/7pT 301 | c/+6UnL/wGSB//Hl6v/8////+/////z////x5On/wGSB/7pScv+6U3P/ulNz/7lRcv/Ebon/9Ozw//v/ 302 | ///7////+/////v////7////+/////v////7////+/////v////7////+/////v////7////+/////z/ 303 | ///u3OL/wWWC/7pScv+6U3P/ulNz/7pTc/+6U3PeulNzJrpTcwC6U3MAulNzbrlRcf/Mgpn/+PX3//z/ 304 | ///ZpLX/uVFx/7pTc/+5UnL/wmiE//Pq7v/8////+/////z////r1dz/vVp5/7pTc/+6U3P/ulNz/7lQ 305 | cf/RkaX/+v39//v////7////+/////v////7////+/////v////7////+/////v////7////+/////v/ 306 | ///7////+/////v////7/v7/2KO0/7pScv+6U3P/ulNz/7pTc/+6U3P/ulNzbrpTcwC6U3MMulNzuLtX 307 | dv/lw87//P////z////Zpbb/uVFx/7pTc/+5UXL/w2qG//Ts7//7////+/////z////mxtH/u1V1/7pT 308 | c/+6U3P/ulNz/7pSc//ftcP//P////v////7////+/////v////7////+/////v////7////+/////v/ 309 | ///7////+/////v////7////+/////v////8////8OHm/8Flgv+6UnL/ulNz/7pTc/+6U3P/ulNzuLpT 310 | cwy6U3MzuVFx5sd0jv/28PP/+/////z////bqbn/uVFx/7pTc/+5UXL/w2qG//Ts7//7////+/////z/ 311 | ///hvMj/ulNz/7pTc/+6U3P/ulNz/71aef/r09v//P////v////7////+/////v////7////+/////v/ 312 | ///7////+/////v////7////+/////v////7////+/////v////7////+v39/9OUqP+5UXH/ulNz/7pT 313 | c/+6U3P/ulNz5rpTczS6U3NquVFx+9ijtf/7////+/////z////essD/ulJy/7pTc/+5UnL/wmiE//Pq 314 | 7v/8////+/////z////ftcP/ulJy/7pTc/+6U3P/ulJy/8Fng//y5+z//P////v////7////+/////v/ 315 | ///7////+/////v////7////+/////v////7////+/////v////7////+/////v////7/////P///+bH 316 | 0v+7V3b/ulNz/7pTc/+6U3P/ulNz+7pTc2q6UnKevFl4/+nO1//8////+/////z////jvsr/ulRz/7pT 317 | c/+6UnL/wGSB//Hl6v/8////+/////z////es8H/uVJy/7pTc/+6U3P/uVFx/8d1j//38/b/+/////v/ 318 | ///7////+/////v////7////+/////v////7////+/////v////7////+/////v////7////+/////v/ 319 | ///7////+/////Pq7v/Da4b/uVJy/7pTc/+6U3P/ulNz/7pTc5+5UXHHw2qF//Pq7v/7////+/////z/ 320 | ///pztf/vFh3/7pTc/+6UnL/vl58/+7d4//8////+/////z////ftcP/ulJy/7pTc/+6U3P/uVBx/8yD 321 | mv/5+vv/+/////v////7////+/////v////7////+/////v////7////+/////v////7////+/////v/ 322 | ///7////+/////v////7////+/////n7+//Oh53/uVBx/7pTc/+6U3P/ulNz/7pTc8i5UHDky3+X//j4 323 | +f/7////+/////z////v3+X/v2B+/7pScv+6U3P/vFl4/+nQ2f/8////+/////z////hvMj/ulNz/7pT 324 | c/+6U3P/uVBx/9CNov/6/f3/+/////v////7////+/////v////7////+/////v////7////+/////v/ 325 | ///7////+/////v////7////+/////v////7////+/////z////YorT/uVFx/7pTc/+6U3P/ulNz/7pT 326 | c+S5UHD00pKm//v+/v/7////+/////v////17/L/xW+K/7lRcv+6U3P/ulR0/+O/y//8////+/////z/ 327 | ///mxtH/u1V1/7pTc/+6U3P/uVBx/9OUqP/7////+/////v////7////+/////v////7////+/////v/ 328 | ///7////+/////v////7////+/////v////7////+/////v////7////+/////z////guMX/ulNz/7pT 329 | c/+6U3P/ulNz/7pTc/S5UHH916Cy//z////7////+/////v////5+/v/zYad/7lQcf+6U3P/uVFx/9qo 330 | uP/8////+/////z////r1dz/vVp5/7pTc/+6U3P/uVBx/9OWqf/7////+/////v////7////+/////v/ 331 | ///7////+/////v////7////+/////v////7////+/////v////7////+/////v////7////+/////z/ 332 | ///lxdD/u1V1/7pTc/+6U3P/ulNz/7pTc/25UHH92qe3//z////7////+/////v////8////2qe3/7lR 333 | cf+6U3P/uVBx/9COo//6/f3/+/////z////x5On/wGSB/7pScv+6U3P/uVBx/9KTp//7/v7/+/////v/ 334 | ///7////+/////v////7////+/////v////7////+/////v////7////+/////v////7////+/////v/ 335 | ///7////+/////z////ozNX/u1d2/7pTc/+6U3P/ulNz/7pTc/25UHH02qa3//z////7////+/////v/ 336 | ///8////6MvV/7xYd/+6U3P/uVFx/8Z0jv/28vT/+/////v////28/X/x3WO/7lRcf+6U3P/uVBx/8+K 337 | n//6/P3/+/////v////7////+/////v////7////+/////v////7////+/////v////7////+/////v/ 338 | ///7////+/////v////7////+/////z////ozNX/u1d2/7pTc/+6U3P/ulNz/7pTc/S5UHDk156w//v/ 339 | ///7////+/////v////7////9Ovv/8Nsh/+5UXL/ulJy/79fff/u3OL//P////v////6/f3/0Y6j/7lQ 340 | cf+6U3P/uVFx/8l7lP/49vj/+/////v////7////+/////v////7////+/////v////7////+/////v/ 341 | ///7////+/////v////7////+/////v////7////+/////z////lxM//u1V0/7pTc/+6U3P/ulNz/7pT 342 | c+S4T3DH0ZCk//v+/v/7////+/////v////7////+v39/9KSp/+5UHH/ulNz/7pTc//hucb//P////v/ 343 | ///8////3rG//7pScv+6U3P/uVJy/8Nqhv/06+//+/////v////7////+/////v////7////+/////v/ 344 | ///7////+/////v////7////+/////v////7////+/////v////7////+/////z////ftsP/ulJy/7pT 345 | c/+6U3P/ulNz/7pTc8i4T2+eynyU//j3+P/7////+/////v////7/////P///+XF0P+7Vnb/ulNz/7lQ 346 | cf/RjqP/+vz9//v////8////69bd/71cev+6UnP/ulJz/71cev/s197//P////v////7////+/////v/ 347 | ///7////+/////v////7////+/////v////7////+/////v////7////+/////v////7////+/////v/ 348 | ///Xn7H/uVBx/7pTc/+6U3P/ulNz/7pTc5+5T3BqwmiE+/Ln7P/8////+/////v////7////+/////Xv 349 | 8v/Gco3/uVFx/7lScv/CaYX/8ufs//z////7////9vL1/8d2kP+5UXH/ulNz/7pTc//hucb//P////v/ 350 | ///7////+/////v////7////+/////v////7////+/////v////7////+/////v////7////+/////v/ 351 | ///7////+/////n5+v/Mg5r/uVBx/7pTc/+6U3P/ulNz+7pTc2q5UXIzvFh35ufJ0//8////+/////v/ 352 | ///7////+/////v////bqrr/ulJy/7pTc/+7VHT/4rzI//z////7////+////9ijtP+5UXH/ulNz/7lQ 353 | cf/TlKj/+/7+//v////7////+/////v////7////+/////v////7////+/////v////7////+/////v/ 354 | ///7////+/////v////7/////P////Ln6//CZ4T/ulJy/7pTc/+6U3P/ulNz5rpTczS6U3MMuVBwuNac 355 | r//7////+/////v////7////+/////z////x5On/wmiE/7lScv+5UXH/zYWc//n4+f/7/////P///+zW 356 | 3v++Xnz/ulJy/7lRcv/FcYz/9e/y//v////7////+/////v////7////+/////v////7////+/////v/ 357 | ///7////+/////v////7////+/////v////7/////P///+TCzf+7VXX/ulNz/7pTc/+6U3P/ulNzuLpT 358 | cwy6U3MAuU9wbsVwiv/07PD/+/////v////7////+/////v////7////2aW1/7pScv+6UnL/vl17/+vT 359 | 2//8////+/////n4+v/Nhp3/uVFx/7pTc/+8WXj/6c7X//z////7////+/////v////7////+/////v/ 360 | ///7////+/////v////7////+/////v////7////+/////v////7////+vv8/9CNo/+5UXH/ulNz/7pT 361 | c/+6U3P/ulNzbrpTcwC6U3MAuVJyJrtVdd7hu8f//P////v////7////+/////v////8////8ubr/8Rt 362 | if+5UXL/uVFx/9KTp//6/Pz/+/////z////lxc//vFd3/7pTc/+5UXH/1p2v//v////7////+/////v/ 363 | ///7////+/////v////7////+/////v////7////+/////v////7////+/////v////8////7tvi/79h 364 | f/+6UnL/ulNz/7pTc/+6U3PeulNzJrpTcwC6U3MAu1V1AblPcIzJepP/9vHz//v////7////+/////v/ 365 | ///7/////P///+C3xP+7VnX/ulJy/79fff/r1d3//P////v////39Pb/y4CX/7lRcf+5UXL/xG6J//Tr 366 | 7v/7////+/////v////7////+/////v////7////+/////v////7////+/////v////7////+/////v/ 367 | ///6/f3/1Zqt/7lRcv+6U3P/ulNz/7pTc/+6U3OMulNzAbpTcwAAAAAAulNzALlSciy7VXXf37PB//z/ 368 | ///7////+/////v////7////+/////j19//OiJ7/uVFx/7lRcf/PjKH/+fj5//v////8////5sjS/71a 369 | eP+6UnL/u1R0/+G5xv/8////+/////v////7////+/////v////7////+/////v////7////+/////v/ 370 | ///7////+/////z////r1Nz/v2B9/7pScv+6U3P/ulNz/7pTc9+6U3MsulNzAAAAAAAAAAAAulNzAOTE 371 | zwC5UHB4w2qF/e/e5P/8////+/////v////7////+/////z////v3eT/w2qG/7lRcf+8WHf/5MHM//z/ 372 | ///7////+fn6/9GQpP+5UXH/uVFx/8l7lP/38/X/+/////v////7////+/////v////7////+/////v/ 373 | ///7////+/////v////7////+/////by9P/Mgpn/uVFx/7pTc/+6U3P/ulNz/bpTc3i6U3MAulNzAAAA 374 | AAAAAAAAAAAAALpTcwC6U3MVuVBxu82Gnf/28vT/+/////v////7////+/////v////8////5MHN/71c 375 | ev+5UHH/xXCL//Ll6v/8/////P///+/e5f/CaYX/uVFx/7tWdv/jv8r//P////v////7////+/////v/ 376 | ///7////+/////v////7////+/////v////7////+vz8/9mmtv+6VHT/ulNz/7pTc/+6U3P/ulNzu7pT 377 | cxW6U3MAAAAAAAAAAAAAAAAAAAAAALpTcwC6U3MAulJyObpUc9/Wna//+fj5//v////7////+/////v/ 378 | ///7////+vz9/9uru/+7VnX/uVFx/9GRpf/49vj/+/////v////hucb/vFd3/7lQcf/Id5D/9e7x//v/ 379 | ///7////+/////v////7////+/////v////7////+/////v////7/v7/4rzI/71bef+6UnL/ulNz/7pT 380 | c/+6U3PgulNzObpTcwC6U3MAAAAAAAAAAAAAAAAAAAAAAAAAAAC6U3MAuExuALlRclu7V3bv2aW2//n4 381 | +f/7////+/////v////7////+/////n4+f/Xn7H/ulR0/7tVdf/crLz/+/z9//v////5+fr/1Jir/7pS 382 | cv+6U3P/26u7//v+///7////+/////v////7////+/////v////7////+/////v+/v/kws3/v2B+/7pS 383 | cv+6U3P/ulNz/7pTc++6U3NbulNzALpTcwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAulNzALtV 384 | dAO5UXJuu1d28taesP/38/X//P////v////7////+/////v////49vj/1p6w/7tVdP+9W3r/4r3J//v+ 385 | /v/8////9e3w/8uBmf+5UHD/wGSA/+zX3v/8////+/////v////7////+/////v////7////+vv7/+G5 386 | xv+/YH3/uVJy/7pTc/+6U3P/ulNz8rpTc266U3MDulNzAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 387 | AAAAAAAAAAAAALpTcwC6VHQFuVJybrpUdO/OiJ7/8OHm//z////7////+/////v////7////+Pf5/9qo 388 | uP+8WXj/vl58/+PAzP/7/v7//P////Di5//HdY//uE9w/8uAl//17/L//P////v////7////+/////z/ 389 | ///17/L/16Cy/7xaeP+6UnL/ulNz/7pTc/+6U3PvulNzbrpTcwW6U3MAAAAAAAAAAAAAAAAAAAAAAAAA 390 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC6U3MAulR0BLpSclu5UXHgw2uG/+C4xf/38/X//P////v/ 391 | ///7////+/////r7/P/ivsr/wWaC/75de//gucb/+vv8//z////u2+L/xnKM/7lRcf/WnK7/+fn6//z/ 392 | ///8////+fr7/+fL1f/Je5T/ulNz/7pScv+6U3P/ulNz/7pTc+C6U3NbulNzBLpTcwAAAAAAAAAAAAAA 393 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAulNzALpUdAC6U3M4uVFxu7tW 394 | dfzKfZX/48DM//Xw8//7/////P////z////8////7drh/8yEm/+9XHr/2KGz//by9P/9////7tzj/8h3 395 | kP+7V3b/3bC+//fz9f/p0Nj/0I6j/71bev+5UXH/ulNz/7pTc/+6U3P8ulNzu7pTczm6U3MAulNzAAAA 396 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALpT 397 | cwC6U3MAulNzFLpSc3i5UXHfu1Z2/8Zzjf/YpLX/6dDZ//Ts7//5+vv//P////j19//guMX/xnKM/82E 398 | m//s1t7/+vz8/+vV3f/DbIf/vVt5/8d2j/+9W3r/uVFx/7pScv+6U3P/ulNz/7pTc9+6U3N4ulNzFbpT 399 | cwC6U3MAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 400 | AAAAAAAAAAAAAAAAAAAAAAAAulNzALpTcwG6U3MrulJzjLlRcd+5UXH9vFl4/8Nsh//Mg5r/1Jms/9up 401 | uf/essD/1Zut/79hf//AYn//zIKZ/8Zzjf+9W3n/ulJy/7lRcf+6UnP/ulNz/7pTc/26U3PfulNzjLpT 402 | cyu6U3MBulNzAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 403 | 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 737 | 738 | 739 | -------------------------------------------------------------------------------- /SharpLoader/SharpLoader.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | Debug 8 | AnyCPU 9 | {E51DE02D-F8EB-446B-860A-C37892BAE5A2} 10 | Exe 11 | SharpLoader 12 | SharpLoader 13 | v4.6.2 14 | 512 15 | true 16 | 17 | 18 | 19 | 20 | 21 | AnyCPU 22 | true 23 | full 24 | false 25 | bin\Debug\ 26 | DEBUG;TRACE 27 | prompt 28 | 4 29 | 30 | 31 | AnyCPU 32 | pdbonly 33 | true 34 | bin\Release\ 35 | TRACE 36 | prompt 37 | 4 38 | 39 | 40 | Resources\SharpLoader.ico 41 | 42 | 43 | app.manifest 44 | 45 | 46 | 47 | packages\Costura.Fody.1.6.2\lib\dotnet\Costura.dll 48 | False 49 | 50 | 51 | packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.1.0.5\lib\net45\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.dll 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | Form 66 | 67 | 68 | MainForm.cs 69 | 70 | 71 | 72 | 73 | 74 | True 75 | True 76 | Resources.resx 77 | 78 | 79 | Form 80 | 81 | 82 | SelectForm.cs 83 | 84 | 85 | Component 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | ResXFileCodeGenerator 98 | Resources.Designer.cs 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | MainForm.cs 107 | 108 | 109 | SelectForm.cs 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}. 119 | 120 | 121 | 122 | 123 | 124 | 125 | 126 | 127 | -------------------------------------------------------------------------------- /SharpLoader/SharpLoader.sln: -------------------------------------------------------------------------------- 1 |  2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio 15 4 | VisualStudioVersion = 15.0.26228.9 5 | MinimumVisualStudioVersion = 10.0.40219.1 6 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SharpLoader", "SharpLoader.csproj", "{E51DE02D-F8EB-446B-860A-C37892BAE5A2}" 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 | {E51DE02D-F8EB-446B-860A-C37892BAE5A2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 15 | {E51DE02D-F8EB-446B-860A-C37892BAE5A2}.Debug|Any CPU.Build.0 = Debug|Any CPU 16 | {E51DE02D-F8EB-446B-860A-C37892BAE5A2}.Release|Any CPU.ActiveCfg = Release|Any CPU 17 | {E51DE02D-F8EB-446B-860A-C37892BAE5A2}.Release|Any CPU.Build.0 = Release|Any CPU 18 | EndGlobalSection 19 | GlobalSection(SolutionProperties) = preSolution 20 | HideSolutionNode = FALSE 21 | EndGlobalSection 22 | EndGlobal 23 | -------------------------------------------------------------------------------- /SharpLoader/WinApi.cs: -------------------------------------------------------------------------------- 1 | using System.Runtime.InteropServices; 2 | using System.Text; 3 | 4 | namespace SharpLoader 5 | { 6 | public static class WinApi 7 | { 8 | /// 9 | /// Retrieves a string from the specified section in an initialization file. 10 | /// 11 | /// The name of the section containing the key name. 12 | /// The name of the key whose associated string is to be retrieved. 13 | /// A default string. 14 | /// A pointer to the buffer that receives the retrieved string. 15 | /// The size of the buffer pointed to by the lpReturnedString parameter, in characters. 16 | /// The name of the initialization file. 17 | [DllImport("kernel32")] 18 | public static extern void GetPrivateProfileString(string lpAppName, string lpKeyName, string lpDefault, StringBuilder lpReturnedString, uint nSize, string lpFileName); 19 | 20 | /// 21 | /// Copies a string into the specified section of an initialization file. 22 | /// 23 | /// The name of the section to which the string will be copied. 24 | /// The name of the key to be associated with a string. 25 | /// A null-terminated string to be written to the file. 26 | /// The name of the initialization file. 27 | /// 28 | [DllImport("kernel32")] 29 | public static extern bool WritePrivateProfileString(string lpAppName, string lpKeyName, string lpString, string lpFileName); 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /SharpLoader/app.manifest: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 52 | 59 | 60 | 61 | 75 | 76 | 77 | -------------------------------------------------------------------------------- /SharpLoader/bin.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zaczero/SharpLoader/63b8b2dbdb8bc1f9286b02d68050aac21e22736a/SharpLoader/bin.zip -------------------------------------------------------------------------------- /SharpLoader/packages.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | --------------------------------------------------------------------------------