无聊之作 对 手游十万个为啥 的解包分析笔记 游戏引

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了无聊之作 对 手游十万个为啥 的解包分析笔记 游戏引相关的知识,希望对你有一定的参考价值。

从神之刃开始,对这个游戏的引擎就充满了好奇,要什么样的手法把一个游戏包减少到40M。虽然有些童鞋总喜欢说无非就是压缩资源减少图片大小毫无技术含量这等话,但我们公司是做不到的。十万个为什么手游版的出现,让我想尽自己能力去分析看看。

文章出自
从网上下载十万个为什么的 APK 安装包后,直接改成ZIP进行解压。因为网上文章说神之刃 是 妙趣横生 的自研引擎,所以直接来看Libs文件夹吧。

Libs文件夹里面有4个不同CPU类型的子文件夹,只有 armeabi-v7a 中存在引擎相关的SO动态链接库文件。

无聊之作 对 手游十万个为什么(神之刃) 的解包分析笔记 (游戏引

看到这五个SO文件,给我这个半吊子游戏开发者造成的迷惑来说不亚于太阳从西边出来。

为什么这么说?

libcheck.so libentryex.so 这两个应该是腾讯的三方SDK所有。

libgnustl_shared.so 这个文件应该是使用了C++所以会有。

那么游戏所有的就只有 libmqcj.so libcompress.so 这两个动态链接库了。

直觉告诉我,,这两个动态链接库不可能是游戏主要的动态链接库文件。

至于SO文件的大小,Unity的 libunity.so + libmono.so 是14M,就连NDK的Sample都有47KB。难道十万个为什么整个游戏框架只有58+6KB?这明显不可能的。

文章出自
进一步,反编译APK,查看Manifest文件和Java源代码。

上面是十万个为什么的Manifest文件,从中可以看出:

com.mqgame.lib.SLaunchActivity 这个是游戏的启动Activity 。

com.mqgame.lib.SNativeActivity 这个是NativiActivity ,并且指定动态链接库 mqcj ,就是上面6KB的那个文件。

来分析反编译出来的Java源代码。

首先来看 com.mqgame.lib.SLaunchActivity ,这个Activity 在游戏中就是 资源准备的界面。女王大人。

无聊之作 对 手游十万个为什么(神之刃) 的解包分析笔记 (游戏引

if (localIterator.hasNext()) localRunningTaskInfo = (ActivityManager.RunningTaskInfo)localIterator.next(); if ((localRunningTaskInfo.topActivity.getPackageName().equals(getPackageName())) || (localRunningTaskInfo.baseActivity.getPackageName().equals(getPackageName()))) if ((localRunningTaskInfo.topActivity.getClassName().equals("com.mqgame.lib.SNativeActivity")) || (localRunningTaskInfo.baseActivity.getClassName().equals("com.mqgame.lib.SNativeActivity"))) if (localRunningTaskInfo.numRunning >= 1) Log.d("sog_debug", "SOGActivity:Relaunch native"); localIntent2 = getIntent(); if (localIntent2 != null) localIntent2.setClass(this, SNativeActivity.class); label194: localIntent2.setFlags(131072); startActivity(localIntent2); finish();
然后在加载任务执行完毕后,跳转到 SNativeActivity 。
在SNativeActivity中看到有一个 preRun函数

文章出自
public boolean preRun() int i = 1; label323: int j; do try LinkedList localLinkedList = new LinkedList(); localLinkedList.add(new String("gnustl_shared")); localLinkedList.add(new String("openal")); localLinkedList.add(new String("compress")); localLinkedList.add(new String("script")); localLinkedList.add(new String("iconv")); localLinkedList.add(new String("ogg")); localLinkedList.add(new String("vorbis")); localLinkedList.add(new String("vorbisfile")); localLinkedList.add(new String("curl")); localLinkedList.add(new String("autoupdater")); localLinkedList.add(new String("speex")); localLinkedList.add(new String("mqcj")); Iterator localIterator = localLinkedList.iterator(); while (true) if (!localIterator.hasNext()) break label323; String str1 = (String)localIterator.next(); str2 = new String(SUtility.getLibPath() + File.separator + "lib" + str1 + ".so"); if (new File(str2).exists()) break; System.loadLibrary(str1); catch (Exception localException) while (true) String str2; localException.printStackTrace(); SUtility.appendLog(localException.toString()); i = 0; return i; System.load(str2); catch (Error localError) localError.printStackTrace(); SUtility.appendLog(localError.toString()); return i; VoiceManager.init(this); SUtility.bNativeEntered = true; j = Settings.System.getInt(getContentResolver(), "accelerometer_rotation", 0); while ((Build.VERSION.SDK_INT < 9) || (j != i)); setRequestedOrientation(6); return i;
从代码上来理解,应该存在两个目录用于存放SO文件。

首先从默认的Libs目录查找,然后从第二个Libs文件夹中寻找是不是有这个SO文件,如果有就使用第二个的SO。于是开始在SDK卡中寻找。却没有搜索到,看样子并没有解压到SDK卡中。那就应该是解压到了APP的默认应用文件夹了。于是去找了一个Root的手机来安装游戏。
。。。。。。。文章出自

在玩游戏的时候正好电脑上开着Eclipse,看到了以下Log:

03-29 16:14:07.582: D/SOG(8950): Ready to show Game 03-29 16:14:07.587: D/dalvikvm(8950): Trying to load lib /data/app-lib/com.linekong.cjad.lk-1/libgnustl_shared.so 0x421565f0 03-29 16:14:07.597: D/dalvikvm(8950): Added shared lib /data/app-lib/com.linekong.cjad.lk-1/libgnustl_shared.so 0x421565f0 03-29 16:14:07.597: D/dalvikvm(8950): No JNI_OnLoad found in /data/app-lib/com.linekong.cjad.lk-1/libgnustl_shared.so 0x421565f0, skipping init 03-29 16:14:07.597: D/SOG_DEBUG(8950): Loading liberary from inner gnustl_shared 03-29 16:14:07.597: D/dalvikvm(8950): Trying to load lib /data/app-lib/com.linekong.cjad.lk-1/libcompress.so 0x421565f0 03-29 16:14:07.602: D/dalvikvm(2087): GC_CONCURRENT freed 24K, 28% free 17104K/23584K, paused 2ms+2ms, total 22ms 03-29 16:14:07.602: D/dalvikvm(2087): WAIT_FOR_CONCURRENT_GC blocked 19ms 03-29 16:14:07.607: D/dalvikvm(8950): Added shared lib /data/app-lib/com.linekong.cjad.lk-1/libcompress.so 0x421565f0 03-29 16:14:07.607: D/dalvikvm(8950): No JNI_OnLoad found in /data/app-lib/com.linekong.cjad.lk-1/libcompress.so 0x421565f0, skipping init 03-29 16:14:07.607: D/SOG_DEBUG(8950): Loading liberary from inner compress 03-29 16:14:07.607: D/dalvikvm(8950): Trying to load lib /data/data/com.linekong.cjad.lk/files/libs/libcurl.so 0x421565f0 03-29 16:14:07.607: D/dalvikvm(8950): GC_CONCURRENT freed 253K, 6% free 5156K/5480K, paused 6ms+2ms, total 17ms 03-29 16:14:07.612: D/dalvikvm(8950): Added shared lib /data/data/com.linekong.cjad.lk/files/libs/libcurl.so 0x421565f0 03-29 16:14:07.612: D/dalvikvm(8950): No JNI_OnLoad found in /data/data/com.linekong.cjad.lk/files/libs/libcurl.so 0x421565f0, skipping init 03-29 16:14:07.612: D/SOG_DEBUG(8950): Loading liberary from path:/data/data/com.linekong.cjad.lk/files/libs/libcurl.so 03-29 16:14:07.612: D/dalvikvm(8950): Trying to load lib /data/data/com.linekong.cjad.lk/files/libs/libautoupdater.so 0x421565f0 03-29 16:14:07.642: D/dalvikvm(8950): Added shared lib /data/data/com.linekong.cjad.lk/files/libs/libautoupdater.so 0x421565f0 03-29 16:14:07.642: D/dalvikvm(8950): No JNI_OnLoad found in /data/data/com.linekong.cjad.lk/files/libs/libautoupdater.so 0x421565f0, skipping init 03-29 16:14:07.642: D/SOG_DEBUG(8950): Loading liberary from path:/data/data/com.linekong.cjad.lk/files/libs/libautoupdater.so 03-29 16:14:07.677: D/libEGL(8950): loaded /system/lib/egl/libEGL_mali.so 03-29 16:14:07.677: D/libEGL(8950): loaded /system/lib/egl/libGLESv1_CM_mali.so 03-29 16:14:07.682: D/libEGL(8950): loaded /system/lib/egl/libGLESv2_mali.so 03-29 16:14:07.687: E/(8950): Device driver API match 03-29 16:14:07.687: E/(8950): Device driver API version: 401 03-29 16:14:07.687: E/(8950): User space API version: 401 03-29 16:14:07.687: E/(8950): mali: REVISION=Linux-r4p0-00rel0 BUILD_DATE=Tue Jul 8 00:03:51 CST 2014 03-29 16:14:07.687: W/linker(8950): libion.so has text relocations. This is wasting memory and is a security risk. Please fix. 03-29 16:14:07.687: V/WindowAnimator(1979): No window is displayed, unset the SET_ORIENTATION_CHANGE_COMPLETE flag 03-29 16:14:07.742: D/OpenGLRenderer(8950): Enabling debug mode 0 03-29 16:14:07.757: D/SOG(8950): Total:1090 Sub:1080 SceenX:1280 SceenY:800 dX:76 dy:43 nProcess X:160 nProcess Width:770 LocaltionShow:0 03-29 16:14:07.782: D/dalvikvm(8950): GC_FOR_ALLOC freed 64K, 7% free 5140K/5480K, paused 9ms, total 9ms 03-29 16:14:07.787: I/dalvikvm-heap(8950): Grow heap (frag case) to 6.647MB for 1638544-byte allocation 03-29 16:14:07.797: D/dalvikvm(8950): GC_FOR_ALLOC freed <1K, 5% free 6740K/7084K, paused 13ms, total 13ms 03-29 16:14:07.812: D/dalvikvm(8950): GC_CONCURRENT freed 2K, 5% free 6771K/7084K, paused 1ms+2ms, total 16ms 03-29 16:14:07.817: D/sog_debug(8950): launch service 03-29 16:14:07.817: D/SOG(8661): sog service shutdown 03-29 16:14:07.817: D/SOG(8661): sog service startuping 03-29 16:14:07.817: D/Service Loading(8661): /data/data/com.linekong.cjad.lk/files/libs/libgnustl_shared.so 03-29 16:14:07.817: D/dalvikvm(8661): Trying to load lib /data/app-lib/com.linekong.cjad.lk-1/libgnustl_shared.so 0x421512b0 03-29 16:14:07.817: D/dalvikvm(8661): Shared lib '/data/app-lib/com.linekong.cjad.lk-1/libgnustl_shared.so' already loaded in same CL 0x421512b0 03-29 16:14:07.817: D/Service Loading(8661): /data/data/com.linekong.cjad.lk/files/libs/libcompress.so 03-29 16:14:07.817: D/dalvikvm(8661): Trying to load lib /data/app-lib/com.linekong.cjad.lk-1/libcompress.so 0x421512b0 03-29 16:14:07.817: D/dalvikvm(8661): Shared lib '/data/app-lib/com.linekong.cjad.lk-1/libcompress.so' already loaded in same CL 0x421512b0 03-29 16:14:07.817: D/Service Loading(8661): /data/data/com.linekong.cjad.lk/files/libs/libscript.so 03-29 16:14:07.822: D/dalvikvm(8661): Trying to load lib /data/data/com.linekong.cjad.lk/files/libs/libscript.so 0x421512b0 03-29 16:14:07.822: D/sog_debug(8950): launch game 03-29 16:14:07.822: D/dalvikvm(8661): Shared lib '/data/data/com.linekong.cjad.lk/files/libs/libscript.so' already loaded in same CL 0x421512b0 03-29 16:14:07.822: D/Service Loading(8661): /data/data/com.linekong.cjad.lk/files/libs/libiconv.so 03-29 16:14:07.822: D/dalvikvm(8661): Trying to load lib /data/data/com.linekong.cjad.lk/files/libs/libiconv.so 0x421512b0 03-29 16:14:07.822: D/dalvikvm(8661): Shared lib '/data/data/com.linekong.cjad.lk/files/libs/libiconv.so' already loaded in same CL 0x421512b0 03-29 16:14:07.822: D/Service Loading(8661): /data/data/com.linekong.cjad.lk/files/libs/libcurl.so 03-29 16:14:07.822: D/dalvikvm(8661): Trying to load lib /data/data/com.linekong.cjad.lk/files/libs/libcurl.so 0x421512b0 03-29 16:14:07.822: D/dalvikvm(8661): Shared lib '/data/data/com.linekong.cjad.lk/files/libs/libcurl.so' already loaded in same CL 0x421512b0 03-29 16:14:07.822: D/Service Loading(8661): /data/data/com.linekong.cjad.lk/files/libs/libpush.so 03-29 16:14:07.822: D/dalvikvm(8661): Trying to load lib /data/data/com.linekong.cjad.lk/files/libs/libpush.so 0x421512b0 03-29 16:14:07.822: D/dalvikvm(8661): Shared lib '/data/data/com.linekong.cjad.lk/files/libs/libpush.so' already loaded in same CL 0x421512b0 03-29 16:14:08.417: D/dalvikvm(8950): Trying to load lib /data/app-lib/com.linekong.cjad.lk-1/libgnustl_shared.so 0x421565f0 03-29 16:14:08.417: D/dalvikvm(8950): Shared lib '/data/app-lib/com.linekong.cjad.lk-1/libgnustl_shared.so' already loaded in same CL 0x421565f0 03-29 16:14:08.417: D/dalvikvm(8950): Trying to load lib /data/data/com.linekong.cjad.lk/files/libs/libopenal.so 0x421565f0 03-29 16:14:08.422: D/dalvikvm(8950): Added shared lib /data/data/com.linekong.cjad.lk/files/libs/libopenal.so 0x421565f0 03-29 16:14:08.422: D/dalvikvm(8950): Trying to load lib /data/app-lib/com.linekong.cjad.lk-1/libcompress.so 0x421565f0 03-29 16:14:08.422: D/dalvikvm(8950): Shared lib '/data/app-lib/com.linekong.cjad.lk-1/libcompress.so' already loaded in same CL 0x421565f0 03-29 16:14:08.422: D/dalvikvm(8950): Trying to load lib /data/data/com.linekong.cjad.lk/files/libs/libscript.so 0x421565f0 03-29 16:14:08.422: D/dalvikvm(8950): Added shared lib /data/data/com.linekong.cjad.lk/files/libs/libscript.so 0x421565f0 03-29 16:14:08.422: D/dalvikvm(8950): No JNI_OnLoad found in /data/data/com.linekong.cjad.lk/files/libs/libscript.so 0x421565f0, skipping init 03-29 16:14:08.422: D/dalvikvm(8950): Trying to load lib /data/data/com.linekong.cjad.lk/files/libs/libiconv.so 0x421565f0 03-29 16:14:08.422: D/dalvikvm(8950): Added shared lib /data/data/com.linekong.cjad.lk/files/libs/libiconv.so 0x421565f0 03-29 16:14:08.422: D/dalvikvm(8950): No JNI_OnLoad found in /data/data/com.linekong.cjad.lk/files/libs/libiconv.so 0x421565f0, skipping init 03-29 16:14:08.422: D/dalvikvm(8950): Trying to load lib /data/data/com.linekong.cjad.lk/files/libs/libogg.so 0x421565f0 03-29 16:14:08.427: D/dalvikvm(8950): Added shared lib /data/data/com.linekong.cjad.lk/files/libs/libogg.so 0x421565f0 03-29 16:14:08.427: D/dalvikvm(8950): No JNI_OnLoad found in /data/data/com.linekong.cjad.lk/files/libs/libogg.so 0x421565f0, skipping init 03-29 16:14:08.427: D/dalvikvm(8950): Trying to load lib /data/data/com.linekong.cjad.lk/files/libs/libvorbis.so 0x421565f0 03-29 16:14:08.427: D/dalvikvm(8950): Added shared lib /data/data/com.linekong.cjad.lk/files/libs/libvorbis.so 0x421565f0 03-29 16:14:08.427: D/dalvikvm(8950): No JNI_OnLoad found in /data/data/com.linekong.cjad.lk/files/libs/libvorbis.so 0x421565f0, skipping init 03-29 16:14:08.427: D/dalvikvm(8950): Trying to load lib /data/data/com.linekong.cjad.lk/files/libs/libvorbisfile.so 0x421565f0 03-29 16:14:08.427: D/dalvikvm(8950): Added shared lib /data/data/com.linekong.cjad.lk/files/libs/libvorbisfile.so 0x421565f0 03-29 16:14:08.427: D/dalvikvm(8950): No JNI_OnLoad found in /data/data/com.linekong.cjad.lk/files/libs/libvorbisfile.so 0x421565f0, skipping init 03-29 16:14:08.427: D/dalvikvm(8950): Trying to load lib /data/data/com.linekong.cjad.lk/files/libs/libcurl.so 0x421565f0 03-29 16:14:08.427: D/dalvikvm(8950): Shared lib '/data/data/com.linekong.cjad.lk/files/libs/libcurl.so' already loaded in same CL 0x421565f0 03-29 16:14:08.427: D/dalvikvm(8950): Trying to load lib /data/data/com.linekong.cjad.lk/files/libs/libautoupdater.so 0x421565f0 03-29 16:14:08.427: D/dalvikvm(8950): Shared lib '/data/data/com.linekong.cjad.lk/files/libs/libautoupdater.so' already loaded in same CL 0x421565f0 03-29 16:14:08.427: D/dalvikvm(8950): Trying to load lib /data/data/com.linekong.cjad.lk/files/libs/libspeex.so 0x421565f0 03-29 16:14:08.432: D/dalvikvm(8950): Added shared lib /data/data/com.linekong.cjad.lk/files/libs/libspeex.so 0x421565f0 03-29 16:14:08.432: D/dalvikvm(8950): No JNI_OnLoad found in /data/data/com.linekong.cjad.lk/files/libs/libspeex.so 0x421565f0, skipping init 03-29 16:14:08.432: D/dalvikvm(8950): Trying to load lib /data/data/com.linekong.cjad.lk/files/libs/libmqcj.so 0x421565f0 03-29 16:14:08.502: D/dalvikvm(8950): Added shared lib /data/data/com.linekong.cjad.lk/files/libs/libmqcj.so 0x421565f0 03-29 16:14:08.502: W/Looper(8950): Looper already prepared for this thread with a different value for the ALOOPER_PREPARE_ALLOW_NON_CALLBACKS option. 03-29 16:14:08.507: V/VoiceManager(8950): VoiceManager Init Finished! 03-29 16:14:08.712: I/MemTotal: 1723840 kB MemFree: 357384 kB(8950) 03-29 16:14:08.712: I/MemTotal: 1723840 kB MemFree: 357384 kB(8950): MemTotal: 03-29 16:14:08.712: I/MemTotal: 1723840 kB MemFree: 357384 kB(8950): 1723840 03-29 16:14:08.712: I/MemTotal: 1723840 kB MemFree: 357384 kB(8950): kB 03-29 16:14:08.712: I/MemTotal: 1723840 kB MemFree: 357384 kB(8950): MemFree: 03-29 16:14:08.712: I/MemTotal: 1723840 kB MemFree: 357384 kB(8950): 357384 03-29 16:14:08.712: I/MemTotal: 1723840 kB MemFree: 357384 kB(8950): kB 文章出自
顿时一切都明了了。
游戏分别从以下两个目录加载了SO文件

1、工程中的Libs文件夹,就是 /data/app-lib/,使用system.loadLibrary()加载

2、默认应用文件夹 /data/data/com.linekong.cjad.lk/files 中的 libs/* ,使用system.load() 加载
文章出自
在Root过的手机上安装ES文件管理器后,在/data/data/com.linekong.cjad.lk/files/libs中找到了游戏所使用的SO,
参考技术A 从神之刃开始,对这个游戏的引擎就充满了好奇,要什么样的手法把一个游戏包减少到40M。虽然有些童鞋总喜欢说无非就是压缩资源减少图片大小毫无技术含量这等话,但我们公司是做不到的。十万个为什么手游版的出现,让我想尽自己能力去分析看看。
从网上下载十万个为什么的 APK 安装包后,直接改成ZIP进行解压。因为网上文章说神之刃 是 妙趣横生 的自研引擎,所以直接来看Libs文件夹吧。

Libs文件夹里面有4个不同CPU类型的子文件夹,只有 armeabi-v7a 中存在引擎相关的SO动态链接库文件。

无聊之作 对 手游十万个为什么(神之刃) 的解包分析笔记 (游戏引

看到这五个SO文件,给我这个半吊子游戏开发者造成的迷惑来说不亚于太阳从西边出来。

为什么这么说?

libcheck.so libentryex.so 这两个应该是腾讯的三方SDK所有。

libgnustl_shared.so 这个文件应该是使用了C++所以会有。

那么游戏所有的就只有 libmqcj.so libcompress.so 这两个动态链接库了。

直觉告诉我,,这两个动态链接库不可能是游戏主要的动态链接库文件。

至于SO文件的大小,Unity的 libunity.so + libmono.so 是14M,就连NDK的Sample都有47KB。难道十万个为什么整个游戏框架只有58+6KB?这明显不可能的。

文章出自
进一步,反编译APK,查看Manifest文件和Java源代码。

上面是十万个为什么的Manifest文件,从中可以看出:

com.mqgame.lib.SLaunchActivity 这个是游戏的启动Activity 。

com.mqgame.lib.SNativeActivity 这个是NativiActivity ,并且指定动态链接库 mqcj ,就是上面6KB的那个文件。

来分析反编译出来的Java源代码。

首先来看 com.mqgame.lib.SLaunchActivity ,这个Activity 在游戏中就是 资源准备的界面。女王大人。

无聊之作 对 手游十万个为什么(神之刃) 的解包分析笔记 (游戏引

if (localIterator.hasNext()) localRunningTaskInfo = (ActivityManager.RunningTaskInfo)localIterator.next(); if ((localRunningTaskInfo.topActivity.getPackageName().equals(getPackageName())) || (localRunningTaskInfo.baseActivity.getPackageName().equals(getPackageName()))) if ((localRunningTaskInfo.topActivity.getClassName().equals("com.mqgame.lib.SNativeActivity")) || (localRunningTaskInfo.baseActivity.getClassName().equals("com.mqgame.lib.SNativeActivity"))) if (localRunningTaskInfo.numRunning >= 1) Log.d("sog_debug", "SOGActivity:Relaunch native"); localIntent2 = getIntent(); if (localIntent2 != null) localIntent2.setClass(this, SNativeActivity.class); label194: localIntent2.setFlags(131072); startActivity(localIntent2); finish();
然后在加载任务执行完毕后,跳转到 SNativeActivity 。
在SNativeActivity中看到有一个 preRun函数

文章出自
public boolean preRun() int i = 1; label323: int j; do try LinkedList localLinkedList = new LinkedList(); localLinkedList.add(new String("gnustl_shared")); localLinkedList.add(new String("openal")); localLinkedList.add(new String("compress")); localLinkedList.add(new String("script")); localLinkedList.add(new String("iconv")); localLinkedList.add(new String("ogg")); localLinkedList.add(new String("vorbis")); localLinkedList.add(new String("vorbisfile")); localLinkedList.add(new String("curl")); localLinkedList.add(new String("autoupdater")); localLinkedList.add(new String("speex")); localLinkedList.add(new String("mqcj")); Iterator localIterator = localLinkedList.iterator(); while (true) if (!localIterator.hasNext()) break label323; String str1 = (String)localIterator.next(); str2 = new String(SUtility.getLibPath() + File.separator + "lib" + str1 + ".so"); if (new File(str2).exists()) break; System.loadLibrary(str1); catch (Exception localException) while (true) String str2; localException.printStackTrace(); SUtility.appendLog(localException.toString()); i = 0; return i; System.load(str2); catch (Error localError) localError.printStackTrace(); SUtility.appendLog(localError.toString()); return i; VoiceManager.init(this); SUtility.bNativeEntered = true; j = Settings.System.getInt(getContentResolver(), "accelerometer_rotation", 0); while ((Build.VERSION.SDK_INT < 9) || (j != i)); setRequestedOrientation(6); return i;
从代码上来理解,应该存在两个目录用于存放SO文件。

首先从默认的Libs目录查找,然后从第二个Libs文件夹中寻找是不是有这个SO文件,如果有就使用第二个的SO。于是开始在SDK卡中寻找。却没有搜索到,看样子并没有解压到SDK卡中。那就应该是解压到了APP的默认应用文件夹了。于是去找了一个Root的手机来安装游戏。
。。。。。。。文章出自

在玩游戏的时候正好电脑上开着Eclipse,看到了以下Log:

03-29 16:14:07.582: D/SOG(8950): Ready to show Game 03-29 16:14:07.587: D/dalvikvm(8950): Trying to load lib /data/app-lib/com.linekong.cjad.lk-1/libgnustl_shared.so 0x421565f0 03-29 16:14:07.597: D/dalvikvm(8950): Added shared lib /data/app-lib/com.linekong.cjad.lk-1/libgnustl_shared.so 0x421565f0 03-29 16:14:07.597: D/dalvikvm(8950): No JNI_OnLoad found in /data/app-lib/com.linekong.cjad.lk-1/libgnustl_shared.so 0x421565f0, skipping init 03-29 16:14:07.597: D/SOG_DEBUG(8950): Loading liberary from inner gnustl_shared 03-29 16:14:07.597: D/dalvikvm(8950): Trying to load lib /data/app-lib/com.linekong.cjad.lk-1/libcompress.so 0x421565f0 03-29 16:14:07.602: D/dalvikvm(2087): GC_CONCURRENT freed 24K, 28% free 17104K/23584K, paused 2ms+2ms, total 22ms 03-29 16:14:07.602: D/dalvikvm(2087): WAIT_FOR_CONCURRENT_GC blocked 19ms 03-29 16:14:07.607: D/dalvikvm(8950): Added shared lib /data/app-lib/com.linekong.cjad.lk-1/libcompress.so 0x421565f0 03-29 16:14:07.607: D/dalvikvm(8950): No JNI_OnLoad found in /data/app-lib/com.linekong.cjad.lk-1/libcompress.so 0x421565f0, skipping init 03-29 16:14:07.607: D/SOG_DEBUG(8950): Loading liberary from inner compress 03-29 16:14:07.607: D/dalvikvm(8950): Trying to load lib /data/data/com.linekong.cjad.lk/files/libs/libcurl.so 0x421565f0 03-29 16:14:07.607: D/dalvikvm(8950): GC_CONCURRENT freed 253K, 6% free 5156K/5480K, paused 6ms+2ms, total 17ms 03-29 16:14:07.612: D/dalvikvm(8950): Added shared lib /data/data/com.linekong.cjad.lk/files/libs/libcurl.so 0x421565f0 03-29 16:14:07.612: D/dalvikvm(8950): No JNI_OnLoad found in /data/data/com.linekong.cjad.lk/files/libs/libcurl.so 0x421565f0, skipping init 03-29 16:14:07.612: D/SOG_DEBUG(8950): Loading liberary from path:/data/data/com.linekong.cjad.lk/files/libs/libcurl.so 03-29 16:14:07.612: D/dalvikvm(8950): Trying to load lib /data/data/com.linekong.cjad.lk/files/libs/libautoupdater.so 0x421565f0 03-29 16:14:07.642: D/dalvikvm(8950): Added shared lib /data/data/com.linekong.cjad.lk/files/libs/libautoupdater.so 0x421565f0 03-29 16:14:07.642: D/dalvikvm(8950): No JNI_OnLoad found in /data/data/com.linekong.cjad.lk/files/libs/libautoupdater.so 0x421565f0, skipping init 03-29 16:14:07.642: D/SOG_DEBUG(8950): Loading liberary from path:/data/data/com.linekong.cjad.lk/files/libs/libautoupdater.so 03-29 16:14:07.677: D/libEGL(8950): loaded /system/lib/egl/libEGL_mali.so 03-29 16:14:07.677: D/libEGL(8950): loaded /system/lib/egl/libGLESv1_CM_mali.so 03-29 16:14:07.682: D/libEGL(8950): loaded /system/lib/egl/libGLESv2_mali.so 03-29 16:14:07.687: E/(8950): Device driver API match 03-29 16:14:07.687: E/(8950): Device driver API version: 401 03-29 16:14:07.687: E/(8950): User space API version: 401 03-29 16:14:07.687: E/(8950): mali: REVISION=Linux-r4p0-00rel0 BUILD_DATE=Tue Jul 8 00:03:51 CST 2014 03-29 16:14:07.687: W/linker(8950): libion.so has text relocations. This is wasting memory and is a security risk. Please fix. 03-29 16:14:07.687: V/WindowAnimator(1979): No window is displayed, unset the SET_ORIENTATION_CHANGE_COMPLETE flag 03-29 16:14:07.742: D/OpenGLRenderer(8950): Enabling debug mode 0 03-29 16:14:07.757: D/SOG(8950): Total:1090 Sub:1080 SceenX:1280 SceenY:800 dX:76 dy:43 nProcess X:160 nProcess Width:770 LocaltionShow:0 03-29 16:14:07.782: D/dalvikvm(8950): GC_FOR_ALLOC freed 64K, 7% free 5140K/5480K, paused 9ms, total 9ms 03-29 16:14:07.787: I/dalvikvm-heap(8950): Grow heap (frag case) to 6.647MB for 1638544-byte allocation 03-29 16:14:07.797: D/dalvikvm(8950): GC_FOR_ALLOC freed <1K, 5% free 6740K/7084K, paused 13ms, total 13ms 03-29 16:14:07.812: D/dalvikvm(8950): GC_CONCURRENT freed 2K, 5% free 6771K/7084K, paused 1ms+2ms, total 16ms 03-29 16:14:07.817: D/sog_debug(8950): launch service 03-29 16:14:07.817: D/SOG(8661): sog service shutdown 03-29 16:14:07.817: D/SOG(8661): sog service startuping 03-29 16:14:07.817: D/Service Loading(8661): /data/data/com.linekong.cjad.lk/files/libs/libgnustl_shared.so 03-29 16:14:07.817: D/dalvikvm(8661): Trying to load lib /data/app-lib/com.linekong.cjad.lk-1/libgnustl_shared.so 0x421512b0 03-29 16:14:07.817: D/dalvikvm(8661): Shared lib '/data/app-lib/com.linekong.cjad.lk-1/libgnustl_shared.so' already loaded in same CL 0x421512b0 03-29 16:14:07.817: D/Service Loading(8661): /data/data/com.linekong.cjad.lk/files/libs/libcompress.so 03-29 16:14:07.817: D/dalvikvm(8661): Trying to load lib /data/app-lib/com.linekong.cjad.lk-1/libcompress.so 0x421512b0 03-29 16:14:07.817: D/dalvikvm(8661): Shared lib '/data/app-lib/com.linekong.cjad.lk-1/libcompress.so' already loaded in same CL 0x421512b0 03-29 16:14:07.817: D/Service Loading(8661): /data/data/com.linekong.cjad.lk/files/libs/libscript.so 03-29 16:14:07.822: D/dalvikvm(8661): Trying to load lib /data/data/com.linekong.cjad.lk/files/libs/libscript.so 0x421512b0 03-29 16:14:07.822: D/sog_debug(8950): launch game 03-29 16:14:07.822: D/dalvikvm(8661): Shared lib '/data/data/com.linekong.cjad.lk/files/libs/libscript.so' already loaded in same CL 0x421512b0 03-29 16:14:07.822: D/Service Loading(8661): /data/data/com.linekong.cjad.lk/files/libs/libiconv.so 03-29 16:14:07.822: D/dalvikvm(8661): Trying to load lib /data/data/com.linekong.cjad.lk/files/libs/libiconv.so 0x421512b0 03-29 16:14:07.822: D/dalvikvm(8661): Shared lib '/data/data/com.linekong.cjad.lk/files/libs/libiconv.so' already loaded in same CL 0x421512b0 03-29 16:14:07.822: D/Service Loading(8661): /data/data/com.linekong.cjad.lk/files/libs/libcurl.so 03-29 16:14:07.822: D/dalvikvm(8661): Trying to load lib /data/data/com.linekong.cjad.lk/files/libs/libcurl.so 0x421512b0 03-29 16:14:07.822: D/dalvikvm(8661): Shared lib '/data/data/com.linekong.cjad.lk/files/libs/libcurl.so' already loaded in same CL 0x421512b0 03-29 16:14:07.822: D/Service Loading(8661): /data/data/com.linekong.cjad.lk/files/libs/libpush.so 03-29 16:14:07.822: D/dalvikvm(8661): Trying to load lib /data/data/com.linekong.cjad.lk/files/libs/libpush.so 0x421512b0 03-29 16:14:07.822: D/dalvikvm(8661): Shared lib '/data/data/com.linekong.cjad.lk/files/libs/libpush.so' already loaded in same CL 0x421512b0 03-29 16:14:08.417: D/dalvikvm(8950): Trying to load lib /data/app-lib/com.linekong.cjad.lk-1/libgnustl_shared.so 0x421565f0 03-29 16:14:08.417: D/dalvikvm(8950): Shared lib '/data/app-lib/com.linekong.cjad.lk-1/libgnustl_shared.so' already loaded in same CL 0x421565f0 03-29 16:14:08.417: D/dalvikvm(8950): Trying to load lib /data/data/com.linekong.cjad.lk/files/libs/libopenal.so 0x421565f0 03-29 16:14:08.422: D/dalvikvm(8950): Added shared lib /data/data/com.linekong.cjad.lk/files/libs/libopenal.so 0x421565f0 03-29 16:14:08.422: D/dalvikvm(8950): Trying to load lib /data/app-lib/com.linekong.cjad.lk-1/libcompress.so 0x421565f0 03-29 16:14:08.422: D/dalvikvm(8950): Shared lib '/data/app-lib/com.linekong.cjad.lk-1/libcompress.so' already loaded in same CL 0x421565f0 03-29 16:14:08.422: D/dalvikvm(8950): Trying to load lib /data/data/com.linekong.cjad.lk/files/libs/libscript.so 0x421565f0 03-29 16:14:08.422: D/dalvikvm(8950): Added shared lib /data/data/com.linekong.cjad.lk/files/libs/libscript.so 0x421565f0 03-29 16:14:08.422: D/dalvikvm(8950): No JNI_OnLoad found in /data/data/com.linekong.cjad.lk/files/libs/libscript.so 0x421565f0, skipping init 03-29 16:14:08.422: D/dalvikvm(8950): Trying to load lib /data/data/com.linekong.cjad.lk/files/libs/libiconv.so 0x421565f0 03-29 16:14:08.422: D/dalvikvm(8950): Added shared lib /data/data/com.linekong.cjad.lk/files/libs/libiconv.so 0x421565f0 03-29 16:14:08.422: D/dalvikvm(8950): No JNI_OnLoad found in /data/data/com.linekong.cjad.lk/files/libs/libiconv.so 0x421565f0, skipping init 03-29 16:14:08.422: D/dalvikvm(8950): Trying to load lib /data/data/com.linekong.cjad.lk/files/libs/libogg.so 0x421565f0 03-29 16:14:08.427: D/dalvikvm(8950): Added shared lib /data/data/com.linekong.cjad.lk/files/libs/libogg.so 0x421565f0 03-29 16:14:08.427: D/dalvikvm(8950): No JNI_OnLoad found in /data/data/com.linekong.cjad.lk/files/libs/libogg.so 0x421565f0, skipping init 03-29 16:14:08.427: D/dalvikvm(8950): Trying to load lib /data/data/com.linekong.cjad.lk/files/libs/libvorbis.so 0x421565f0 03-29 16:14:08.427: D/dalvikvm(8950): Added shared lib /data/data/com.linekong.cjad.lk/files/libs/libvorbis.so 0x421565f0 03-29 16:14:08.427: D/dalvikvm(8950): No JNI_OnLoad found in /data/data/com.linekong.cjad.lk/files/libs/libvorbis.so 0x421565f0, skipping init 03-29 16:14:08.427: D/dalvikvm(8950): Trying to load lib /data/data/com.linekong.cjad.lk/files/libs/libvorbisfile.so 0x421565f0 03-29 16:14:08.427: D/dalvikvm(8950): Added shared lib /data/data/com.linekong.cjad.lk/files/libs/libvorbisfile.so 0x421565f0 03-29 16:14:08.427: D/dalvikvm(8950): No JNI_OnLoad found in /data/data/com.linekong.cjad.lk/files/libs/libvorbisfile.so 0x421565f0, skipping init 03-29 16:14:08.427: D/dalvikvm(8950): Trying to load lib /data/data/com.linekong.cjad.lk/files/libs/libcurl.so 0x421565f0 03-29 16:14:08.427: D/dalvikvm(8950): Shared lib '/data/data/com.linekong.cjad.lk/files/libs/libcurl.so' already loaded in same CL 0x421565f0 03-29 16:14:08.427: D/dalvikvm(8950): Trying to load lib /data/data/com.linekong.cjad.lk/files/libs/libautoupdater.so 0x421565f0 03-29 16:14:08.427: D/dalvikvm(8950): Shared lib '/data/data/com.linekong.cjad.lk/files/libs/libautoupdater.so' already loaded in same CL 0x421565f0 03-29 16:14:08.427: D/dalvikvm(8950): Trying to load lib /data/data/com.linekong.cjad.lk/files/libs/libspeex.so 0x421565f0 03-29 16:14:08.432: D/dalvikvm(8950): Added shared lib /data/data/com.linekong.cjad.lk/files/libs/libspeex.so 0x421565f0 03-29 16:14:08.432: D/dalvikvm(8950): No JNI_OnLoad found in /data/data/com.linekong.cjad.lk/files/libs/libspeex.so 0x421565f0, skipping init 03-29 16:14:08.432: D/dalvikvm(8950): Trying to load lib /data/data/com.linekong.cjad.lk/files/libs/libmqcj.so 0x421565f0 03-29 16:14:08.502: D/dalvikvm(8950): Added shared lib /data/data/com.linekong.cjad.lk/files/libs/libmqcj.so 0x421565f0 03-29 16:14:08.502: W/Looper(8950): Looper already prepared for this thread with a different value for the ALOOPER_PREPARE_ALLOW_NON_CALLBACKS option. 03-29 16:14:08.507: V/VoiceManager(8950): VoiceManager Init Finished! 03-29 16:14:08.712: I/MemTotal: 1723840 kB MemFree: 357384 kB(8950) 03-29 16:14:08.712: I/MemTotal: 1723840 kB MemFree: 357384 kB(8950): MemTotal: 03-29 16:14:08.712: I/MemTotal: 1723840 kB MemFree: 357384 kB(8950): 1723840 03-29 16:14:08.712: I/MemTotal: 1723840 kB MemFree: 357384 kB(8950): kB 03-29 16:14:08.712: I/MemTotal: 1723840 kB MemFree: 357384 kB(8950): MemFree: 03-29 16:14:08.712: I/MemTotal: 1723840 kB MemFree: 357384 kB(8950): 357384 03-29 16:14:08.712: I/MemTotal: 1723840 kB MemFree: 357384 kB(8950): kB 文章出自
顿时一切都明了了。
游戏分别从以下两个目录加载了SO文件

1、工程中的Libs文件夹,就是 /data/app-lib/,使用system.loadLibrary()加载

2、默认应用文件夹 /data/data/com.linekong.cjad.lk/files 中的 libs/* ,使用system.load() 加载

游戏设备技术提升分析小7手游稳定性是否靠谱

经过了这么多年的发展,游戏行业依旧是很大的热门。因为游戏设备技术的不断提升,让人们对游戏有了更多需求。比如现在用户追求的游戏画面和操作方式,确实让很多游戏公司明确新的方向。而整个产业也是如此,会朝着这个大致的方向发力,让用户得到满足。
所以在做游戏行业分析的时候,依旧觉得游戏行业还有很大的空缺。因为技术是推进游戏行业发展的关键因素,并且不会达到一个饱和的状态。虽然可能会出现技术维持的阶段,但是最终还是提升的一个过程。只有技术水平得到了提升,游戏行业就得继续努力。
这就是市场附庸的一种关系,只要用户提出了要求,如果游戏公司能够满足这方面的要求,那就会一直有需求满足的过程。现在的游戏行业不仅火爆,而且开始连接到生活的各个方面,大大改变了人们对游戏的印象,也改变了我们的选择。

技术图片

游戏中喊话的平台很多都是为了以首充骗进来,然后收割续冲,所以还是不要相信那些喊话的,选正规的自主平台为好,比如:

获得最佳覆盖奖的小7手游平台:

技术图片

》》》小7手游平台下载地址《《《(点击下载2019最新安装包) 。特点是,紧紧抓住了玩家的刚需和渴求。并一推出就实现了全平台覆盖,包括安卓和iOS。最新版本中,还加入了H5游戏产品,可能很多玩家对H5游戏不太熟悉,小编给大家科普一下,H5游戏是网页游戏的手机化版本,记得当时页游刚推出的时候,行业内很多人都不看好,认为页游的品质、画质、操作都跟不上端游,这一看法导致很多做端游的大公司判断失误,直到百万流水的页游出现,已经为时已晚。H5游戏也是一样,无论你是安卓还是iOS,只要点链接就可以玩,而且WEB的3D引擎已经发展的很成熟。无论从体验、操作、画质上,都不逊色于其他手机游戏。

接下来,看看这个游戏/平台在折扣平台有哪些特点:

九游游戏中心是国内领先的手游分享平台,现有安卓和ios两个版本,适应不同系统手机的要求,更加方便快捷地为更多的玩家提供多种类型的游戏。在最新版的九游游戏中心增添了许多创新功能,在传统游戏推荐和下载的功能下还提供游戏攻略、开测信息等功能为玩家获得最新游戏信息提供途径,并且在游戏途中玩家还有机会获得出乎意料的福利礼包,从而获得双倍快乐。更重要的是九游游戏中心还和其他公司合作,引进大批游戏大神和专业游戏测评团队一起构建专业游戏分享社区,在这里玩家不仅能够得到专业的指导还可以收获许多同自己志同道合的朋友。同时九游也开始采用通过视频录制、分享游戏单等的方式来分享自己的游戏体验。近年来九游游戏中心不断创新,使自己升级为游戏推荐和游戏交流中心,在满足玩家越来越高的需求同时也收获了更多的粉丝,而它也在不断努力以新的形式和粉丝见面!

接下来,看看这个游戏/平台在折扣平台有哪些特点:

TapTap游戏平台,它的特点是让用心做游戏的人得到好处。众所周知,现在的良心好游戏已经非常少了,就算存在,也都是一些付费游戏,或者是变着方法氪金的游戏。但是在TapTap里,你总能随处可见那些不仅免费,而且还质量优异的游戏存在。处于这样一个美好和谐的环境,这对那些埋头做游戏的开发者们来说,无疑是一件大好事。那些游戏开发者们用心做的好游戏会被发现,才有更多的人来玩,才会有更多游戏公司更加关注游戏的质量,而不是所谓的营销赚钱。在这一点上,TapTap开了一个好头,它营造了这种良好的氛围。
正因为有了更多的优质游戏,平台才会吸引无数的玩家,这对游戏开发商和广大手游玩家来说,无疑都是件大好事。双方都得到了他们想要的东西,自然而然都会开心了。

 

接下来巨人安全中心,看看这个游戏/平台在折扣平台有哪些特点:

技术图片

巨人安全中心是一款实用的手游安全防盗软件,现在不只是玩网游需要安全防盗的软件,手游同样的需要。现在玩手游的人越来越多,不管是投入钱还是投入心血,要是被盗了一定很心疼,想要保护账号安全就下载巨人安全中心吧,不仅保护账号安全,还支持游戏充值,使用更方便。基本简介 《巨人安全中心》是由巨人手机助手全面升级的一款手机应用软件,专注巨人游戏玩家账号安全服务,是您的专属防盗号专家,全程游戏助手。主要提供动态密保登录、二维码登录、账号管理、巨人点充值、活动通知等服务。更新日志 1.适配7.0系统。 2.优化二维码 3.解决已知bug

以上是关于无聊之作 对 手游十万个为啥 的解包分析笔记 游戏引的主要内容,如果未能解决你的问题,请参考以下文章

几年前无聊小游戏之作_WEB版本打泡泡

2019地瓜手游折扣平台安全性测试报告

游戏apk怎么修改,联网和不联网的。要怎么修改,修改那些文件?

4星|大象公会《一个观点,不一定对》:新十万个为什么

游戏设备技术提升分析小7手游稳定性是否靠谱

如何在 Redis 中批量删除数十万个带有特殊字符的键