liuxiaoxin 发表于 2020-11-25 20:20

逆向教程之-反编译apk完全精简删除菜单功能(二)

本帖最后由 liuxiaoxin 于 2020-12-3 19:00 编辑

授人以鱼,不如授人以渔!

本教程图文并茂,步骤非常详细,偏小白向,大佬请自觉屏蔽。

使用工具:MT管理器免费版
被修改的软件:Apktool M_v2.4.1

如果想跟着教程一起实操,感受一下反编译带来的乐趣,修改成功之后油然而生的成就感,可以下载本软件练练手,链接我放在文末了。

温馨提示:初次看本人教程的小伙伴,建议配合上期教程一起操作效果更佳,本篇教程属于上期教程的拓展和进阶。
往期图文逆向教程:
①逆向教程之-反编译apk修改菜单默认设置(一)

言归正传,接下来教程正式开始{:1_927:}{:1_927:}

首先打开Apktool M→进入设置,会看到“程序更新”,现在我们不想要这个菜单功能了,
接下来就通过反编译进行修改,把它完全删除掉,让它永远在设置里面消失。请记住“程序更新”关键词。


1.使用MT管理器点击Apktool M_v2.4.1.apk文件→选择查看


2.选择resources.arsc文件→通过Arsc编辑器打开


3.点击搜索资源值→输入“程序更新”关键词→搜索类型选择字符串→点击确定进行搜索


4.会看到出现了1个搜索值→长按这个搜索值→会弹出菜单点击复制ID,这里复制的ID是“7F07011C”,然后按两次返回


5.点击右上角三个点→会弹出菜单功能→选择XML搜索→内容栏粘贴之前复制的ID“7F07011C”→搜索类型选择十六进制→点击确认进行搜索


6.会看到1个搜索结果→点击它会进入指定的路径找到该文件→点击文件(这个文件控制着整个设置的主菜单)


7.打开方式选择反编译→进入编辑界面→点击右上角三个点→会弹出菜单
   →选择搜索→查找内容输入ID“7F07011C”进行搜索→会看第26行后面的那一串ID黄色高亮显示,
   就是我们要找的结果,这就说明24~28行的内容,就是对“程序更新”这个菜单的定义


8.这时候我们把24~28行的内容,全部选中并删除,点击保存,然后返回,会出现提示,勾选自动签名,让它回编译即可


9.接着我们看到preference_updater.xml文件,这个文件是我们上一期教程,修改过的xml文件,
它其实是控制着整个“程序更新”的子菜单,现在我们把程序更新的菜单都删除了,这个子菜单的文件也可以删除了,然后一路返回。



10.选择classes.dex文件→通过Dex编辑器++打开


11.点击搜索→发起新搜索→查找内容输入ID“7F07011C”→路径默认→搜索类型选择“代码”→勾选搜索子目录→点击确定进行搜索


12.会看到出现了1个搜索值,这个搜索结果就是我们要找的ID→点击它进入文件进行修改,然后看到它是在第451行,这里定义的就是“程序更新”调用的代码。


13.这时候我们把451行的内容,全部选中并删除,点击保存,然后返回,会出现提示,选择保存并退出,让它回编译即可


反编译完成之后,重新安装修改过的包,然后再打开软件,这时候在设置里面,就找不到“程序更新”的菜单功能了。它已经被彻底删除掉了。



写到这里教程就结束了,其实这篇教程的目的,只是为了记录一下自己反编译的一个过程。分享给大家,提供的只是一个反编译的思路。

从我的角度来说,过程相对过于简单,但是我相信对于刚接触反编译的小白而言,能起到一个很好的启蒙作用。

声明一下:本篇教程只是以“程序更新”为例,实现菜单功能的精简,并不是说只能删除这个菜单功能,而是提供的一个思路。可以按照这个反编译的思路,去精简掉更多其它的菜单功能。

当然,反编译不仅仅于此,聪明的你可以根据本教程,举一反三,对apk进行更深层次的修改!

