梅开二度:去掉雷⚡模拟器启动时的广告
本帖最后由 侃遍天下无二人 于 2021-10-10 11:17 编辑# 前言
上次去掉了雷电模拟器的桌面广告后,有大佬问我怎么去掉启动页广告,我表示不知道,大佬表示尽兴而来,失望而归。
emmm,能让大佬失望说明我的技术水平已经有了明显进步,既然水平有了明显进步,那去广告的方案我应该是能拿出来的,不妨试试看。
--------------------------------
这里先给大家看看去广告前后的启动页面
去广告前:
![在这里插入图片描述](https://img-blog.csdnimg.cn/75232a19d9974259bf8c0db8207b578b.png)
去广告后:
![在这里插入图片描述](https://img-blog.csdnimg.cn/96afa7836e4b45d482575df4c20cfd56.png)
去广告的操作很简单,重点应当是分析思路。
# 分析
## 目录结构
首先我们看看雷电模拟器的目录结构,程序所在目录下有个`system0.vmdk`特别大,另外`vms\leidian0`中也有几个非常大的镜像文件。
为了防止模拟器自动修复,我们先把它的修复程序`dnrepairer.exe`改名或删除
现在大家做个小实验,仅将`system0.vmdk`改名,启动模拟器,会发现可以正常进入,且现有数据不丢失;仅将`vms\leidian0`改名,发现可以正常进入,但模拟器里的数据都清空了,且有新的`vms\leidian0`生成;将二者同时改名发现无法进入模拟器,但广告照打,这样既不影响我们分析,又可以免去启动模拟器读取大量数据的过程,减少不必要的资源浪费。
**同时,这个实验还说明了广告行为与虚拟机文件无关,去广告的关键一定在主程序(或其dll)上。**
![在这里插入图片描述](https://img-blog.csdnimg.cn/26b6d532ae6c4dac8d33423ee2c22d80.png)
## 网络请求
打开Fiddler,准备抓包,记得先配置好https解密,抓包截图如下,从中我找到了一个可疑请求
![在这里插入图片描述](https://img-blog.csdnimg.cn/a92ba08470b7463690cb4f7472664927.png)
https://img.ldmnq.com/gw_new/upload/Cz3tQi-1633674098441.jpg
https://img.ldmnq.com/gw_new/upload/RB6a3Z-1633674123798.png
大家看看,这个请求中既有广告的图片,又有按钮的样式,说是巧合我都不信,所以我们只要打开hosts,将 res.ldmnq.com 屏蔽掉,广告就去掉了,教程结束
...个屁
**注:这种做法是很不负责的,除非软件确实没法修改,否则不应该这样**
我们当然不能这样搞,大家看看另一个请求,里面是不是还给出了大量游戏无法正常运行的解决方案,虽说对我没什么用吧,但对一般小白而言这个还是留着好
![在这里插入图片描述](https://img-blog.csdnimg.cn/6f9d4f9b32524f99806b93145522585b.png)
## 调试
现在我们把模拟器拖入OD分析。
什么?我的模拟器是64位的不能用OD?
错了,打开任务管理器看看,32位的字样跃然纸上,既如此我们继续用OD吧。
搜索字符串"ldmnq",发现如下结果:
![在这里插入图片描述](https://img-blog.csdnimg.cn/b8c515a909ac4ecb93aa7668a4a2d37a.png)
接下来只要把这个字符串改了,然后保存,就能干掉广告了。。。吧?
又错了,改完之后尝试复制到可执行文件,发现根本没有“所有选择”这个选项,随便改掉一行代码再撤销,选项倒是出来了,但点击的时候还提示无修改,为啥OD不能保存对字符串的修改呢?这个问题我想请教一下大佬们。
既然OD改不了,我们干脆直接用十六进制编辑器打开文件修改好了,论坛里的winhex就很合适:
![在这里插入图片描述](https://img-blog.csdnimg.cn/7fd833d5f3c141a09541cef18f8b4f01.png)
我们一搜索,找不到链接,咋回事?
**因为这个链接是unicode编码的,每个字符占2字节,高位为0x00。**这又是个坑,只不过OD的智能搜索把它填平了大家感觉不到,这样设就能搜到了:
![在这里插入图片描述](https://img-blog.csdnimg.cn/7bffd19f1ea04b97899bb6e4bd087d72.png)
![在这里插入图片描述](https://img-blog.csdnimg.cn/1403f385ca53462aa3738789fcd7282e.png)
好的,我们把res改成ret,象征着让它立即返回,别加载广告,然后保存。
## 验证
重启模拟器,发现广告消失了,再抓个包看看,发现请求的地址确实变成了ret.ldmnq.com
![在这里插入图片描述](https://img-blog.csdnimg.cn/1512f18ed4a54ef3934c486dc9fdc58d.png)
# 后话
至此,我们把模拟器的启动广告和桌面广告去掉了,现在还差一个热点新闻的广告,去掉它非常简单,只要把 `ldnews.exe` 删掉就行了。
大家注意到主程序目录下的 `system0.vmdk`,如果想让我们去掉桌面广告的效果长存,只要将`vms\leidian0`中的同名文件取出来覆盖它就行了,前提是你之前已经用root权限把桌面放进了系统目录,而不是仅仅简单安装
(用DiskGenius直接修改会提示无效的磁盘文件,无法启动)
此外,我们改好的主程序可以用来启动所有4.x版本的模拟器,因此后期我们可以随意升级,不必担心更新问题。 jafck 发表于 2021-10-10 12:48
感谢分享,疑惑这段话的表述:"现在大家做个小实验,仅将system0.vmdk改名,……将二者同时改名发现无法进 ...
会创建文件夹,但是不会再复制或读取系统镜像了,系统镜像的读写才是大头,系统镜像比模拟器其他部分加起来都大的多 感谢分享,疑惑这段话的表述:"现在大家做个小实验,仅将system0.vmdk改名,……将二者同时改名发现无法进入模拟器,但广告照打,
这样既不影响我们分析,又可以免去启动模拟器读取大量数据的过程,减少不必要的资源浪费"。
我理解的,程序挂载 system0.vmdk ,得到 vms\leidian0 目录,同时生成了文件夹状态编码,用以检查一致性。从你上面的表述,我的疑惑是,
如果system0.vmdk & vms\leidian0都改了名,就不重新生成 vms\leidian0 目录及文件了吗?如果还是生成,那 “免去启动模拟器读取大量数据的过程”
这句话如何理解呢?谢谢
@冥界3大法王 LOL。。。。 电脑玩手游,还不如电脑直接玩PC的 2858282027 发表于 2021-10-10 10:00
电脑玩手游,还不如电脑直接玩PC的
没说一定玩手游,也可以拿来做安卓开发,雷电的性能比谷歌自己的模拟器高多了 我都是在用mumu 正好玩玩LOL手游 6C0064006D006E0071002E0063006F006D00竟然是160次
还是统统替换了彻底 来来来,我来试用一下,谢谢楼主。