버그 해결을 위한 모든 질문을 던져
0 votes
287 views
UABE 로 제가 만든 프로그램 apk 분해했는데, 스크립트만 빼는게 생각보다 잘 안되요.

한꺼번에 하려니 잘 안되는데,

2021년 1월 4일

=> 앱이 mono로 만들어졌더라고요.

https://blog.nakwonelec.com/2018/03/26/unity-asset-bundle-extractor-사용법/

이 방법 대로 하려니 너무 어렵게 설명하셔서 이해가 안되요.

aapt 라는 리버스 엔니니어링(디컴파일) 로 정보만 보았는데, 제가 2015년 1월 1일에 유니티에서 빌드한 앱을 C# 스크립트로 변환하고 싶습니다.(내용)

왜 제가 만든 앱을 분해하냐면, 제가 외장하드를 2015년 2월 17일날 마이그레이션을 잘못 오해하여 외장하드를 포맷해서,

소스가 5년 째 날라간 상태입니다.

그래서 제가 짠 소스를 분해하기 위해 예전부터 지인들로부터 들었는데, 오늘 갑자기 리버스 엔지니어링 이라고 있어서,

생각이 나서 해보았는데, 잘 안됩니다. 좋은 프로그램 있으면 추천해주세요.

번들식별자 (Identifer) : org.game.white.squirrel

유니티 프로젝트 이름 : 20150101_White Squirrel Story

 

아래 내용은 aapt 로 정보를 캐치한 결과입니다.

그 외 사용한 program은 apktool.bat.txt 를 사용했는데 그것도 유니티 4.5.5 프로젝트로 만들기에는 갈 길이 머네요.

꼭 분해하고 싶습니다. 제 소중한 프로젝트입니다.

구글 드라이브 링크 남깁니다. 앱만 있습니다. 정상적으로 어느정도 작동합니다.

https://drive.google.com/drive/folders/1xENUKE8O7wJOBBX4WGQ1oTEjuXnxL77F?usp=sharing

C:\>aapt dump badging org.game.white.squirrel.apk
package: name='org.game.white.squirrel' versionCode='1' versionName='1.0' platformBuildVersionName='5.0.1-1624448'
install-location:'preferExternal'
application-label:'20150101_White Squirrel Story'
application-icon-120:'res/drawable-ldpi-v4/app_icon.png'
application-icon-160:'res/drawable/app_icon.png'
application-icon-240:'res/drawable-hdpi-v4/app_icon.png'
application-icon-320:'res/drawable-xhdpi-v4/app_icon.png'
application-icon-480:'res/drawable-xxhdpi-v4/app_icon.png'
application: label='20150101_White Squirrel Story' icon='res/drawable/app_icon.png'
launchable-activity: name='com.unity3d.player.UnityPlayerNativeActivity'  label='20150101_White Squirrel Story' icon=''
leanback-launchable-activity: name='com.unity3d.player.UnityPlayerNativeActivity'  label='20150101_White Squirrel Story' icon='' banner=''
sdkVersion:'9'
targetSdkVersion:'21'
uses-permission: name='android.permission.INTERNET'
feature-group: label=''
  uses-gl-es: '0x20000'
  uses-feature-not-required: name='android.hardware.touchscreen'
  uses-feature-not-required: name='android.hardware.touchscreen.multitouch'
  uses-feature-not-required: name='android.hardware.touchscreen.multitouch.distinct'
  uses-feature: name='android.hardware.screen.landscape'
  uses-implied-feature: name='android.hardware.screen.landscape' reason='one or more activities have specified a landscape orientation'
main
supports-screens: 'small' 'normal' 'large' 'xlarge'
supports-any-density: 'true'
locales: '--_--'
densities: '120' '160' '240' '320' '480'
native-code: 'armeabi-v7a'

C:\>aapt dump strings org.game.white.squirrel.apk
String pool of 6 unique UTF-8 non-sorted strings, 6 entries and 0 styles using 260 bytes:
String #0: res/drawable/app_icon.png
String #1: res/drawable-ldpi-v4/app_icon.png
String #2: res/drawable-hdpi-v4/app_icon.png
String #3: res/drawable-xhdpi-v4/app_icon.png
String #4: res/drawable-xxhdpi-v4/app_icon.png
String #5: 20150101_White Squirrel Story

