作者darkk6 (Mr. Pan)
看板java
标题[问题] 寻找 JavaByteCode 工具
时间Mon Feb 2 13:10:21 2015
大家好,最近在研究 Java 的 Byte code 想请问大家
有没有推荐的工具,几个需求列在底下。
首先我自己有在用的是 Java ByteCode Editor (JBE) 他确实很好用
但有遇到一个问题是: 有时候修改 Method 後,会无法储存回去。
这个状况应该是 JBE 自己的问题,因为我甚至完全没动过 bytecode
直接 Save Method 也会出错
还有一个工具是 reJ,感觉 reJ 也算是蛮好用的,只是他无法在 Constant Pool
里面增加 FieldRef
我的需求主要就是希望可以方便的增加 Class , Field , Method Refrence,
如:编辑或新增 (其实这个 JBE 做得到,但卡在偶尔我要改 Method 会挂)
还有修改 Method 的 bytecode 不会出问题(没打错语法的情况下)
是在想有没有类似 Android Smali 这种 decompile 工具,可以把 .class 档案
先 Decompile 成文字文件,提供自己修改,改完之後会再编译回去的那种。
(也就是工具应该会自己去找出有哪些 string、 member reference ... 等等)
不然我现在都要用 JBE 新增 ref 之後再透过 HexEditor 去硬干感觉有点累
感谢大家~
PS : 其实我是玩 Minecraft 想把一个 Mod 的 Recipe 改掉阿 XD
原本的合成成本太高了...
----
自问自答一下,
n3oanderson 大推的应该主要是 Lib , 这个我有看过
不过最近没时间研究,所以想找现成的XD
更正: n3o大推的 ASM 有工具可以将 class 转成 ASM 的 Generator
(感谢 sbrhsieh 大指正)
也就是透过 ASMifier 可以把 class 档案转成
可以透过 ASM Lib 制作
class file 的 java code
因此也可以修改完後可直接透过 java 编译执行生成 class file
找到比较 OK 的有:
Assembler : jasmin
http://jasmin.sourceforge.net/
Disassembler : ClassFileAnalyzer
http://classfileanalyzer.javaseiten.de/
虽然有找到不少可以把 class 反组译成 for jsamin 的格式,不过似乎
ClassFileAnalyzer 使用起来比较稳定的 "感觉" (或者是错觉XD)
所以就使用这两个啦~ 谢谢大家 :D
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 223.138.108.224
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/java/M.1422853824.A.A86.html
2F:→ sbrhsieh: objectweb ASM 会比 jasmine 来得适合 02/03 00:06
3F:→ sbrhsieh: ASM 内的 org.objectweb.asm.util.ASMifier 可用来产出 02/03 00:23
4F:→ sbrhsieh: 任一个 .class 的 generator(java program).你可以修改 02/03 00:24
5F:→ sbrhsieh: generator 的程式码, compile->run 产出修改後的 class 02/03 00:24
6F:→ sbrhsieh: bytecode(.class file)。 02/03 00:25
7F:→ sbrhsieh: ASMifier class 是 application(有 main method)。 02/03 00:28
8F:→ darkk6: 喔喔 了解,我再试试看 谢谢罗 02/03 07:50
※ 编辑: darkk6 (223.139.18.35), 02/03/2015 11:51:25