2013-02-24 3 views
0

내가 더 아래 솔루션을 알고 싶었던 Decomplile수정을 .class 파일

  • 합니다. 클래스 파일을 수정하고 마지막으로 다시 컴파일하십시오. -
  • 16 진수 편집기로 직접 수정하십시오.

덕분에 두 잘못된 선택의

+0

이것에 대한 동기는 무엇입니까, 일부 해킹 - 놀이터 또는 이것을 사용하는 실제 사용 사례는 무엇입니까? –

+0

아니 실제 사용, 나는 약간의 수정을해야하고 어떤 고려하는 것이 더 좋은지 알고 싶었어요. – developer

+1

사람들이 당신에게 손을 댈 수 있도록 문제를 설명하면 더 좋을 것입니다. 우리는 마법의 수정 구슬이있는 마법사가 아니므로 요구 사항을 추측하거나 마음을 읽을 수 있습니다. –

답변

1

, 디 컴파일, 수정하고 재 컴파일이 더 좋다. 바이너리에서 무엇이든 변경하면 다른 것들의 오프셋과 훨씬 더 오류가 발생하기 쉽습니다.

.class 파일에는 바이트 코드 유효성 검사가 필요하지만 알고있는 한 체크섬이나 오류 검사가 없습니다. 그렇더라도 컴파일러의 출력은 더 안전합니다.

+4

어쩌면 OP는 클래스를 확장하여 수정하지 않아도됩니다. 하지만 OP가 실제 문제를 설명 할 때까지는 확신 할 수 없습니다. –

+0

@evil otto가 더 나은 선택입니까? – developer

+0

거의 확실합니다. Luiggi가 묻는 것처럼, 그것은 당신이하려고하는 것이 무엇인지에 달려 있습니다. 말로 표현할 수없는 문제에 대한 해결책이 좋은지 묻는 중입니다. 실제로 직면하고있는 문제에 대해 묻는 것은 훨씬 생산적 일 것입니다. –

1

옵션 # 3 - 만약 당신이 바이트 코드로 어지럽게 될 경우, 당신이 할 수있는 일은 휠을 다시 발명하는 것을 피하기 위해 그것을 위해 고안된 라이브러리를 사용하는 것입니다. 소스 코드가없는 경우 예를

0

에 대한 asm을보고, 당신은 내가를 검사 (Java Decomiler와 조합 (바이트 코드 수정을 위해) Javassist 라이브러리를 사용하여 recomment, 당신은 .class 파일을 수정 하시겠습니까 출처).

+0

소스가 있지만 JSP와 Soot가 JSP에서 작동하지 않으면 입력으로 Java 또는 클래스 파일을 가져옵니다. – developer

+0

@developer JSP가 있으면 훨씬 더 나은 옵션이 있습니다. 왜 사람들이 진짜 문제를 묻는 지 알겠습니까? – Henry

+0

@Henry를 도와 줄 수 있습니까? – developer

1

JSP 소스를 클래스에 사용할 수 있다는 것이 밝혀졌습니다. 따라서 더 나은 접근 방법은 을 JSP 소스에서 수정 한 다음 JSP 컴파일러 (예 : this one)를 사용하는 것입니다.

+0

Soot를 사용해야하고 JSP로 작동하지 않기 때문에 이것이 적합하지 않을 수도 있습니다. 수정하기 전에 Soot를 사용하여 어디에서 수정해야하는지 확인해야합니다. – developer

+0

정확히 무엇을 달성하기를 원하는지 아직 명확하지 않습니다. 생성 된 코드를 수동으로 수정하는 것은 유지 보수의 악몽입니다. – Henry

+0

수정이 필요한 부분을 식별하려면 Soot를 사용해야합니다. (Soot는 필수적입니다.) 따라서 Soot는 java 및 클래스 파일을 입력으로 가져 오기 때문에 JSP를 사용할 수 없습니다. – developer

0

옵션 # 1입니다. JAD 또는 다른 디 컴파일러를 사용하여 .java를 만들고, 변경하고, 컴파일하고, 이전 .class를 새 버전으로 바꿉니다.

+0

감사합니다. @Evgeniy Dorofeev. 이 솔루션이 다른 사람들이 제안한 것처럼이 솔루션이 가장 좋은 것처럼 보입니다. – developer

0

바이트 코드 파일을 어지럽히는 해결책은 없습니다. 소스 코드의

  • 가져 오기 보류하고 소스 코드에 필요한 변경 :

    좋은 솔루션입니다. 그런 다음 다시 컴파일하고, 단위 테스트를 실행하고, WAR를 작성하고, 재배포하는 등의 작업을 수행합니다.

  • 소스 코드를 얻을 수없는 경우 소스 코드를 작성한 사람에게 문제를 해결하십시오.

  • 무료로 문제를 해결할 수없는 경우 지불하십시오.

  • 돈을 지불하더라도 해결하지 못하면 제품을 버리고 대안을 찾으십시오. 위의의 것도 실행 가능한 옵션이없는 경우

만 디 컴파일 및/또는 바이트 코드 공학의 나쁜 솔루션을 고려한다. 그리고 그때조차도 현재있는 전체에서 벗어날 수있는 방법을 계획해야합니다. '나쁜 해결책으로 만 더 깊어 질 것입니다.


솔직히 말해서 나는 나쁜 해결책 중 최고라고 말할 수 없습니다.이에 따라 달라 리버스 엔지니어링 바이트 코드에서

  • 코드의 성격,
  • 당신이 코드를 확인해야합니다 변경의 성격, 그리고
  • 기술을.
0

저는 cavaj, JAD 및 JD-GUI를 사용했으며 꽤 동일한 디 컴파일 결과를 제공했습니다. 그러나 JD-GUI는 다른 두 제품과 비교했을 때 더 나은 결과를 보여 주었기 때문에 나에게 더 나은 선택이었습니다. 누군가가 디 컴파일러를 선택할 때를 대비해서 이것을 공유하고 싶었습니다.

관련 문제