欢迎光临散文网 会员登陆 & 注册

(在那老虎山上)提供:exagear与overlay合并教程

2022-03-16 11:36 作者:霸者一方  | 我要投稿

需要准备的工具有

apktool_m用于反编回编签名apk。手机不能使用apktool_m的,自个想其它办法,如上电脑用电脑上工具,能正常反编回编的即可。

mt管理器用于修改反编出来后的smali等文件,易操作。

termux用于修改recipe.zip。

需要准备的素材有:

virgl overlay 0.0.7版本的apk一个。

exagear模拟器的apk一个。教程用到的apk是virGLOverlay_suhang2040.apk。其它安兔兔和原版模拟器的apk,依样画胡。

下面是教程。

首先,将virgl overlay 和exagear分别反编。需反编译全部,即将反编译资源和classes.dex两个选项都点

上。点上反编译classes.dex,反编译后才会生成smali目录。点上反编译资源,反编译后才会有values目录。在这个教程中动不到资源,可以不反编资源,仅仅是个人习惯。在本教程中classes.dex是一定要反编出来的。

将exagear的apk反编译后生成的smali目录重命名为smali_classes2

将virgloverlay的apk反编译后生成的smali目录整个移进exagear的apk反编后生成的目录下,即与smali_classes2目录处于同一个目录下。即/storage/emulated/0/BaiduNetdisk/我的资源/virGLOverlay_suhang2040_src目录下。名字保持smali不变。

然后将virgl-overlay-rebuild-v.0.0.7-gen_signed_src/lib/armeabi-v7a/目录下的libepoxy-lib.so和libvirgl-lib.so两个virgl overlay 0.0.7的so移到virGLOverlay_suhang2040_src/lib/

armeabi-v7a/目录下。

移好smali目录和那两个so后,virgl overlay 与exagear合体需要改动的文件有:

一,清单文件AndroidManifest.xml。

二,virGLOverlay_suhang2040_src/smali_classes2/com/eltechs/axs/configuration/目录下的UBTLaunchConfiguration.smali。

三,virGLOverlay_suhang2040_src/smali_classes2/com/ludashi/benchmark/activities/目录下的EDMainActivity.smali。

四,virGLOverlay_suhang2040_src/smali/com/mittorn/virgloverlay/common/目录下的overlay.smali。

五,virGLOverlay_suhang2040_src/assets/目录下的recipe.zip。

关于清单文件AndroidManifest.xml的修改:

修改前:

<action

android:name="android.intent.action.MAIN" />

</intent-filter>

</activity>

<service

android:name="com.eltechs.axs.environmentService.AXSEnvironmentService">

修改后:

<action

android:name="android.intent.action.MAIN" />

</intent-filter>

</activity>

<service

android:name="com.mittorn.virgloverlay.process.p1"

android:exported="true"

android:process=":p1" />

<service

android:name="com.mittorn.virgloverlay.process.p2"

android:exported="true"

android:process=":p2" />

<service

android:name="com.eltechs.axs.environmentService.AXSEnvironmentService">

即在这里插入了virgloverlay那几行,这几行来自virgl overlay的清单文件。搜索com.eltechs.axs.

environmentService.AXSEnvironmentService能快速定位到此行。

关于UBTLaunchConfiguration.smali的修改:

修改前:

invoke-interface {v3, v0}, Ljava/util/List;->add(Ljava/lang/Object;)Z

.line 138

修改后:

invoke-interface {v3, v0}, Ljava/util/List;->add(Ljava/lang/Object;)Z

iget-object v3, p0, Lcom/eltechs/axs/configuration/UBTLaunchConfiguration;->guestEnvironmentVariables:Ljava/util/List;

const-string v4, "VTEST_SOCK="

invoke-interface {v3, v4}, Ljava/util/List;->add(Ljava/lang/Object;)Z

.line 138

即在line 138前面增加了三行,三行如上所示。修改UBTLaunchConfiguration.smali的目的在于免除要先发送图标到桌面,然后加VTEST_SOCK=来使用virgl overlay的步骤。

搜line 138能快速定位到此行。

