1
ETiV 2018-09-13 00:02:13 +08:00 via iPhone 1
Oracle JVM Specification 4.x 章有讲~
|
2
innoink 2018-09-13 00:08:27 +08:00 via Android 1
请学习编译原理
|
3
misaka19000 2018-09-13 00:10:16 +08:00 1
javap
|
4
pythonee OP |
5
specita 2018-09-13 09:29:56 +08:00
是这样的啊,之前看高手解决问题都是是直接反汇编....
|
6
hx1997 2018-09-13 10:01:50 +08:00 via Android
反汇编只能看到具体实现的原理,不代表这是语言本身的规定吧…
|
7
Raymon111111 2018-09-13 10:24:22 +08:00
不是, 这么看东西太慢了..
|
8
szq8014 2018-09-13 11:01:51 +08:00
我捡我学到皮毛的讲一下:
1. 看指令知道了基于栈和基于寄存器的区别,基于栈的理解起来简单很多。 2. JVM 里面操作数最少是 32 位的,byte (bipush), short (sipush)都需要转一下再操作 3. class 文件里面变量名都是单独存储的,所以可以写一个程序单独用来替换编译后 class 中变量达到代码混淆的目的。(甚至是在执行代码里面添加一些 goto 跳转等指令来让反编译工具懵掉导致反编译失败,如果你非要跟这段代码杠的话用 javap 处理一下再自己人脑运行是可以的,就是费时间和精力) 4. 顺便能了解一下 Class 里面的那些 static{} 以及 constructor 和 {} 里面的代码运行的先后顺序啥的 5. 好像没有了 |
9
luozic 2018-09-29 20:37:32 +08:00 via iPhone
jvm,LLVM,GCC 搞定了你就是大神。
|