RJ01103194 정욕의 고식 마사지점 에셋 파일 교체
원글: https://kone.gg/s/somisoft/c0eHnpymh5Piv6bNUVGjSb
해당 작업 해주신 분이, 이미지를 asset 파일을 수정하는게 아니라 BepInEx의 Texture_Replacer 플러그인을 이용해서 이미지 교체를 하다보니 이미지를 새롭게 로딩하는 구간에서 렉이 너무 심해서 참고 플레이하다가 답답해져서 작업함.
원글 작성자가 작업한 번역 파일을 asset에 적용한 파일임.
원글 작성자에게 허락을 받지 않고 그냥 배포하는거라(이미지 데이터 자체가 원글 작성자가 만든 것이기 때문에), 문제시 글자삭.
링크: aHR0cHM6Ly9raW8uYWMvYy9kRFF6a2R3UDVGS1lUOGlSaHl0aldi
비번: 국룰
기간: 한달인데 원글 기간이 3일 남았으니 빨리 받으시길(8차 올라온다는데 언제 올라올지 몰루)
사용법
위의 원글에 있는 게임 다운로드해서 압축 풀기
'BeplnEX\plugins'에 있는 'Texture_Replacer_BE_il2cpp.dll'와 'ModImages'를 제거.
첨부한 파일 압축 풀어서 나오는 'DefaultPackage'와 'DLC' 폴더를 'MassageShop_Data\StreamingAssets'에 있는 파일에 덮어쓰기.
일단 내가 1회차 플레이할 동안에는 문제가 없었음.
아래에 작업한 방법 및 관련 파이썬 코드 작성하니(코드는 gemini가 거의 만들어줬지만), 혹시 배포한 파일 중에 뭔가 제대로 적용 안되서 문제가 생기는 일이 있는 경우 해당 방법으로 수정해서 재배포하셔도 됨.
원글 작성자의 8차 수정 패치가 올라와도 대응 작업은 제가 안 할 예정.
작업자를 위한 asset 교체 작업 방법 설명
일단 bundle파일이 암호화가 되어있기 때문에, 그냥 해당 bundle을 가지고 그대로 압축해제를 하려고 하면 문제가 발생할거임.
무작위로 파일 하나를 예로 들자면
이런 식으로 파일이 되어있음.
일반적으로 유니티 번들 파일은 utf-8 인코딩으로 헤더 부분에 UnityFS와 해당 asset의 버전 정보로 시작하는데, 이 게임의 asset 파일은 암호화를 해놔서 UnityFS라는 글자가 보이지 않음. 대신 '0x65'라는 문자열이 엄청 나오는 것을 확인할 수 있는데, 이게 이 게임 암호화의 힌트임.
이 게임은 XOR 암호화를 사용해서, 원본 데이터에 어떤 키 값을 가지고 바이트 단위 XOR로 파일을 암호화함.
그래서 이 키 값만 알 수 있다면 다시 복호화할 수 있음.
이 게임은 XOR 암호화를 할 때, asset bundle의 파일명을 기반으로 어떤 해쉬값을 계산해서 "unity_asset_bundle_android"의 문자열 중 한 문자값에 매칭을 시킨 다음, 해당 문자값의 ASCII 코드 값에 해당하는 값을 XOR 암호키로 사용함.
제일 좋은건 이 해쉬 알고리즘을 파악하는거겠지만, 굳이 그렇게 하지 않더라도 암호화/복호화가 가능함.(해쉬 알고리즘은 dll 파일을 리버스 엔지니어링 해야하기 때문에 귀찮음)
"u, n, i, t, y, _, a, s, e, b, d, l, r, o" 이 암호키를 기반으로 XOR 복호화를 이것저것 브루트포스로 실행한 다음에, 헤더에서 UnityFS라는 문자열로 복호화를 하는 암호키를 사용하면 되는거임. (아니면 저기 0x65가 반복해서 등장하는 것을 바탕으로 0x65로 암호화되었다는 것을 알 수도 있음)
올바르게 복호화 된 bundle 파일의 예시
아무튼 그래서 asset을 수정하려면
asset 파일을 XOR 복호화
복호화된 파일은 이제 정규 unity bundle 파일이기 때문에 AssetStudio 및 UABEA를 사용할 수 있음.
UABEA를 통해서 이미지 texture 교체 후 저장, 그리고 LZ4로 bundle 파일 압축하여 다시 저장.
수정된 unity bundle 파일을 다시 XOR로 암호화
라는 과정을 거치면 됨.
import osimport jsonimport shutil |
위의 파이썬 코드를 사용하면 복호화(복호화 할 때 json 파일로 복호화 키를 저장함. 나중에 다시 암호화 할 때 복호화 키를 다시 사용해야함) 및 암호화를 수행할 수 있음. (그냥 넣으려니까 사이트가 이상해서 코드 자꾸 이상해지는데 아 몰라 대충 복사해서 알아서 수정해 쓰세요...)
s/somisoft
• 157,564 subscribers- 1. 게시물 규정 양식
업로드 시 링크 암호화 & 필수 정보를 기입할 것
- 2. 질문
국룰, 암호화 링크 등 기본사항 질문 금지, 탭 미준수시 차단 및 삭제
- 3. 요청
요청 기준 및 양식 미준수 & 댓글로만 자료 복구 요청 시 차단
- 4. 미성년자 / 근첩 / 페미 / 다중계정
조금이라도 의심되면 선 차단, 후 해명
- 5. 좆목 / 네임드화
닉언, 네임드화 등 친목질 금지
- 6. 분탕 및 어그로 / 혐짤 / 낚시 / 뇌절
해당 카테고리의 차단 기간 및 가중처벌은 처리자 재량으로 판단
- 7. 홍보 / 판촉 / 거래
허용되지 않은 모든 형태의 홍보, 거래, 교환, 조건부 공유 시 차단
- 8. 쌀먹 / 바이러스
조건부 공유 & 수익성 링크 & 고의적인 바이러스 유포 시 갱신차단
- 9. 자료 분류 / AI
미검수 시 표기 필수, 생성형 AI를 사용한 자료의 제목에 AI 미기입 시 차단
- 10. 실사 / 토들러
업로드시 갱신 차단
- 11. 기타 세부 규정은 서브 공지사항 참고