关于EDMainActivity.smali的修改:

修改前:

.line 76

invoke-super {p0, p1}, Lcom/eltechs/axs/activities/FrameworkActivity;->onCreate(Landroid/os/Bundle;)V

const v0, 0x7f0b0035

.line 78

修改后:

.line 76

invoke-super {p0, p1}, Lcom/eltechs/axs/activities/FrameworkActivity;->onCreate(Landroid/os/Bundle;)V

new-instance v0, Landroid/content/Intent;

invoke-direct {v0}, Landroid/content/Intent;-><init>()V

const-string v1, "com.mittorn.virgloverlay.process.p1"

invoke-virtual {v0, p0, v1}, Landroid/content/Intent;->setClassName(Landroid/content/Context;Ljava/lang/String;)Landroid/content/Intent;

move-result-object v0

invoke-virtual {p0, v0}, Lcom/mittorn/virgloverlay/MainActivity;->startService(Landroid/content/Intent;)Landroid/content/ComponentName;

const v0, 0x7f0b0035

.line 78

即增加了virgl overlay 的p1进程。搜line 76能快速定位到此行。

关于overlay.smali的修改:

overlay.smali这个文件,需要修改三处。

用mt管理器搜索settings,能找到这三处的具体位置。

第一处

修改前:

move-result-object v0

const-string v1, "/layout_settings"

invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

修改后:

move-result-object v0

const-string v1, "/image/opt/recipe/layout_settings"

invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

第二处

修改前:

move-result-object p0

const-string v0, "/settings"

invoke-virtual {p0, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

修改后:

move-result-object p0

const-string v0, "/image/opt/recipe/settings"

invoke-virtual {p0, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

第三处

修改前:

move-result-object v0

const-string v1, "/hack_settings"

invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

修改后:

move-result-object v0

const-string v1, "/image/opt/recipe/hack_settings"

invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

即将搜索settings搜到的/layout_settings,/settings,/hack_settings,三处前面都加上/image/opt/recipe。

关于recipe.zip的修改:

打开termux。pkg update换源国内源之类的基本使用就不讲了。

pkg install zip unzip nano -y。需要用unzip和zip命令对recipe.zip进行解压和打包。需要用nano进行修改。

将recipe.zip放到手机存储根目录。

termux需要在手机设置里给存储权限。

在termux的~目录,随意新建个目录如ok。

cd ~

mkdir ok

cd ok

unzip /sdcard/recipe.zip

nano layout_settings

填入数字1,保存。

nano settings

填入数字20,保存。

nano hack_settings

填入数字1,保存。

chmod 777 -R *

给所有文件加上777的权限。

rm /sdcard/recipe.zip

删除放在手机存储根目录的recipe.zip。

zip --symlinks -r /sdcard/recipe.zip.

zip命令打包修改好的recipe.zip。注意上面的打包命令recipe.zip后面接一个空格然后是一个英文的符号点。生成的新recipe.zip即在手机存储根目录。

将改好的recipe.zip放入virGLOverlay_suhang2040_src/assets/目录下。

然后apktool_m回编,合体完成。

其它:将virgl overlay 0.0.7与exagear合体。

跟将virgl overlay 0.0.1与exagear合体的主要不同之处在于:

virgl overlay 0.0.1的so只有一个libnative-lib.so。0.0.7版本有两个。

0.0.7的overlay.smali有三处地方需要修改,多一个/hack_settings需要修改。

overlay.smali用aktool_m转成java模式,可以看出与0.0.1的差异。

0.0.7的overlay.smali不仅加载的so变了,还多了一个/hack_settings判断语句。recipe.zip处也要多加一个hack_settings的文件,并写入数字1。

以上差异就是是否能够成功将virgl overlay 0.0.7与exagear合体的主要要点。

用0.0.1合体的方法原封不变则会合体失败。需要稍微调整下。

virgl overlay 0.0.7与exagear合体的教程完。

virGLOverlay_suhang2040_007.apk为合体好后的apk。


(在那老虎山上)提供:exagear与overlay合并教程的评论 (共 条)

分享到微博请遵守国家法律