난독 화 된 항아리에서 특정 클래스 파일을 내 파일로 바꾸려고합니다. 원본 클래스 파일에는 "new"및 "null"이라는 메서드가 있으므로 빠른 디 컴파일 + 컴파일이 작동하지 않습니다. 모든 것을 "new_symbol"함수에 전달하는 "new"라는 새 메서드를 추가하기 위해 jbe를 컴파일하고 사용하려고했습니다 (new_symbol은 원래 "new"함수의 디 컴파일 된 버전을 사용함). 이것은 작동하지 않았습니다. ( "코드 세그먼트의 클래스 파일 길이가 잘못되었습니다.")
누구든지 클래스 파일에서 메서드 이름을 재구성하는 방법을 알고 있습니까? 그리고 그것이 가능하지 않다면, 그 "프록시 함수"를 안정적으로 만드는 방법은 무엇입니까? Google에서 약 1000 개 이상의 다른 백엔드 라이브러리가 있지만 바이트 코드 편집을위한 jbe 만 있다는 것을 알게 되었습니까?
편집 : 그것을 설명해 보겠습니다. 데이터베이스에 제공하는 모든 것을 기록하는 함수를 제공하는 클래스가있는 jar 파일이 있다고 가정 해 보겠습니다. 이 클래스 파일을 내 자신의 파일로 바꾸고 싶습니다. 모든 것을 데이터베이스에 기록 할뿐만 아니라 명령 줄에 가져 오는 모든 데이터를 인쇄해야합니다.
문제는 그 클래스 파일이 난독 화되었고 난독 화자가 "new"또는 "null"과 같은 공개 메서드 이름을 부여했다는 것입니다. 시도하는 경우 :
public class replacement{
public void new (string data){
...
}
}
그리고 컴파일하면 컴파일 오류가 발생합니다.
내 생각은 이것을 만드는 것이 었습니다.
public class replacement{
public void newsymbol (string data){
...
}
}
그리고 바이트 코드 편집기를 사용하여 동일한 인수로 "newsymbol"을 호출하는 "new"라는 함수를 만듭니다. (하지만 "코드 세그먼트 길이가 잘못되었습니다"와이 경로를 따라가는 다른 오류가 발생합니다.
따라서 내 질문은 "공용 메서드의 이름이"new ""null ""weird_unicode_symbols "인 클래스 파일에 대한 호출을 가로 챌 수있는 방법을 제공하는 것으로 더 잘 이해할 수 있습니다 ....
그래서 나에게 가장 좋은 해결책은 16 진 편집기 (user60561이 제안한대로)를 사용하는 것이 었습니다.
당연히 모든 함수와 필드의 이름은 클래스 파일에 한 번만 저장되므로 동일한 바이트 수의 이름을 사용하면 승리로가는 길을 헥스 편집 할 수 있습니다. 저에게는 "new"를 "abc"로 바꾸고 모든 이상한 유니 코드 문자를 2 문자 시퀀스로 바꾸는 것이 었습니다.
모든 제안에 감사드립니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다