我們都知道JAVA是一種解析型語言
類中Main函數的ByteCode
其源代碼是
我們通過反編譯工具是可以還原出以上源代碼的
JAVA手機網[]第一行
ldc為虛擬機的指令
ldc index
這個index就是上面的
所以這行的意思就是把/ef
第二行
invokestatic為虛擬機指令
invokestatic indexbyte
其中indexbyte
所以當我們看常量池中索引為
Class Name : cp_info#
Name Type : cp_info#
這裡我簡單介紹一下parseImage(Ljava/lang/String;)[S 的意思
JAVA手機網[]這就是parseImage這個函數的運行
short [] parseImage(String)
那麼Ljava/lang/String;就是說需要傳入一個String對象
好了
第三行
呵呵
astore_為虛擬機指令
aload_
第四行
同樣的
這裡也就是退出main函數
ok
好了
什麼混淆等等的方法
方案一
public static void Fake(Exception e)
{
JAVA手機網[] e
}
一定要有e
try
JAVA手機網[] {
}
catch (Exception e)
{
Fake(e);
}
請注意
方案二
如果以上方法還不夠專業
public class AntiCrack
{
private AntiCrack()
{
}
public static Throwable Fake(Throwable throwable
{
try
{
throwable
JAVA手機網[] java
})
throwable
});
}
catch(Exception exception) { }
return throwable;
}
}
try
{
//your code here
}
catch(IOException ioexception)
{
IllegalArgumentException illegalargumentexception = new IllegalArgumentException(ioexception
AntiCrack
throw illegalargumentexception;
}
或者也可以這樣
public class AntiException extends Exception
{
public AntiException()
{
}
public AntiException(String s)
{
super(s);
}
public AntiException(String s
{
super(s);
AntiCrack
}
}
JAVA手機網[]然後在你的程序裡面
try
{
}
catch(IoException e)
{
throw new AntiException(ioexception
}
當采用以上方式後
Decafe
呵呵
From:http://tw.wingwit.com/Article/program/Java/hx/201311/25765.html