- 121 名前:デフォルトの名無しさん mailto:sage [2006/10/27(金) 23:58:59 ]
- BCELを使った Java難読化プログラムです.
現在,9行.あと少し.キャストがうぜぇ.groovy なら問題なくできるだろう. import org.apache.bcel.classfile.*;class O{public static void main(String[]s) throws Exception{new O(new ClassParser(s[0]).parse());}int n=0;void u(Constant c){ConstantUtf8 u=(ConstantUtf8)c;if(u.getBytes().charAt(0)!='<')u.setBytes(""+ ++n);}O(JavaClass j)throws Exception{ConstantPool p=j.getConstantPool(); Constant[]c=p.getConstantPool();for(int i=0;i<c.length;i++){if(c[i]!=null){int t=c[i].getTag();if(t>8&&t<12){ConstantCP q=(ConstantCP)c[i];if(j.getClassName() .equals(q.getClass(p)))u(c[((ConstantNameAndType)c[q.getNameAndTypeIndex()]). getNameIndex()]);}}}u(c[((ConstantClass)c[j.getClassNameIndex()]).getNameIndex( )]);j.dump(n+".class");}} BCELじゃなく,ASMとか,javassist を使ったほうがいいのかな? java -cp .:bcel.jar O <target classfile>
|

|