接下来上干货了,为了满足部分伙伴的需求,方便他们按照教程实操时,省得还要到处去找使用工具。
在这里为大家一并提供了教程中使用的同款,MT管理器和修改的软件素材,请外链自取。
MT管理器:https://www.lanzoui.com/i80NBitkr6f 密码:99gn
Apktool M_2.4.1:https://www.lanzoui.com/iuvxtir6wdg 密码:epdc

如果本教程能帮到您,记得三连哦!顺便免费评分走一波,感谢支持!{:1_927:} {:1_927:} 您的支持,将是对我最大的鼓励!{:1_887:} 后续会继续分享更多逆向反编译教程,咱们下期再见{:1_911:}

liuxiaoxin 发表于 2021-7-27 11:17

我爱林 发表于 2021-7-27 06:03
个人认为这算是吾爱最用心最详尽最好的mt教程贴了,热心肠的大神,无以为报,在这里说声谢谢啦!

感谢认可和支持,能帮助到大家就好!:lol:victory:

liuxiaoxin 发表于 2020-11-26 08:32

一日就是一天 发表于 2020-11-26 05:37
7.打开方式选择反编译→进入编辑界面,会看第26行后面的那一串ID,
   就是我们要找到的结果,这就说明24~ ...

抱歉,是我忽略了,没能完完全全照顾到新手。其实这里我省略了一个步骤,正常的步骤是,打开那个xml文件后,如果是初次接触的话,对里面的代码肯定不懂,而且之前搜索的那个ID,也不会直接定位到那一行代码,需要点击右上角,使用搜索功能,再次搜索那个ID,找到被搜索的那个ID,这时候它才会自动高亮显示定位到第26行代码。当时是考虑到这个xml文件比较小,行数比较少,打开就能直观的看完那30几行代码,所以才把这个步骤给省掉了。面对xml的大文件,这个步骤不能忽略,到时候我把它加上去吧。
再说一下,是怎么通过判断24~28行,就是对“程序更新”这个菜单的定义。前面提到,通过搜索资源值,搜索“程序更新”,得到的ID号是7F07011C,现在在xml文件看到的这个7F07011C,其实它指向的就是之前搜索的那个“程序更新”的字符串。xml文件使用ID号指向字符串,是为了方便适应多种语言显示。
    <header
      android:icon="@7F02007C"
      android:title="@7F07011C"
      android:summary="@7F07011D"
      android:fragment="ru.maximoff.apktool.fragment.UpdaterFragment" />

上面是24~28行之间的代码,来翻译解释一下

    <标题头
         安卓:图标= ID指向图标
         安卓:标题= ID指向标题,这里的标题就是“程序更新”,这个中文字符串,它可以是英语,或者其他语言
         安卓:摘要= ID指向摘要
         安卓:片段= 这里算是对“程序更新”菜单功能的一个片段化>

以 < 开始,以 > 结束,就是对一个功能的定义,这要涉及到安卓开发了,反正我不懂。
上面的解释如有错误,请懂的大佬,加以指正。在你们面前班门弄斧了,大佬请轻喷。

liuxiaoxin 发表于 2020-11-26 12:16

agi学习者 发表于 2020-11-26 12:04
学习了,很多知识都需要知其然而知其所以然,感谢楼主的耐心讲解,很通透。

是的,你说的很对:victory: 感谢支持{:1_927:}

ciker_li 发表于 2020-11-25 20:23

感谢分享,很详细

yudian 发表于 2020-11-25 20:26

感谢楼主发出这么好的帖子,一直想学点逆向的东西,希望大佬经常更新我每天来看

禽·兽 发表于 2020-11-25 20:56

谢谢分享 等下试试

dipper 发表于 2020-11-25 20:58

对新手很友好,谢谢楼主

wqy290546 发表于 2020-11-25 21:20

小白一个

Karry1121 发表于 2020-11-25 21:31

良心工具~感谢楼主

流泪的小白 发表于 2020-11-25 21:42

感谢大佬的教程

UPC 发表于 2020-11-25 21:49

正需要这个功能,3Q3Q3Q3Q3:lol

jun12828 发表于 2020-11-25 21:56

楼主你好,安装APP之后桌面不显示APP图标,这个能反编译嘛
页: [1] 2 3 4 5 6 7 8 9 10
查看完整版本: 逆向教程之-反编译apk完全精简删除菜单功能(二)