BCEL 메소드 추가하기
적용에 앞서
이클립스의 경우 bcel 라이브러리 추가.
한차례 javac 후 arg를 추가하여 실행
최종확인은 터미널, 콘솔에서
Test.java
public class Test {}
AddMain.java
import java.io.IOException;
import org.apache.bcel.classfile.*;
import org.apache.bcel.generic.*;
import org.apache.bcel.*;
public class AddMain {
static public void main(String args[]) {
String className = (args.length >= 1) ? args[0] : "";
JavaClass mod = null;
try {
mod = Repository.lookupClass(className);
}
catch (Exception e) {
System.err.println("Could not get class " + className);
}
ClassGen modClass = new ClassGen(mod);
ConstantPoolGen cp = modClass.getConstantPool();
InstructionList il = new InstructionList();
il.append(new GETSTATIC(cp.addFieldref("java.lang.System","out","Ljava/io/PrintStream;")));
il.append(new PUSH(cp, "헐대박 쩔어"));
il.append(new INVOKEVIRTUAL(cp.addMethodref("java.io.PrintStream","println","(Ljava/lang/String;)V")));
il.append(new GETSTATIC(cp.addFieldref("java.lang.System","out","Ljava/io/PrintStream;")));
il.append(new PUSH(cp, "ㅋㅋ"));
il.append(new INVOKEVIRTUAL(cp.addMethodref("java.io.PrintStream","println","(Ljava/lang/String;)V")));
il.append(new RETURN());
MethodGen methodGen = new MethodGen(Constants.ACC_PUBLIC|Constants.ACC_STATIC,Type.VOID,new Type[]{new ArrayType(Type.STRING, 1)},new String[]{"args"}, "omgg", className, il, cp);
methodGen.setMaxLocals();
methodGen.setMaxStack();
modClass.addMethod(methodGen.getMethod());
modClass.update();
try {
JavaClass newClass = modClass.getJavaClass();
String className2 = className.replace(".","/");
newClass.dump(className2 + ".class");
System.out.println("Class " + className + " modified");
}
catch (IOException e) {
e.printStackTrace();
}
}
}
'Study > BCI&BCEL&ASM' 카테고리의 다른 글
bcel 6 다운로드 (0) | 2015.01.12 |
---|---|
BCI 기술과 BCEL (0) | 2015.01.12 |
ASM 으로 바이트코드 변경하기. (0) | 2014.08.21 |
BCEL 그나마 나은 참고자료.. (0) | 2014.08.04 |
bcel api doc (0) | 2014.08.01 |
예비군 동미참훈련.. 관동교장
1일차.
줄을 오른쪽에서 세번째 정도 줄에 섰더니 3분대가 되어버림..
더움,
점심시간엔 그냥 식당안에서 에어컨 쐴것..
걍 열심히 하는척만 하기.
2일차.
예비군 어느날이건 빠른입소 = 빠른퇴소.
1분대(기수분대) 가 조기퇴소할확률은 70% 이상인듯,
수류탄은 쎄게 던질것, 총은 그냥 걸쳐놓고할것,
밥은 굳이 안사도 배가 별로 안고픔( 밖에서 초코바 하나 사가서 먹었더니 괜찮은걸까..)
3일차
비와서 실내교육만 했다. 점심시간엔 비가그쳐서 피엑스가서 피자랑 햄사먹었다. 사람 졸라많더라.
관동교장 예비군연대? 대대? 장 새끼는 그렇게 인사를 받고싶은가보다. 우수분대선발한다고 비오는데도 졸라열심히 훈련참여했는데 퇴소식을 해야겠단다.
왠만하면 다른지역애들은 잘도 가던데 참 유도리라는게 실종된 종자다.
현역병은 모르겠지만 군인새끼들 욕하는 이유가 따로있는게 아니다.
취소 현역병새끼들도 다 똑같다 필증하나 끊어주면서 전화받으면서 미루고 아... 군바리새끼들..
'Day by day > Diary' 카테고리의 다른 글
29살 백수여자의 질문.. (1) | 2018.05.04 |
---|---|
지금 알고 있는걸, 그때도 알았더라면... (0) | 2014.08.10 |
신발사야하는데..? (0) | 2014.08.03 |