安卓APK文件结构解析 怎样去除内置广告 及修改图标和文字

先学习基础知识:

1、APK文件结构




(1).AndroidManifest.xml 
       该文件是每个应用都必须定义和包含的,它描述了应用的名字、版本、权限、引用的库文件等等信息,如要把apk上传到Google Market上,也要对这个xml做一些配置。在apk中的AndroidManifest.xml是经过压缩的,可以通过AXMLPrinter2工具解开,具体命令为:java -jar AXMLPrinter2.jar AndroidManifest.xml 
(2).META-INF目录 
       META-INF目录下存放的是签名信息,用来保证apk包的完整性和系统的安全。在eclipse编译生成一个apk包时,会对所有要打包的文件做一个校验计算,并把计算结果放在META-INF目录下。这就保证了apk包里的文件不能被随意替换。比如拿到一个apk包后,如果想要替换里面的一幅图片,一段代码, 或一段版权信息,想直接解压缩、替换再重新打包,基本是不可能的。如此一来就给病毒感染和恶意修改增加了难度,有助于保护系统的安全。软件修改后需要将里面的证书文件删除(***.RSA、***.SF、***.MF三个文件)再重新签名,否则软件无法安装。
(3).res目录 
       res目录存放资源文件。包括图片,字符串等等。res文件夹里存放的大部分是软件所需的资源及布局文件(drawable存放资源、layout、xml存放布局文件***.xml),部分需要汉化的单词、语句会在这些***.xml文件里。
(4).lib目录 
       lib目录下的子目录armeabi存放的是一些so文件。这个地方多讲几句,都是在开发过程中摸索出来的。eclipse在打包的时候会根据文件名的命名规则(lib****.so)去打包so文件,开头和结尾必须分别为“lib”和“.so”,否则是不会打包到apk文件中的。其他非eclipse开发环境没有测试过。如果你是用SDK和NDK开发的话,这部分很重要,甚至可以通过把一些不是so文件的文件通过改名打包到apk中,具体能干些什么那就看你想干什么了。
(5).assets目录 
       assets目录可以存放一些配置文件,这些文件的内容在程序运行过程中可以通过相关的API获得。具体的方法可以参考SDK中的例子:在sdk的 \SDK\1.6\android-sdk-windows-1.6_r1\platforms\android-1.6\samples\ApiDemos 例子中,有个com.example..android.apis.content 的例子,在这个例子中他把一个text文件放到工程的asset目录下,然后把这个txt当作普通文件处理。处理的过程在ReadAsset.java 中。同理,asset也可以放置其他文件。 
(6).classes.dex文件 
       classes.dex是java源码编译后生成的java字节码文件。但由于Android使用的dalvik虚拟机与标准的java虚拟机是不兼容的,dex文件与class文件相比,不论是文件结构还是opcode都不一样。目前常见的java反编译工具都不能处理dex文件。Android模拟器中提供了一个dex文件的反编译工具,dexdump。用法为首先启动Android模拟器,把要查看的dex文件用adb push上传的模拟器中,然后通过adb shell登录,找到要查看的dex文件,执行dexdump xxx.dex。另,有人介绍到Dedexer是目前在网上能找到的唯一一个反编译dex文件的开源工具,需要自己编译源代码。classes.dex文件是Java源码编译后的代码文件。通常该文件里都有单词、语句需要汉化。
(7).resources.arsc 
       编译后的二进制资源文件。resources.arsc文件是编译后的资源文件,大多数情况下,需要汉化的单词、语句绝大多数都在这个文件里,汉化的时候首先就要看这个文件。

       另外,一些需要汉化的***.png图片文件、***.html文件、***.txt文件可能会在assets文件夹或res/raw文件夹内。图片文件需要用Photoshop修改,html、txt文件可以直接用Notepad++ Portable文本编辑工具修改(不建议用系统自带的记事本,这东西杀伤无数...)。
2、打包、解包
       apk安装包其实就是zip格式的压缩包,只是文件扩展名改成了apk而已,所以可以直接用解/压缩软件WinRAR打开,若你的系统没有关联apk文件,请先安装WinRAR,打开WinRAR——选项——设置——综合,在“用户自定义压缩文件扩展名”处填上apk,点“确定”保存即可。之后就可以直接双击以WinRAR打开apk安装包文件。
汉化软件的时候,不需要把整个apk安装包解包,对于需要汉化的文件,如resources.arsc、classes.dex等文件,直接用鼠标拖出来,汉完后再拖进apk安装包后重新签名就行了(签名问题下面会讲到)。
3、签名
       Android的软件也需要签名,不过和Symbian相比,却要简单方便得多,首先是不需要自己去申请证书,下载个签名工具就可以签名了。另外,我们从电子市场、软件官网下载来的软件都是已经签好名的,可以直接安装,这里讲到的签名,是针对软件安装包被修改过的情况(如汉化需要修改安装包内的文件,原来的签名文件就不能用了,所以要重新签名软件才能正常安装。),正常情况下不需要签名。