C:\>aapt dump xmltree org.game.white.squirrel.apk AndroidManifest.xml
N: android=http://schemas.android.com/apk/res/android
  E: manifest (line=2)
    A: android:theme(0x01010000)=@0x1030006
    A: android:versionCode(0x0101021b)=(type 0x10)0x1
    A: android:versionName(0x0101021c)="1.0" (Raw: "1.0")
    A: android:installLocation(0x010102b7)=(type 0x10)0x2
    A: package="org.game.white.squirrel" (Raw: "org.game.white.squirrel")
    A: platformBuildVersionCode=(type 0x10)0x15 (Raw: "21")
    A: platformBuildVersionName="5.0.1-1624448" (Raw: "5.0.1-1624448")
    E: supports-screens (line=3)
      A: android:anyDensity(0x0101026c)=(type 0x12)0xffffffff
      A: android:smallScreens(0x01010284)=(type 0x12)0xffffffff
      A: android:normalScreens(0x01010285)=(type 0x12)0xffffffff
      A: android:largeScreens(0x01010286)=(type 0x12)0xffffffff
      A: android:xlargeScreens(0x010102bf)=(type 0x12)0xffffffff
    E: application (line=4)
      A: android:label(0x01010001)=@0x7f030000
      A: android:icon(0x01010002)=@0x7f020000
      A: android:debuggable(0x0101000f)=(type 0x12)0x0
      E: activity (line=5)
        A: android:label(0x01010001)=@0x7f030000
        A: android:name(0x01010003)="com.unity3d.player.UnityPlayerNativeActivity" (Raw: "com.unity3d.player.UnityPlayerNativeActivity")
        A: android:launchMode(0x0101001d)=(type 0x10)0x2
        A: android:screenOrientation(0x0101001e)=(type 0x10)0x0
        A: android:configChanges(0x0101001f)=(type 0x11)0x40000fff
        E: intent-filter (line=6)
          E: action (line=7)
            A: android:name(0x01010003)="android.intent.action.MAIN" (Raw: "android.intent.action.MAIN")
          E: category (line=8)
            A: android:name(0x01010003)="android.intent.category.LAUNCHER" (Raw: "android.intent.category.LAUNCHER")
          E: category (line=9)
            A: android:name(0x01010003)="android.intent.category.LEANBACK_LAUNCHER" (Raw: "android.intent.category.LEANBACK_LAUNCHER")
        E: meta-data (line=11)
          A: android:name(0x01010003)="unityplayer.UnityActivity" (Raw: "unityplayer.UnityActivity")
          A: android:value(0x01010024)=(type 0x12)0xffffffff
        E: meta-data (line=12)
          A: android:name(0x01010003)="unityplayer.ForwardNativeEventsToDalvik" (Raw: "unityplayer.ForwardNativeEventsToDalvik")
          A: android:value(0x01010024)=(type 0x12)0x0
    E: uses-sdk (line=15)
      A: android:minSdkVersion(0x0101020c)=(type 0x10)0x9
      A: android:targetSdkVersion(0x01010270)=(type 0x10)0x15
    E: uses-feature (line=16)
      A: android:glEsVersion(0x01010281)=(type 0x11)0x20000
    E: uses-permission (line=17)
      A: android:name(0x01010003)="android.permission.INTERNET" (Raw: "android.permission.INTERNET")
    E: uses-feature (line=18)
      A: android:name(0x01010003)="android.hardware.touchscreen" (Raw: "android.hardware.touchscreen")
      A: android:required(0x0101028e)=(type 0x12)0x0
    E: uses-feature (line=19)
      A: android:name(0x01010003)="android.hardware.touchscreen.multitouch" (Raw: "android.hardware.touchscreen.multitouch")
      A: android:required(0x0101028e)=(type 0x12)0x0
    E: uses-feature (line=20)
      A: android:name(0x01010003)="android.hardware.touchscreen.multitouch.distinct" (Raw: "android.hardware.touchscreen.multitouch.distinct")
      A: android:required(0x0101028e)=(type 0x12)0x0

 

2021년 1월 4일 오후 5시 44분 리플 : 감사드립니다.

