反编译文件管理器apk隐藏蓝牙模块

来源:互联网 发布:人民大学 数据库系统 编辑:程序博客网 时间:2024/04/29 03:19
工具准备:
    源apk :    第三方文件管理器.apk(此处不详细说哪家apk,怕引起不必要的麻烦,此文仅作技术上的交流,如有侵权,请联系我,我马上删除此文!)
    反编译/回编译工具:apktool-v2.0.0RC2.jar
    dex反编译工具:    dex2jar-0.0.9.15
    jar文件查看工具:    jd-gui.exe
    平台:eclipse

需要分析:因主板不支持蓝牙功能,但es里有蓝牙选项,点击后,es一直卡死在那,最简单做法:把蓝牙选项屏蔽,没有源码,只有apk,因此要用到反编译工具

首先,分析该apk界面,发现蓝牙选项有一个蓝牙图标和蓝牙文件,那么可以从这两方面入手:
1、搜索所有用到该图标的代码(包括xml文件),逐一去掉
2、搜索所有用到“蓝牙”文件的代码(包括xml文件),逐一去掉

经过后来搜索,发现这里用图标来定位比较好

一、接下来,先把apk经过apktool.jar反编译成字节码:
cmd:            java -jar apktool.jar d ESFileExplorer.apk

得到   ESdanganliulanqi   目录(最好移出去)

该目录保存着所有资源文件(res目录)和字节码文件(smali目录),还有一个AndroidManifest.xml文件,当然还有一些其他的,但我们只用到这些

二、重命名    ESFileExplorer.apk  ==>   ESFileExplorer.zip    (为了解压),把  ESFileExplorer.zip  解压出来,得到 ESFileExplorer 目录,


三、把刚解压出来的 classes.dex 反编译成java文件:

    用 dex2jar-0.0.9.15 工具:
dex2jar-0.0.9.15\dex2jar-0.0.9.15\dex2jar classes.dex
得到  classes_dex2jar.jar  文件
四、用    jd-gui.exe 工具把刚得到的    classes_dex2jar.jar    保存成java文件:
用    jd-gui.exe    打开    classes_dex2jar.jar

保存后,得到 classes_dex2jar.src.zip 文件,解压。

四、打开eclipse,新建一个java项目,把刚解压出来的文件复制到新建项目src目录下

五、把最开始反编译出来的目录(ESdanganliulanqi    注意:不是解压出来的)中的 res 目录复制到新建项目中,最好把AndroidManifest.xml一起复制进来 


六、接下来就是重点:定位修改的地方

找到蓝牙图标:在     res\drawable-hdpi      搜索 blue
结果:记下名字:sidebar_blue
在eclipse中,搜索sidebar_blue字符串

结果:

在编译时,会把该名字变成id形式(整形),一般会在生成的R.java文件中找到对应关系,但这里因为加了混淆,所以找不到R.java文件,在values目录下,有public.xml文件,其实这个文件与R文件相似,所有drawable对应的id都在这里
找到了对应的id:
 <public type="drawable" name="sidebar_blue" id="0x7f0201ee" />
接下来,找到使用该id的地方,这个id是十六进制的,但引用时,使用的是十进制的,所以如果直接用     0x7f0201ee    来搜索,是没结果的,应该转换成十进制的再来搜索,用计算器转换:2130837998

搜索字符串:2130837998
结果:

找到该 文件(package com.estrongs.android.ui.adapter;),发现使用该图标的方法名是:

最关键的地方:修改字节码:
根据刚刚发现的文件包名,在反编译目录中的字节码目录(smali)找到相应的文件:

用文本编译工具打开:(我用的是UltraEdit)
在当前文件中搜索    2130837998,不好意思,没搜到,原因是字节码中,采用的是十六进制数,所以还得使用前面十六进制数来搜索:0x7f0201ee,找到了,好辛苦啊

这里前面有个        if-eqz v1, :cond_5
这个就是跳转代码,如果v1为0,就执行下面的代码,那么,如果v1不为0呢?自然就不会执行下面的代码,现在我们就是不要执行下面的代码,所以只要修改    if-eqz v1, :cond_5    为    if-nez v1, :cond_5    ,就可以了

修改完成后,保存

七、回编译

使用的工具:apktool.jar
返回到反编译目录,(此目录中,包含了前面修改过的字节码文件),回编译:
java -jar apktool.jar b ./ESFileExplorer

如果报错的话,找到报错的地方,把报错的属性去掉
最终在ES目录下,有个dist目录:

打开,里面有惊喜

八、安装ESFileExplorer.apk,报错,肯定的,要签名才行的,签名这里就不说了。
0 0