这个Java项目是如何使用语言保留字作为标识符的?
我使用 JD-GUI 反编译了一个 Java 项目,当我看到所有标识符都使用 Java 保留关键字,例如 int do throw extends 等时,我感到很惊讶。
这是该项目的一个片段:
public class try extends Thread {
private int do;
private JSONArray if;
private int for;
private String int;
private String new;
}
我在另一篇关于使用 UTF-16 编码时的文章中读到,有些字符可能看起来相同,但实际上不同,所以我使用 Notepad++ 切换了编码,但这对显示没有影响。
我也尝试使用 Github 中的一些去混淆器,但没有成功。
我知道它并没有真正使用保留关键字,但我无法弄清楚,所以这里的技巧是什么?
编辑:
这是项目中最小的类:
package tech.iresponse.break;
import org.apache.commons.lang.exception.ExceptionUtils;
import org.apache.log4j.Logger;
public class do {
public static void do(Throwable paramThrowable) {
Logger.getLogger("rootLogger").error(ExceptionUtils.getFullStackTrace(paramThrowable));
}
}
/* Location: C:UsersUserDesktopapp.jar!techiresponsebreakdo.class
* Java compiler version: 8 (52.0)
* JD-Core Version: 1.1.3
*/
这是十六进制转储:
00000000 ca fe ba be 00 00 00 34 01 19 08 00 9e 08 00 9f |.......4........|
00000010 08 00 a0 08 00 a1 08 00 a2 08 00 a3 08 00 a4 08 |................|
00000020 00 bd 08 00 be 08 00 bf 08 00 c0 08 00 c1 08 00 |................|
00000030 c2 08 00 c3 08 00 c4 08 00 c5 08 00 c6 08 00 c9 |................|
00000040 08 00 ca 08 00 cb 08 00 cd 08 00 d3 08 00 d5 08 |................|
00000050 00 d6 08 00 e2 08 00 ec 08 00 ed 08 00 ff 08 01 |................|
00000060 00 08 01 01 08 01 04 08 01 05 08 01 12 08 01 15 |................|
00000070 07 00 ef 07 00 f0 07 00 f1 07 00 f2 07 00 f3 07 |................|
00000080 00 f4 07 00 f5 07 00 f6 07 00 f7 07 00 fa 07 00 |................|
00000090 fb 07 00 fc 07 01 06 07 01 07 07 01 08 07 01 09 |................|
000000a0 07 01 0a 07 01 0b 07 01 0c 07 01 0d 09 00 30 00 |..............0.|
000000b0 75 09 00 30 00 76 09 00 30 00 77 09 00 30 00 78 |u..0.v..0.w..0.x|
000000c0 09 00 30 00 80 09 00 30 00 81 09 00 30 00 89 09 |..0....0....0...|
000000d0 00 30 00 91 09 00 30 00 98 09 00 30 00 9d 09 00 |.0....0....0....|
000000e0 31 00 77 09 00 31 00 79 09 00 33 00 80 09 00 33 |1.w..1.y..3....3|
000000f0 00 86 09 00 33 00 8d 09 00 33 00 92 09 00 33 00 |....3....3....3.|
00000100 95 0a 00 24 00 9c 0a 00 25 00 82 0a 00 25 00 8a |...$....%....%..|
00000110 0a 00 26 00 82 0a 00 27 00 6d 0a 00 27 00 71 0a |..&....'.m..'.q.|
00000120 00 27 00 72 0a 00 27 00 73 0a 00 27 00 9a 0a 00 |.'.r..'.s..'....|
00000130 28 00 7a 0a 00 29 00 6d 0a 00 2b 00 6e 0a 00 2c |(.z..).m..+.n..,|
00000140 00 97 0a 00 2d 00 87 0a 00 2d 00 93 0a 00 2e 00 |....-....-......|
00000150 88 0a 00 2f 00 7e 0a 00 30 00 6f 0a 00 30 00 74 |.../.~..0.o..0.t|
00000160 0a 00 30 00 7b 0a 00 30 00 8c 0a 00 30 00 99 0a |..0.{..0....0...|
00000170 00 31 00 6f 0a 00 31 00 96 0a 00 32 00 70 0a 00 |.1.o..1....2.p..|
00000180 33 00 7c 0a 00 33 00 7d 0a 00 33 00 83 0a 00 33 |3.|..3.}..3....3|
00000190 00 8b 0a 00 33 00 8e 0a 00 33 00 94 0a 00 34 00 |....3....3....4.|
000001a0 9b 0a 00 35 00 7f 0a 00 36 00 84 0a 00 36 00 85 |...5....6....6..|
000001b0 0a 00 36 00 8f 0a 00 36 00 90 0c 00 c7 00 a9 0c |..6....6........|
000001c0 00 c7 00 b0 0c 00 c7 00 b3 0c 00 c7 00 b7 0c 00 |................|
000001d0 d8 00 ac 0c 00 d8 00 b2 0c 00 d8 00 b6 0c 00 d9 |................|
000001e0 00 a5 0c 00 da 00 d0 0c 00 db 00 cf 0c 00 dc 00 |................|
000001f0 cf 0c 00 dd 00 d0 0c 00 de 00 cf 0c 00 df 00 a6 |................|
00000200 0c 00 e0 00 a5 0c 00 e1 00 a5 0c 00 e1 00 b4 0c |................|
00000210 00 e1 00 ba 0c 00 e1 00 bc 0c 00 e1 00 cc 0c 00 |................|
00000220 e3 00 cf 0c 00 e4 00 b4 0c 00 e5 00 a5 0c 00 e5 |................|
00000230 00 a9 0c 00 e5 00 b8 0c 00 e5 00 cc 0c 00 e6 00 |................|
00000240 ad 0c 00 e7 00 b5 0c 00 e8 00 cf 0c 00 e9 00 a5 |................|
00000250 0c 00 ea 00 a8 0c 00 ea 00 b1 0c 00 ea 00 d1 0c |................|
00000260 00 eb 00 a7 0c 00 eb 00 aa 0c 00 eb 00 b5 0c 00 |................|
00000270 eb 00 cc 0c 00 eb 00 cf 0c 00 f8 00 a5 0c 00 f9 |................|
00000280 00 a7 0c 00 f9 00 cf 0c 00 fd 00 aa 0c 00 fe 00 |................|
00000290 b9 0c 01 0e 00 cf 0c 01 0f 00 a5 0c 01 10 00 a7 |................|
000002a0 0c 01 11 00 a7 0c 01 14 00 ab 0c 01 18 00 cf 01 |................|
000002b0 00 00 01 00 18 20 2f 65 74 63 2f 69 6e 69 74 2e |..... /etc/init.|
000002c0 64 2f 70 6d 74 61 20 72 65 6c 6f 61 64 01 00 19 |d/pmta reload...|
000002d0 20 2f 65 74 63 2f 69 6e 69 74 2e 64 2f 70 6d 74 | /etc/init.d/pmt|
000002e0 61 20 72 65 73 74 61 72 74 01 00 07 24 70 5f 64 |a restart...$p_d|
000002f0 6b 69 6d 01 00 09 24 70 5f 64 6f 6d 61 69 6e 01 |kim...$p_domain.|
00000300 00 05 24 70 5f 69 70 01 00 07 24 70 5f 76 6d 74 |..$p_ip...$p_vmt|
00000310 61 01 00 03 28 29 49 01 00 03 28 29 4a 01 00 14 |a...()I...()J...|
00000320 28 29 4c 6a 61 76 61 2f 6c 61 6e 67 2f 53 74 72 |()Ljava/lang/Str|
00000330 69 6e 67 3b 01 00 16 28 29 4c 6f 72 67 2f 6a 73 |ing;...()Lorg/js|
00000340 6f 6e 2f 4a 53 4f 4e 41 72 72 61 79 3b 01 00 03 |on/JSONArray;...|
00000350 28 29 56 01 00 03 28 29 5a 01 00 16 28 49 29 4c |()V...()Z...(I)L|
00000360 6a 61 76 61 2f 6c 61 6e 67 2f 49 6e 74 65 67 65 |java/lang/Intege|
00000370 72 3b 01 00 1c 28 49 29 4c 6a 61 76 61 2f 6c 61 |r;...(I)Ljava/la|
00000380 6e 67 2f 53 74 72 69 6e 67 42 75 69 6c 64 65 72 |ng/StringBuilder|
00000390 3b 01 00 18 28 49 29 4c 6f 72 67 2f 6a 73 6f 6e |;...(I)Lorg/json|
000003a0 2f 4a 53 4f 4e 4f 62 6a 65 63 74 3b 01 00 04 28 |/JSONObject;...(|
000003b0 49 29 56 01 00 3d 28 49 4c 6f 72 67 2f 6a 73 6f |I)V..=(ILorg/jso|
000003c0 6e 2f 4a 53 4f 4e 41 72 72 61 79 3b 49 4c 6a 61 |n/JSONArray;ILja|
000003d0 76 61 2f 6c 61 6e 67 2f 53 74 72 69 6e 67 3b 4c |va/lang/String;L|
000003e0 6a 61 76 61 2f 6c 61 6e 67 2f 53 74 72 69 6e 67 |java/lang/String|
000003f0 3b 29 56 01 00 04 28 4a 29 56 01 00 4a 28 4c 6a |;)V...(J)V..J(Lj|
00000400 61 76 61 2f 6c 61 6e 67 2f 43 6c 61 73 73 3b 4c |ava/lang/Class;L|
00000410 6a 61 76 61 2f 6c 61 6e 67 2f 53 74 72 69 6e 67 |java/lang/String|
00000420 3b 5b 4c 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a |;[Ljava/lang/Obj|
00000430 65 63 74 3b 29 4c 6a 61 76 61 2f 6c 61 6e 67 2f |ect;)Ljava/lang/|
00000440 4f 62 6a 65 63 74 3b 01 00 2d 28 4c 6a 61 76 61 |Object;..-(Ljava|
00000450 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74 3b 29 4c 6a |/lang/Object;)Lj|
00000460 61 76 61 2f 6c 61 6e 67 2f 53 74 72 69 6e 67 42 |ava/lang/StringB|
00000470 75 69 6c 64 65 72 3b 01 00 15 28 4c 6a 61 76 61 |uilder;...(Ljava|
00000480 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74 3b 29 56 01 |/lang/Object;)V.|
00000490 00 15 28 4c 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 |..(Ljava/lang/Ob|
000004a0 6a 65 63 74 3b 29 5a 01 00 26 28 4c 6a 61 76 61 |ject;)Z..&(Ljava|
000004b0 2f 6c 61 6e 67 2f 53 74 72 69 6e 67 3b 29 4c 6a |/lang/String;)Lj|
000004c0 61 76 61 2f 6c 61 6e 67 2f 53 74 72 69 6e 67 3b |ava/lang/String;|
000004d0 01 00 2d 28 4c 6a 61 76 61 2f 6c 61 6e 67 2f 53 |..-(Ljava/lang/S|
000004e0 74 72 69 6e 67 3b 29 4c 6a 61 76 61 2f 6c 61 6e |tring;)Ljava/lan|
000004f0 67 2f 53 74 72 69 6e 67 42 75 69 6c 64 65 72 3b |g/StringBuilder;|
00000500 01 00 15 28 4c 6a 61 76 61 2f 6c 61 6e 67 2f 53 |...(Ljava/lang/S|
00000510 74 72 69 6e 67 3b 29 56 01 00 27 28 4c 6a 61 76 |tring;)V..'(Ljav|
00000520 61 2f 6c 61 6e 67 2f 53 74 72 69 6e 67 3b 4c 6a |a/lang/String;Lj|
00000530 61 76 61 2f 6c 61 6e 67 2f 53 74 72 69 6e 67 3b |ava/lang/String;|
00000540 29 5a 01 00 4a 28 4c 6a 61 76 61 2f 6c 61 6e 67 |)Z..J(Ljava/lang|
00000550 2f 53 74 72 69 6e 67 3b 4c 6a 61 76 61 2f 6c 61 |/String;Ljava/la|
00000560 6e 67 2f 53 74 72 69 6e 67 3b 4c 6a 61 76 61 2f |ng/String;Ljava/|
00000570 6c 61 6e 67 2f 53 74 72 69 6e 67 3b 29 4c 6a 61 |lang/String;)Lja|
00000580 76 61 2f 6c 61 6e 67 2f 53 74 72 69 6e 67 3b 01 |va/lang/String;.|
00000590 00 18 28 4c 6a 61 76 61 2f 6c 61 6e 67 2f 54 68 |..(Ljava/lang/Th|
000005a0 72 6f 77 61 62 6c 65 3b 29 56 01 00 17 28 4c 6f |rowable;)V...(Lo|
000005b0 72 67 2f 6a 73 6f 6e 2f 4a 53 4f 4e 41 72 72 61 |rg/json/JSONArra|
000005c0 79 3b 29 56 01 00 39 28 4c 74 65 63 68 2f 69 72 |y;)V..9(Ltech/ir|
000005d0 65 73 70 6f 6e 73 65 2f 63 61 73 65 2f 69 66 2f |esponse/case/if/|
000005e0 74 68 72 6f 77 3b 29 4c 74 65 63 68 2f 69 72 65 |throw;)Ltech/ire|
000005f0 73 70 6f 6e 73 65 2f 77 68 69 6c 65 2f 69 66 3b |sponse/while/if;|
00000600 01 00 01 29 01 00 09 2c 20 61 63 74 69 6f 6e 3d |...)..., action=|
00000610 01 00 08 2c 20 69 73 70 49 64 3d 01 00 15 2c 20 |..., ispId=..., |
00000620 76 6d 74 61 43 6f 6e 66 69 67 54 65 6d 70 6c 61 |vmtaConfigTempla|
00000630 74 65 3d 01 00 0b 2c 20 76 6d 74 61 73 4d 61 70 |te=..., vmtasMap|
00000640 3d 01 00 05 2e 63 6f 6e 66 01 00 16 2e 63 6f 6e |=....conf....con|
00000650 66 20 2f 65 74 63 2f 70 6d 74 61 2f 76 6d 74 61 |f /etc/pmta/vmta|
00000660 73 2f 01 00 01 2f 01 00 10 2f 65 74 63 2f 70 6d |s/.../.../etc/pm|
00000670 74 61 2f 76 6d 74 61 73 2f 01 00 06 2f 68 6f 6d |ta/vmtas/.../hom|
00000680 65 2f 01 00 06 3c 69 6e 69 74 3e 01 00 04 43 6f |e/...<init>...Co|
00000690 64 65 01 00 22 43 6f 75 6c 64 20 6e 6f 74 20 63 |de.."Could not c|
000006a0 6f 6e 6e 65 63 74 20 74 6f 20 74 68 69 73 20 73 |onnect to this s|
000006b0 65 72 76 65 72 20 21 01 00 06 43 75 73 74 6f 6d |erver !...Custom|
000006c0 01 00 07 44 65 66 61 75 6c 74 01 00 01 49 01 00 |...Default...I..|
000006d0 1f 49 6e 64 69 76 69 64 75 61 6c 56 6d 74 61 55 |.IndividualVmtaU|
000006e0 70 64 61 74 65 72 28 73 65 72 76 65 72 49 64 3d |pdater(serverId=|
000006f0 01 00 22 4c 6a 61 76 61 2f 62 65 61 6e 73 2f 43 |.."Ljava/beans/C|
00000700 6f 6e 73 74 72 75 63 74 6f 72 50 72 6f 70 65 72 |onstructorProper|
00000710 74 69 65 73 3b 01 00 12 4c 6a 61 76 61 2f 6c 61 |ties;...Ljava/la|
00000720 6e 67 2f 53 74 72 69 6e 67 3b 01 00 0f 4c 6a 61 |ng/String;...Lja|
00000730 76 61 2f 73 71 6c 2f 44 61 74 65 3b 01 00 14 4c |va/sql/Date;...L|
00000740 6f 72 67 2f 6a 73 6f 6e 2f 4a 53 4f 4e 41 72 72 |org/json/JSONArr|
00000750 61 79 3b 01 00 19 52 75 6e 74 69 6d 65 56 69 73 |ay;...RuntimeVis|
00000760 69 62 6c 65 41 6e 6e 6f 74 61 74 69 6f 6e 73 01 |ibleAnnotations.|
00000770 00 12 53 65 72 76 65 72 20 6e 6f 74 20 66 6f 75 |..Server not fou|
00000780 6e 64 20 21 01 00 0d 53 74 61 63 6b 4d 61 70 54 |nd !...StackMapT|
00000790 61 62 6c 65 01 00 19 56 6d 74 61 73 20 6d 61 70 |able...Vmtas map|
000007a0 70 69 6e 67 20 6e 6f 74 20 66 6f 75 6e 64 20 21 |ping not found !|
000007b0 01 00 01 5f 01 00 06 61 63 74 69 6f 6e 01 00 06 |..._...action...|
000007c0 61 70 70 65 6e 64 01 00 07 62 6f 6f 6c 65 61 6e |append...boolean|
000007d0 01 00 05 62 72 65 61 6b 01 00 04 62 79 74 65 01 |...break...byte.|
000007e0 00 04 63 61 73 65 01 00 05 63 61 74 63 68 01 00 |..case...catch..|
000007f0 04 63 68 61 72 01 00 11 63 75 72 72 65 6e 74 54 |.char...currentT|
00000800 69 6d 65 4d 69 6c 6c 69 73 01 00 07 64 65 66 61 |imeMillis...defa|
00000810 75 6c 74 01 00 02 64 6f 01 00 06 64 6f 6d 61 69 |ult...do...domai|
00000820 6e 01 00 04 65 6c 73 65 01 00 06 65 71 75 61 6c |n...else...equal|
00000830 73 01 00 03 66 6f 72 01 00 0d 67 65 74 4a 53 4f |s...for...getJSO|
00000840 4e 4f 62 6a 65 63 74 01 00 09 67 65 74 53 74 72 |NObject...getStr|
00000850 69 6e 67 01 00 04 67 6f 74 6f 01 00 08 68 61 73 |ing...goto...has|
00000860 68 43 6f 64 65 01 00 02 69 66 01 00 03 69 6e 74 |hCode...if...int|
00000870 01 00 35 69 70 20 3d 20 3f 20 41 4e 44 20 69 73 |..5ip = ? AND is|
00000880 70 5f 69 64 20 3d 20 3f 20 41 4e 44 20 74 79 70 |p_id = ? AND typ|
00000890 65 20 3d 20 3f 20 41 4e 44 20 63 72 65 61 74 65 |e = ? AND create|
000008a0 64 5f 62 79 20 3d 20 3f 01 00 13 69 70 20 3d 20 |d_by = ?...ip = |
000008b0 3f 20 41 4e 44 20 74 79 70 65 20 3d 20 3f 01 00 |? AND type = ?..|
000008c0 05 69 73 70 49 64 01 00 13 6a 61 76 61 2f 6c 61 |.ispId...java/la|
000008d0 6e 67 2f 45 78 63 65 70 74 69 6f 6e 01 00 11 6a |ng/Exception...j|
000008e0 61 76 61 2f 6c 61 6e 67 2f 49 6e 74 65 67 65 72 |ava/lang/Integer|
000008f0 01 00 10 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a |...java/lang/Obj|
00000900 65 63 74 01 00 10 6a 61 76 61 2f 6c 61 6e 67 2f |ect...java/lang/|
00000910 53 74 72 69 6e 67 01 00 17 6a 61 76 61 2f 6c 61 |String...java/la|
00000920 6e 67 2f 53 74 72 69 6e 67 42 75 69 6c 64 65 72 |ng/StringBuilder|
00000930 01 00 10 6a 61 76 61 2f 6c 61 6e 67 2f 53 79 73 |...java/lang/Sys|
00000940 74 65 6d 01 00 10 6a 61 76 61 2f 6c 61 6e 67 2f |tem...java/lang/|
00000950 54 68 72 65 61 64 01 00 13 6a 61 76 61 2f 6c 61 |Thread...java/la|
00000960 6e 67 2f 54 68 72 6f 77 61 62 6c 65 01 00 0d 6a |ng/Throwable...j|
00000970 61 76 61 2f 73 71 6c 2f 44 61 74 65 01 00 06 6c |ava/sql/Date...l|
00000980 65 6e 67 74 68 01 00 03 6e 65 77 01 00 23 6f 72 |ength...new..#or|
00000990 67 2f 61 70 61 63 68 65 2f 63 6f 6d 6d 6f 6e 73 |g/apache/commons|
000009a0 2f 6c 61 6e 67 2f 53 74 72 69 6e 67 55 74 69 6c |/lang/StringUtil|
000009b0 73 01 00 12 6f 72 67 2f 6a 73 6f 6e 2f 4a 53 4f |s...org/json/JSO|
000009c0 4e 41 72 72 61 79 01 00 13 6f 72 67 2f 6a 73 6f |NArray...org/jso|
000009d0 6e 2f 4a 53 4f 4e 4f 62 6a 65 63 74 01 00 09 70 |n/JSONObject...p|
000009e0 72 6f 74 65 63 74 65 64 01 00 07 72 65 70 6c 61 |rotected...repla|
000009f0 63 65 01 00 05 72 65 73 65 74 01 00 17 72 6d 20 |ce...reset...rm |
00000a00 2d 72 66 20 2f 65 74 63 2f 70 6d 74 61 2f 76 6d |-rf /etc/pmta/vm|
00000a10 74 61 73 2f 01 00 04 72 6f 6f 74 01 00 03 72 75 |tas/...root...ru|
00000a20 6e 01 00 08 73 65 72 76 65 72 49 64 01 00 04 73 |n...serverId...s|
00000a30 75 64 6f 01 00 0e 73 75 64 6f 20 6d 76 20 2f 68 |udo...sudo mv /h|
00000a40 6f 6d 65 2f 01 00 17 74 65 63 68 2f 69 72 65 73 |ome/...tech/ires|
00000a50 70 6f 6e 73 65 2f 62 72 65 61 6b 2f 64 6f 01 00 |ponse/break/do..|
00000a60 1e 74 65 63 68 2f 69 72 65 73 70 6f 6e 73 65 2f |.tech/iresponse/|
00000a70 63 61 73 65 2f 69 66 2f 65 78 74 65 6e 64 73 01 |case/if/extends.|
00000a80 00 1c 74 65 63 68 2f 69 72 65 73 70 6f 6e 73 65 |..tech/iresponse|
00000a90 2f 63 61 73 65 2f 69 66 2f 74 68 72 6f 77 01 00 |/case/if/throw..|
00000aa0 16 74 65 63 68 2f 69 72 65 73 70 6f 6e 73 65 2f |.tech/iresponse/|
00000ab0 63 68 61 72 2f 64 6f 01 00 1b 74 65 63 68 2f 69 |char/do...tech/i|
00000ac0 72 65 73 70 6f 6e 73 65 2f 66 69 6e 61 6c 2f 64 |response/final/d|
00000ad0 6f 2f 74 72 79 01 00 16 74 65 63 68 2f 69 72 65 |o/try...tech/ire|
00000ae0 73 70 6f 6e 73 65 2f 74 68 69 73 2f 64 6f 01 00 |sponse/this/do..|
00000af0 17 74 65 63 68 2f 69 72 65 73 70 6f 6e 73 65 2f |.tech/iresponse/|
00000b00 77 68 69 6c 65 2f 64 6f 01 00 17 74 65 63 68 2f |while/do...tech/|
00000b10 69 72 65 73 70 6f 6e 73 65 2f 77 68 69 6c 65 2f |iresponse/while/|
00000b20 69 66 01 00 04 74 68 69 73 01 00 06 74 68 72 6f |if...this...thro|
00000b30 77 73 01 00 08 74 6f 53 74 72 69 6e 67 01 00 03 |ws...toString...|
00000b40 74 72 79 01 00 09 75 73 65 72 2d 70 61 73 73 01 |try...user-pass.|
00000b50 00 05 76 61 6c 75 65 01 00 07 76 61 6c 75 65 4f |..value...valueO|
00000b60 66 01 00 07 76 6d 74 61 2d 69 70 01 00 12 76 6d |f...vmta-ip...vm|
00000b70 74 61 43 6f 6e 66 69 67 54 65 6d 70 6c 61 74 65 |taConfigTemplate|
00000b80 01 00 08 76 6d 74 61 73 4d 61 70 01 00 04 76 6f |...vmtasMap...vo|
00000b90 69 64 00 21 00 33 00 29 00 00 00 05 00 02 00 e1 |id.!.3.)........|
00000ba0 00 cc 00 00 00 02 00 ea 00 d1 00 00 00 02 00 e5 |................|
00000bb0 00 cc 00 00 00 02 00 eb 00 cf 00 00 00 02 00 f9 |................|
00000bc0 00 cf 00 00 00 10 00 01 01 02 00 a9 00 01 00 c8 |................|
00000bd0 00 00 04 8b 00 07 00 0d 00 00 03 31 01 4c 2a b4 |...........1.L*.|
00000be0 00 45 c6 00 0d 2a b4 00 45 b6 00 56 9a 00 0d bb |.E...*..E..V....|
00000bf0 00 32 59 12 17 b7 00 60 bf bb 00 31 59 2a b4 00 |.2Y....`...1Y*..|
00000c00 43 b8 00 48 b7 00 5e 4d 12 1c 2a b4 00 46 b6 00 |C..H..^M..*..F..|
00000c10 4b 3e 2c b6 00 5f 99 00 0d bb 00 32 59 12 16 b7 |K>,.._.....2Y...|
00000c20 00 60 bf 2c b8 00 68 4c 2b c6 00 0a 2b b6 00 6b |.`.,..hL+...+..k|
00000c30 9a 00 0d bb 00 32 59 12 12 b7 00 60 bf 12 1e 2c |.....2Y....`...,|
00000c40 b4 00 42 b6 00 4b 99 00 08 12 01 a7 00 05 12 1f |..B..K..........|
00000c50 3a 04 01 3a 05 b8 00 67 3a 06 bb 00 2b 59 b8 00 |:..:...g:...+Y..|
00000c60 51 b7 00 53 3a 07 03 36 08 15 08 2a b4 00 45 b6 |Q..S:..6...*..E.|
00000c70 00 56 a2 02 2b 2a b4 00 45 15 08 b6 00 55 3a 05 |.V..+*..E....U:.|
00000c80 19 05 c6 02 15 12 30 12 1a 07 bd 00 25 59 03 19 |......0.....%Y..|
00000c90 05 12 22 b6 00 57 53 59 04 2a b4 00 44 b8 00 48 |.."..WSY.*..D..H|
00000ca0 53 59 05 12 13 53 59 06 19 06 53 b8 00 5c c0 00 |SY...SY...S....|
00000cb0 30 3a 09 1d 99 00 3a 19 09 c6 01 de 19 09 b4 00 |0:....:.........|
00000cc0 3b 9e 01 d6 2b bb 00 27 59 b7 00 4c 12 1d b6 00 |;...+..'Y..L....|
00000cd0 4f 19 09 b4 00 39 b6 00 4f 12 0d b6 00 4f b6 00 |O....9..O....O..|
00000ce0 50 b6 00 6c 57 19 09 b6 00 5b 57 a7 01 ac 03 36 |P..lW....[W....6|
00000cf0 0a 19 09 c6 00 11 19 09 b4 00 3b 9e 00 09 04 36 |..........;....6|
00000d00 0a a7 00 6c 12 30 12 1b 05 bd 00 25 59 03 19 05 |...l.0.....%Y...|
00000d10 12 22 b6 00 57 53 59 04 12 14 53 b8 00 5c c0 00 |."..WSY...S....|
00000d20 30 3a 0b bb 00 30 59 19 0b b4 00 3b b8 00 48 b7 |0:...0Y....;..H.|
00000d30 00 59 3a 09 19 09 03 b5 00 3b 19 09 12 13 b5 00 |.Y:......;......|
00000d40 38 19 09 bb 00 27 59 b7 00 4c 19 09 b4 00 39 b6 |8....'Y..L....9.|
00000d50 00 4f 12 18 b6 00 4f 2a b4 00 44 b6 00 4d b6 00 |.O....O*..D..M..|
00000d60 50 b5 00 39 19 09 2a b4 00 44 b5 00 3e 19 09 19 |P..9..*..D..>...|
00000d70 05 12 19 b6 00 57 b5 00 3c 2a b4 00 47 12 07 19 |.....W..<*..G...|
00000d80 09 b4 00 39 b8 00 54 3a 0b 19 0b 12 06 19 09 b4 |...9..T:........|
00000d90 00 3d b8 00 54 3a 0b 19 0b 12 05 19 05 12 19 b6 |.=..T:..........|
00000da0 00 57 b8 00 54 3a 0b 19 0b 12 04 12 01 b8 00 54 |.W..T:.........T|
00000db0 3a 0b 12 21 2c b4 00 41 b6 00 4b 99 00 7b 12 1e |:..!,..A..K..{..|
00000dc0 2c b4 00 42 b6 00 4b 9a 00 6f 2b 19 0b bb 00 27 |,..B..K..o+....'|
00000dd0 59 b7 00 4c 12 11 b6 00 4f 2c b4 00 42 b6 00 4f |Y..L....O,..B..O|
00000de0 12 0f b6 00 4f 19 09 b4 00 39 b6 00 4f 12 0d b6 |....O....9..O...|
00000df0 00 4f b6 00 50 b6 00 6a 57 2b bb 00 27 59 b7 00 |.O..P..jW+..'Y..|
00000e00 4c 12 20 b6 00 4f 2c b4 00 42 b6 00 4f 12 0f b6 |L. ..O,..B..O...|
00000e10 00 4f 19 09 b4 00 39 b6 00 4f 12 0e b6 00 4f 19 |.O....9..O....O.|
00000e20 09 b4 00 39 b6 00 4f 12 0d b6 00 4f b6 00 50 b6 |...9..O....O..P.|
00000e30 00 6c 57 a7 00 26 2b 19 0b bb 00 27 59 b7 00 4c |.lW..&+....'Y..L|
00000e40 12 10 b6 00 4f 19 09 b4 00 39 b6 00 4f 12 0d b6 |....O....9..O...|
00000e50 00 4f b6 00 50 b6 00 6a 57 15 0a 99 00 1a 19 09 |.O..P..jW.......|
00000e60 19 06 b5 00 40 19 09 19 07 b5 00 3a 19 09 b6 00 |....@......:....|
00000e70 5a 57 a7 00 25 19 09 19 06 b5 00 3f 19 09 19 07 |ZW..%......?....|
00000e80 b5 00 37 19 09 19 06 b5 00 40 19 09 19 07 b5 00 |..7......@......|
00000e90 3a 19 09 b6 00 5d 57 84 08 01 a7 fd cf 2b bb 00 |:....]W......+..|
00000ea0 27 59 b7 00 4c 19 04 b6 00 4f 12 02 b6 00 4f b6 |'Y..L....O....O.|
00000eb0 00 50 b6 00 6c 57 2b bb 00 27 59 b7 00 4c 19 04 |.P..lW+..'Y..L..|
00000ec0 b6 00 4f 12 03 b6 00 4f b6 00 50 b6 00 6c 57 2b |..O....O..P..lW+|
00000ed0 c6 00 3c 2b b6 00 6b 99 00 35 2b b6 00 69 a7 00 |..<+..k..5+..i..|
00000ee0 2e 4d 2c b8 00 58 2b c6 00 25 2b b6 00 6b 99 00 |.M,..X+..%+..k..|
00000ef0 1e 2b b6 00 69 a7 00 17 3a 0c 2b c6 00 0e 2b b6 |.+..i...:.+...+.|
00000f00 00 6b 99 00 0
回答
虽然保留字可能不会出现在 Java 源代码中,但它们在已编译的 Java 代码中是允许的。一些代码混淆工具可以利用这一点使反编译更加困难。例如,ProGuard 提供以下选项:
-obfuscationdictionary filename
指定一个文本文件,其中的所有有效词都用作混淆的字段和方法名称。默认情况下,像“a”、“b”等短名称用作混淆名称。例如,使用混淆字典,您可以指定保留关键字列表或带有外来字符的标识符。# 符号后的空格、标点符号、重复词和注释将被忽略。请注意,混淆字典几乎不能改善混淆。体面的编译器可以自动替换它们,并且可以通过使用更简单的名称再次混淆来简单地消除效果。最有用的应用程序是指定通常已经存在于类文件中的字符串(例如“代码”),从而稍微减少类文件的大小。仅在混淆时适用。
因此,如果您为这个列表提供 Java 标识符(例如this),您最终会得到一个类文件,如果反编译会导致语法错误。当然,您可以简单地重命名变量以修复这些编译错误(例如,在反编译之前自己使用 ProGuard),因此这只是一个小小的不便。