java下载更改目标_Java 目标文件的修改
以前一直在win32匯編里打滾,對(duì)于修改一個(gè)exe文件是件很容易的事情,但到了java下發(fā)現(xiàn)想修改一個(gè)
沒源碼的.class文件還真是個(gè)問題,上網(wǎng)看了一大堆資料,有ASM和Javassist可以做這事情,ASM看上去
很專業(yè),但看了文檔好象要在op code的級(jí)別下寫代碼,頭暈。Javassist簡(jiǎn)單些,看完幾個(gè)sample心里基本
有數(shù)了,隨手找來一個(gè)有日期限制的Taglib,關(guān)鍵的代碼猜都不用猜在License.class里,反編譯后:
public static LicDate d()
{
String s = Dec("^%$&^%&*%&");
return new LicDate.newInstance(Dec("%&&(*(&$%%"), s);
}
s里放著用Dec解碼的日期,自己寫個(gè)小程序:
import javassist.*;
public class Crack {
public static void main(String args[])
{
try
{
ClassPool pool = ClassPool.getDefault();
pool.insertClassPath("./taglib");
CtClass License = pool.get("License");
CtMethod a = License.getDeclaredMethod("d");
a.insertBefore("{return LicDate.newInstance(\"MM-dd-yyyy HH:mm:ss\",\"21-30-2088 01:01:01\");}"
License.writeFile();
}
catch (Exception e)
{
e.printStackTrace();
}
}
}
反編譯新的License.class發(fā)現(xiàn)文件改好了。
總結(jié)
以上是生活随笔為你收集整理的java下载更改目标_Java 目标文件的修改的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 禁止安装未知应用权限在哪里设置(如何设置
- 下一篇: 刺激战场名字能用的符号