.class 파일로 컴파일 된 자바 코드가 있습니다. 매개 변수를 거의 가져 오지 않고 몇 가지 작업을 수행하는 함수가 있습니다 (예 : int x 및 int y 가져 오기 및 x + y 수행)
이 .class 파일 코드에 x = 1 및 다른 함수 호출 (예 : xy 호출 및 x + y하지 않음)
컴파일 된 .class 파일을 편집하고 내 코드를 추가하려면 어떻게해야합니까?
코멘트
- 질문을 수정했습니다. 실제로 묻고 싶었던 질문입니다. 그렇지 않은 경우 댓글에 명시하거나 직접 수정하세요.
Answer
이를 수행하는 방법에는 여러 가지가 있습니다.
-
.class를 .java 소스로 디 컴파일 ( 원본 소스는 아니지만 동등 함) 변경하고 다시 컴파일하십시오. 많은 Java 디 컴파일러가 있지만 모두 나열하지는 않겠습니다.
-
Disassemble .class to “assembly”(일반적으로 Jasmin 구문), 수정하고 다시 조립합니다. Krakatau 는이를 수행 할 수있는 좋은 도구입니다.
-
수정할 수있는 도구를 사용합니다. .class 파일에서 직접 바이트 코드를 패치하십시오. 시도 해본 적은 없지만 Recaf 는 할 수 있다고 주장합니다.
-
Hook the Java 런타임 인터프리터가 대상 함수를 실행하기 시작하는 순간을 포착하고 대신 다른 것을 실행하도록합니다. 이것은 구현에 따라 다소 다르지만 여기에 Java 디버깅 프로토콜 (JWDP)을 사용하는 한 가지 예가 있습니다. https://github.com/CrowdStrike/pyspresso
답변
JByteMod를 사용하여 클래스 바이트 코드를 편집 할 수 있습니다. 새 메소드를 생성하고 메소드, 필드를 삭제하고 액세스를 변경할 수도 있습니다.
사용하기가 매우 쉽습니다. jar를로드하고 편집 할 클래스를 선택하기 만하면됩니다.
JByteMod : https://github.com/GraxCode/JByteMod-Beta/releases
댓글
- JByteMod는 ' 안타깝게도 2 년 동안 업데이트를하지 않았습니다. 저자는 비슷한 성격이지만 다른 프로젝트에 뛰어 들었습니다.