现在Android可用的签名工具很多,想方便点的话可以用汉化浪子出品的AndroidResEdit,这个软件自带签名包。签名方法很简单,删除原证书文件后(META-INF 文件夹内的***.RSA、***.SF、***.MF三个文件),打开AndroidResEdit——签名——签名apk文件,选择需要签名的apk安装包后点击“立即签名”即可。
4、安装Java
        这个是最基本的,汉化相关的软件都需要用到Java,必须要安装,否则无效。
安装地址:http://www.java.com/zh_CN

怎样去除广告

一:首先会用到几个软件,一个是dex解包、打包工具、Notepad++ Portable(dex文本编辑工具)、以及签名工具和JAVA运行环境安装,其他软件可以到这个地址下载:http://yunpan.cn/lk/sVkRQBi4HAJhu?sid=301
二:把需要去广告的软件,右键用7-zip解压方式打开,把classes.dex拉出来。



三:用dex工具解压classes.dex文件(具体方法看包里面说明)。打开Notepad++ Portable搜索 http:// (注意复制)




四:如图双击搜索到的网址,在上面改为无效网址就可以了。或直接删除引号里的网址,然后保存“全部”文件(这个修改时要注意,有的软件如果修改错误的话可能不能安装,可以网上搜一些是广告的连接。我只是提供一个方法,具体大家多练习研究吧)

引用:

还有ads字样文件
都可能是广告
但schemas.android.com开头的不是




去广告步骤:

1、去除广告下载源
解包classes.dex(方法上面已讲过),用Notepad++ Portable搜索广告下载源地址(若不知道软件用的是哪个供应商的广告的话,最好两家的下载源都搜索下)
2、去除广告界面
① 将刚刚已经替换了classes.dex文件的apk安装包用反编译。
② 用Notepad++ Portable搜索广告代码(上面已列出)
如图,将搜索路径定位到res文件夹(就是反编译后的res文件夹),代码只搜索开头就行了,如:com.admob.android.ads.AdView 和 com.google.ads.GoogleAdView。
如图:



搜索结果:


③ 双击黄颜色区域,修改下图上方的代码 
android:layout_width="fill_parent" 修改为 android:layout_width="0.0dip"
android:layout_height="wrap_content" 修改为 android:layout_height="0.0dip"



修改后:



将所有搜索到的代码按照上面修改,完成后保存

五:封包classes文件夹(见包里说明),然后把classes.dex文件再次拖动到用解压方式打开的APK文件内。删除图下2个或3个文件,签名安装即可。



修改更换安卓软件图标

        一个安卓程序的图标有时候并不见得每个人都喜欢而且,某些APK程序不具备高分辨率的程序图标,造成在程序在高分辨率的屏幕下图标显示效果较差,所以有必要的时候是可以更改一下以满足个性化需求的,下面说说具体怎么做。

工具

 

  • 7-zip
  • DoAPk.exe(或AndroidResEdit选择签名)
  • Java环境

步骤/方法
        1.首先,把要更改图标的APK程序用7-zip进行解压
        2.解压出来,看到如下文件和目录,其中看到一个名为res的目录,这个目录中存放的就是安装程序的资源文件,包括各种图片素材和声音素材,当然,我们需要的程序图标就包含在里面,双击打开res这个目录


       3.之后在系统上方的搜索栏搜索带有"icon"字样的文件。通过基本判断可以得知,app_icon.png就是程序的图标,或找程序的图标(你懂得).
       4.找一个自己喜欢的程序图标,需要注意的是,替换后的程序图标的名字,格式,分辨率大小都要和原图标一致,然后才把原来的app_icon.png替换.
       5.替换完成之后,我们需要重新打包程序。回到程序解压之后的目录,删除原来的图标文件。拖动新的图标到里面。搞定!
       6.打开AndroidResEdit选择签名.或打开Doapk.exe点击“单独制作ROM和APK签名”这一按钮,之后会弹出一个窗口,这里让用户选择自己需要签名的APK文件.

     
       7.弹出窗口中选择好自己改好图标的APK文件,然后点击制作签名,这样就完成了对APK程序的签名,这样的APK程序在手机上安装才不会弹出错误提示 
注意事项:DOAPK需要java环境的支持,使用前得先安装。更改前备份好源程序文件

文字修改

       相信很多机友(特别是有强迫症的童鞋,比如我)遇到过这个问题,甚至可以说是困扰;
