├── .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 | 
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 |
--------------------------------------------------------------------------------