중요 사항
MC-Remapper는 충분히 검증되지 않았습니다. 이 프로그램을 다른 프로젝트에 적용하기 전, 주의깊게 검증하시기 바랍니다.
소개
마인크래프트 1.14 이후 버전부터, 난독화된 코드에 대한 원본 이름 매핑 파일을 제공합니다. (FinalChild님의 글 참고)
이 프로그램은 해당 매핑 파일을 사용하여 소스코드의 난독화된 부분을 원상태로 복구해줍니다. 이 툴은 클래스파일 변환을 통하여난독화만 제거하기에 소스코드를 읽거나 수정하려면 선호하시는 디컴파일러로 직접 디컴파일하셔야 합니다.
컴파일
깃허브 레포지토리를 로컬 머신에 클론한 뒤, build.gradle 파일이 존재하는 폴더에서 아래 명령어를 실행합니다.
./gradlew installDist
build/install/MC-Remapper 폴더 아래에 실행 스크립트와 라이브러리가 생성됩니다.
사용법
build/install/MC-Remapper/bin 폴더에서 MC-Remapper(Max/Linux의 경우), MC-Remapper.bat(Windows의 경우)을 아래의 명령줄 인수와 함께 실행합니다.
--mapping (필수)
매핑 파일의 url주소입니다. 이 주소는 .minecraft/versions/$version/$version.json의 downloads에서 찾을 수 있습니다. client_mapping은 마인크래프트 클라이언트, server_mapping은 마인크래프트 서버 매핑입니다.
--input (필수)
입력파일(난독화된 파일)의 경로입니다. 입력파일은 마인크래프트 클라이언트(.minecraft/verions/$version/$version.jar), 마인크래프트 서버(minecraft.net에서 다운로드 받을 수 있는 바닐라 서버), 또는 재난독화(--reobf)할 파일입니다.
--output (필수)
출력파일(난독화가 제거된 파일)의 경로입니다. 같은 경로에 이미 파일이 존재한다면, 덮어씁니다.
--thread (선택, 기본값 = 8)
매핑 파일을 변환할때 사용할 스레드의 갯수입니다.
--reobf (선택)
reobf 옵션은 매핑의 방향을 바꿉니다. 기본적으로 MC-Remapper는 난독화된 파일을 난독화되지 않은 파일로 만듭니다. 만약 난독화가 제거된 코드로 모드 또는 플러그인을 개발한 후, 포지나 버킷에 적용한다면 NoClassDefFoundException, NoSuchMethodException과 같은 오류가 발생합니다. 이는 현재의 포지와 버킷은 난독화된 마인크래프트 코드를 사용하지만, 적용한 모드나 플러그인은 난독화가 제거된 클래스나 메서드, 필드에 접근을 시도하기 때문입니다. 이런경우, 제작한 모드나 플러그인을 이 옵션을 통해 재난독화시켜 난독화된 마인크래프트 코드에 접근하도록 만듭니다. 즉, 난독화가 제거된 코드를 난독화된 코드로 변환합니다.
사용 예시
./MC-Remapper --mapping https://launcher.mojang.com/v1/objects/448ccb7b455f156bb5cb9cdadd7f96cd68134dbd/server.txt --input server.jar --output deobf.jar --thread 8
DDang_
2020.01.31상위는 난독화가 되어있나요?
HeartPattern
2020.02.12상위버전 하위버전 모두 난독화되어 있지만, 상위버전은 난독화를 해제할 수 있는 파일을 제공합니다. 이 툴은 해당 파일을 이용해 난독화를 제거해줍니다.
윈초
2020.02.03..? 서버개발에 도움이 되는건가요?
HeartPattern
2020.02.12상위버전에서 nms를 사용할때, deobfuscate된 상태로 작업 후 reobfuscate하는 방식으로 쉽게 코딩할 수 있습니다.
윈초
2020.02.12아하