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 계정이 있습니다. 추후 여기에 올라옵니다. 짧으면 일주일 걸립니다.
내일 눈이 많이 옵니다. 대중 교통 이용합시다.