很喜欢一款软件,全身上上下下就一个看不顺眼 —— 软件名字;
下面介绍如何修改软件名称。
             别告诉重命名可以通过第三方桌面解决,那个没有技术含量!!而且改的只是皮毛哦。
一、准备工作:
      软件ArscEditor.exe
二、修改 APK 软件名称:
      1、右击 APK 安装包,用压缩软件解压到当前文件夹;(如下图所示)
      2、解压后找到文件“resources.arsc”; 
      3、打开将文件“resources.arsc”直接拖入ARSC编辑器的空白处中;(如下图所示)
     4、选择“string”标签,并找到键值“app_name”;
     5、将“区域”切为CN(有的不用切换),然后在“区域值”中修改你想要的软件名字,修改好后点击“保存当前值”;
     6、点击“文件”,选择“保存”,并覆盖保存;
     7、右击 APK 安装包,用压缩软件打开;(注:无需解压)
     8、将修改好的“resources.arsc”文件直接拖入进安装包内并确认覆盖原文件;(如下图所示)
三、重新签名:
     1、打开所得到的文件夹,并打开签名工具“AndroidResEdit.exe”;
     2、选择“签名” - “签名 apk 文件”;签名后生成的新安装包名为“XXX-SignFile.apk”,安装到手机。




本教程仅供交流学习,内容来自互联网。不得用于其他用途 ,支持开发者!

软件包下载地址:http://yunpan.cn/lk/sVkRQBi4HAJhu?sid=301 

 

  • 14
    点赞
  • 92
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
任意反编译安卓应用 自由定制任何没有加固过的APK安装包,可以修改应用程序图标和应用程序名称、替换界面吗上面的任何文字和图片、翻译或者汉化制作多语言版本,更支持通过高级的SMALI代码,实现对应用软件的破解。 海量安卓应用,游戏模板 提供海量最新最全的应用作为定制模板,可以直接下载后进行反向工程、破解、修改、查看源代码、查看安装包信息等操作(部分应用由于做了加固,暂时不能进行反向工程)。 多渠道打包发布 通过已经打包的APK安装包作为模板,反编译后,动态修改文件或者SMALI代码中的渠道标志来实现批量重新多渠道打包,由于不是源代码级别的打包,所以大大提升了批量打包的速度和效率。 随机包名,应用名打包 对于成人影院、成人游戏等APP,经常会出现被手机安全软件和手机管家类软件报毒的情况,可以通过本功能定时随机更换包名和应用名称重新打包,再配合网页下载程序,用户就可以实时下载到最新的安装包,避免了报毒等情况。 查看安卓应用源代码 经过对APK安装包进行反编译,然后通过反映射的方式获取源代码。反编译获取的JAVA代码适合对源代码进行分析,查看应用内部逻辑,不可进行反编译,反编译工程只能在SMALI代码基础上修改。 众多安卓应用反编译应用 软件还提供了大量的小工具,用来查看安装包信息,并可以在手机连接电脑的情况下,查看手机信息、实时日志、安装和管理手机的应用程序、管理手机的文件等等,并可以直接定制修改手机已经安装的应用程序。
在Android Studio中,生成签名文件可以按照以下步骤操作: 1. 打开Android Studio并打开您的项目。 2. 点击菜单栏中的“Build”,然后点击“Generate Signed Bundle / APK”。 3. 选择“APK”并单击“Next”。 4. 在下一个屏幕上,选择“Create new”并填写有关您的密钥的详细信息,例如名称,密码,别名和有效期等。 5. 单击“OK”并填写有关您的应用程序的信息,例如版本号和版本名。 6. 单击“Next”并选择“Release”作为构建变体。 7. 单击“Finish”并等待编译完成。 一旦您的应用程序构建成功并生成签名文件,您可以使用以下步骤对其进行反编译、修改、打包和签名: 1. 下载并安装Apktool(可在https://ibotpeaches.github.io/Apktool/上找到)。 2. 将您的APK文件复制到Apktool所在的文件夹中。 3. 打开终端或命令提示符并导航到Apktool文件夹。 4. 输入以下命令以反编译您的APK文件apktool d your-apk-file.apk 5. 对您的应用程序进行任何修改。 6. 输入以下命令以重新打包您的应用程序:apktool b your-modified-app-folder 7. 使用Java keytool生成新的签名文件。例如,使用以下命令生成新的签名文件:keytool -genkey -v -keystore your-keystore-file.jks -alias your-alias -keyalg RSA -keysize 2048 -validity 10000 8. 使用以下命令将您的应用程序签名:jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore your-keystore-file.jks your-modified-apk-file.apk your-alias 9. 安装已签名的APK文件并测试它。 请注意,修改和重新打包应用程序可能会违反某些法律和条款。请确保您有权执行此操作,否则可能会面临法律后果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值