** 리버스 엔지니어링은 더이상 업그레이드가 제공되지 않는 S/W 에 대한 호환성 확보를 위한 목적에는 적법합니다.
컴퓨터프로그램 보호법 - 역분석 관련 법
제12조의2 (프로그램코드역분석) ①정당한 권원에 의하여 프로그램을 사용하는 자 또는 그의 허락을 받은 자가 호환에 필요한 정보를 쉽게 얻을 수 없고 그 획득이 불가피한 경우 당해 프로그램의 호환에 필요한 부분에 한하여 프로그램저작권자의 허락을 받지 아니하고 프로그램코드역분석을 할 수 있다. ②제1항의 규정에 의한 프로그램코드역분석을 통하여 얻은 정보는 다음 각호의 1에 해당하는 경우에는 이를 사용할 수 없다. 1. 호환 목적외의 다른 목적을 위하여 이용하거나 제3자에게 제공하는 경우 2. 프로그램코드역분석의 대상이 되는 프로그램과 표현이 실질적으로 유사한 프로그램을 개발·제작·판매하거나 기타의 프로그램저작권을 침해하는 행위에 이용하는 경우 [본조신설 2001·1·16][[시행일 2001·7·17]]
--- a/src/java.desktop/windows/native/libawt/windows/ShellFolder2.cpp Tue May 09 12:19:08 2017 -0700+++ b/src/java.desktop/windows/native/libawt/windows/ShellFolder2.cpp Thu May 11 12:41:35 2017 +0530@@ -1,5 +1,5 @@ /*- * Copyright (c) 2003, 2015, Oracle and/or its affiliates. All rights reserved.+ * Copyright (c) 2003, 2017, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it@@ -205,14 +205,19 @@ static jstring jstringFromSTRRET(JNIEnv* env, LPITEMIDLIST pidl, STRRET* pStrret) { switch (pStrret->uType) { case STRRET_CSTR :- return JNU_NewStringPlatform(env, reinterpret_cast<const char*>(pStrret->cStr));+ if (pStrret->cStr != NULL) {+ return JNU_NewStringPlatform(env, reinterpret_cast<const char*>(pStrret->cStr));+ }+ break; case STRRET_OFFSET : // Note : this may need to be WCHAR instead return JNU_NewStringPlatform(env, (CHAR*)pidl + pStrret->uOffset); case STRRET_WSTR :- return env->NewString(reinterpret_cast<const jchar*>(pStrret->pOleStr),- static_cast<jsize>(wcslen(pStrret->pOleStr)));+ if (pStrret->pOleStr != NULL) {+ return env->NewString(reinterpret_cast<const jchar*>(pStrret->pOleStr),+ static_cast<jsize>(wcslen(pStrret->pOleStr)));+ } } return NULL;
결국 앞서 언급한 APK 저장 사이트(apkplz.com)에서 패키지를 다운로드 후, 수작업으로 .obb 파일을 올려 두니 이제 서야 게임이 정상 작동!
요약
(게임과 같은 단일 APK로 설치가 완료 되지 않는 경우)
실행이 되지 않는 문제가 있을 경우.OBB 파일이 제대로 설치 되었는지 확인 후 적절히 해당 파일을 복사 하면 잘 실행 됨.
아래는 apkplz.com 에서 언급한 해당 사항입니다.
This download file have .apk and .obb (data) file.
Install APK and OBB on your android phone:
Place the APK file in your phone’s SDcard or Internal memory (preferably external SDcard).
Browse your phone memory/external memory and tap on the APK file.
Click ‘install’
Wait for the APK to install.
Do not run the application yet.
Copy the OBB folder to SDCard, ex: SDCARD/Android/obb/com.rovio.baba/obb_filename*
What are .OBB file?
.OBB file are APK Expansion Files Developers create OBB files to contain and bundle larger assets using the JOBB tool for Android SDK. They hold additional encrypted format data not stored in the main application package, including graphics and media files. They can be uploaded with the APK file using the Google Play Developer Console.
기술 자료를 좀더 보니, .obb 파일에 대한 관리를 application에서 직접 할 수 있더군요.
즉 실행 시점에 해당 파일이 없거나 문제가 있을 경우, 혹은 의도적으로 처음 실행시에 .obb 파일을 application에서 직접 다운로드가 가능 하다는 것!
즉 1차 잘못은 구글 설치자에 있었겠지만, 궁극적으로는 Rovio 의 AB 2에서 실행 시점에 해당 파일이 어떤 연유로 없거나 사용 불가면 다시 한번 다운로드 처리 해야 하는데 그러한 예외 처리가 빠져 있는 것 같네요.
Most of the time, Google Play downloads and saves your expansion files at the same time it downloads the APK to the device. However, in some cases Google Play cannot download the expansion files or the user might have deleted previously downloaded expansion files. To handle these situations, your app must be able to download the files itself when the main activity starts, using a URL provided by Google Play.