이 소스는 2차 저작물 소스에 오픈소스 라이선스에 의하여 제가 블로그나  git에 완성하여 공개하도록 하겠습니다.

neckdoris git 검색해주세요. 아직 페이지는 못 만들었습니다.

카메라 코드가 꽤 유용했던걸로 기억합니다.

다만 두번째 답변자분 것도 한 번 써봐야겠습니다.

ILSPY 사용방법을 모르겠어서...

2021년 1월 4일 오후 5시 58분 리플 : 두번째 답변자님 하신데로 깔아보려 했으나 가입하라고 나오더군요.

ILSPY를 쓰는게 제일 좋다고는 생각합니다. 사용방법을 모르니, 기타 플러그인들 두 가지 NGUI 4 Easy Touch가 있어서,

저도 제가 직접 구현한 거 중에 정말 제대로 된 게 있는데, 일단 디컴파일 공부 좀 더해봐야할 것 같습니다.

 

2021년 1월 7일 오후 1시 7분 리플 : 세번째 자문자답에 대한 내용입니다.

제가 요즘 많이 피곤했나 봅니다. 항상 제 정신이 아닌데, 피곤하기 까지...,

잘 됩니다. (MouseOrbit.cs)

코드 수정하고, 갑자기 옛날 코드가 제 스타일이 아닌 느낌.. ㅎㅎ

도와주셔서 순조롭게 진행하고 있습니다.

github 에 github.com/neckdoris 계정이 있습니다. 추후 여기에 올라옵니다. 짧으면 일주일 걸립니다.

내일 눈이 많이 옵니다. 대중 교통 이용합시다.
asked (6 point)
수정됨 , 287 views

4 answers

0 votes

https://drive.google.com/file/d/1GERKLKUMS4aO9rsOLN7IJxisegxIlxb5/view?usp=sharing

ILSpy로 디컴파일 했습니다

* 구글 드라이브 파일 삭제했습니다

answered (4 point)
수정됨
디컴파일 공유에 감사드립니다.

타 플러그인 Easy Touch Joystick을 써서 아마 그 플러그인에 의존했는지, 조이스틱을 그걸로 만들다가 직접 구현했는지 기억은 안나지만, 제일 좋은 거는 디컴파일 기반으로 직접 구현하려고 합니다.

5년 전 기억이라서, 잘 안나던데, p_01_Disappear.cs 같은 경우는 파티클을 2D에도 표시해주는 기능이었던 걸로 기억합니다. 그냥 앞으로 공부를 많이 하다보면 그 때 기억을 찾을 것 같습니다.
저도 하루종일 했는데 감사드립니다.

제가 다운받은거

작성하는데 일주일정도에서 2주 정도 걸리는데,
디컴파일 해주신 걸 이걸 기반으로 오픈 소스로 Git이나 티스토리 등등에 공개해도 될까요?

 

 

 

 

사실 이 소스를 짜주신 분은 2014년 선생님인데, 저한테 주신거라서, 그 외 이동로직은 아마 없어서 아쉬웠지만, 보완해서 제가 수정하려고 합니다,. (=> 카메라 부분만)
주신 것만이라도 감사해서,

소스를 보니 저 기억이 조금 날 것 같아요.

0 votes
telerik justdecompile 이라고 테스트할 때 자주 썼던건데 APK 압축풀어서 dll파일 불러오면 C# 코드로 나왔던걸로 기억합니다.
answered (86 point)
0 votes
기억이 가물가물 합니다. 날듯 말듯...

무슨 소스 였는지, 기억이 아예 나지 않아서, 짜놓고도, 이게 정말 어떻게 돌아더라

 

하는 생각입니다.

분명 LateUpdate 는 제가 어렴풋이 확실하게 이거를 써야한다고 기억하는데, 유니티 기초가 다 떨어졌나...,

유니티 안한지 오래되다 보니...
answered (6 point)
0 votes
느낌이 하얀소닉인데
answered (124 point)

버그 해결을 위해 도움을 구하고, 도움을 주세요. 우리는 그렇게 발전합니다.

throw bug 는 프로그래밍에 대한 전분야를 다룹니다. 질문,논의거리,팁,정보공유 모든 것이 가능합니다. 프로그래밍과 관련이 없는 내용은 환영받지 못합니다.

461 질문
607 answers
598 댓글
69,120 users