飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 4007|回复: 4

[Android] 转载分享:Android APP二次打包操作步骤介绍

[复制链接]
  • TA的每日心情
    无聊
    2022-10-11 10:14
  • 签到天数: 228 天

    [LV.7]常住居民III

    发表于 2015-8-26 16:44:37 | 显示全部楼层 |阅读模式
    看到好的技术教程就想转载一下,不喜勿喷!谢谢配合,仅供菜鸟学习研究,不要做坏事哦\(^o^)/~
    关于Android APP 二次打包现象已经屡见不鲜,为何“打包党”就吃准了Android平台,二次打包的操作过程到底有多简单?
    本文将从Android apk的结构、二次打包的工具、步骤等方面向移动开发者说明二次打包操作的简单性,从而引起开发者对APP安全的重视,并及时对APP进行代码混淆或加固 保护等安全措施。
    安卓apk的文件结构
    首先来看一下Android apk的内部文件结构。
    随便下载一款手机APP,用解压工具即可查看到其内部文件结构,如图1所示:

                                                                                                                                                                                                                                                                                   
    反编译2.jpg

    Apk中的主要文件内容有:
    1.AndroidManifest.xml:Android主配置文件,编译过程中由文本格式转化为二进制AXML文件格式。
    2.Classes.dex: java代码编译后产生的一种类似字节码的文件。
    3.res/文件夹:资源文件,其中的.xml文件,在编译过程中由文本格式转化为二进制AXML文件格式。
    4.META-INF/文件夹:签名文件。
    5.Lib: native代码编译后的so。
    6.其他文件夹:由开发者自己添加的文件
    Android apk的核心逻辑主要存在于classes.dex中,通常破解者在进行破解和二次打包时,会对classes.dex和AndroidManifest.xml文件进行操作,所以对这两个文件进行保护尤为重要。了解了Android apk每个文件的含义与用途,就可以有针对性的对其进行二次打包操作。

    二、apk二次打包步骤
    通常,Android apk的二次打包步骤主要包括:
    1.反编译
    (1)反编译java:classes.dex反编译成中间文件(smali、jar)。
    (2)反编译布局文件:Axml文件反编译成xml文件。
    2.修改
    (1)修改smali文件。
    (2)修改xml文件。
    3.重新编译
    (1)修改后的smali编译成classes.dex。
    (2)修改后的xml编译成Axml。
    4.重签名
    对新的apk进行重签名,一款新的APP便产生了。

    三、反编译工具
    1、反编译java代码工具:
    (1)APKTool
    (2)Smali/baksmali
    (3)Dex2jar + jd—gui
    (4)集成化图像窗口工具:改之理、JEB

    2、反编译布局文件(xml)工具:
    (1)AXMLPrinter2
    (2)APKTool
    (3)Github上的解析AXML文件的开源项目

    四、反编译apk
    反编译java是指把classes.dex文件利用反编译工具,生成一种中间语言.samli文件或者jar文件的过程,常用手段有:
    (1)Java  –jar  Apktool.jard  –r  –f  input.apk  output目录。
    (2)java  -jar  baksmali-1.4.1.jar -o  output目录  classes.dex。
    (3)dex2jar.bat  classes.dex。     
    (4)图像窗口工具:改之理或者JEB。
    (5)Android sdk自带dexdump工具。
    其中,dex2jar.bat工具输出的是.jar文件,是只读不可修改的。如果还需要修改并二次打包,不可选用该工具。其他的工具生成的都是smali文件。

    五、修改.samli文件
    修改.samli语言的一些技巧:
    (1)信息反馈法(弹出提示信息未突破点)。
    (2)特征函数法(Toast、Log、getPublicKey等)。
    (3)代码注入法(Log输出配合LogCat查看状态数据)。
    (4)栈跟踪法
    可疑点插入以下代码,既可以得到函数调用顺序:new Exception(“print trace”).printStackTrace();


    六、 反编译布局文件(xml)工具
    反编译布局文件是指:把APK中,二进制的Axml文件还原成文本格式xml文件。常用手段:
    Java  –jar  Axmlprinter2.jar AndroidManifest.xml  > out.xml
    Java  –jar  Apktool.jar d  input.apk  output目录
    其中AxmlPrinter2.jar只是单向的,无法把文本文件重新编译成AXML。另外如果有比较高级的需求,以上2中工具无法满足。读者可以自己实现一个Axml文件解析器。网络上已经有许多类似的开源项目。

    七、 修改布局文件:
    由Axml文件得到文本格式的xml文件后,就可以根据需求,随意的修改AndroidManifest.xml文件了。例如:

    <meta-data
          android:name="BaiduMobAd_APP_ID"
    android:value="10035477" />
    这是一个百度广告标识字段。其中android:value是开发者的认证值,直接和广告收入联系。只要修改该字段就可以盗取别人的广告的收入。

    八、 重新编译APK
    为了使修改生效,需要重新编译文件,生成新的APK。
    重新编译java代码:用修改后的.smali文件重新生成classes.dex文件。

    (1)java –jar Apktool.jar  b  –f  input目录  new.apk
    (2)java -jar smali-1.4.1.jar classout/ -oclasses.dex
    (3)图像窗口工具:改之理或者JEB
    (4)重新编译xml文件:
    (5)java –jar  Apktool.jar  b –f  input目录  new.apk
    (6)基于github开源项目自己实现Axml文件解析器。
    注意:APK反编译和重新编译使用的工具要配套,例如:使用APKTool进行反编译,那么重新编译也要使用APKTool。

    九、重新签名
    1. 重新编译APK,生成新的APK后,由于改动了文件内容,所以必须进行重签名。
    2. 安装运行新APK。就可以看到改动生效了。
    以上就是二次打包的步骤,操作起来真的很简单。
    为了避免自己辛苦开发的APP惨遭破解和二次打包,出现了不少第三方的加固保护类产品。
    ps:上网一搜什么都有了。


    评分

    参与人数 1飘云币 +4 收起 理由
    f1998 + 4 很给力!

    查看全部评分

    PYG19周年生日快乐!
  • TA的每日心情
    擦汗
    2 小时前
  • 签到天数: 2654 天

    [LV.Master]伴坛终老

    发表于 2015-8-27 22:56:58 | 显示全部楼层
    现在已经出现了一下整合的工具,可以一键完成类似操作

    点评

    是的,只是转发出来解剖一下。。  详情 回复 发表于 2015-9-16 14:47
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    昨天 11:20
  • 签到天数: 1032 天

    [LV.10]以坛为家III

    发表于 2015-8-29 14:47:32 | 显示全部楼层
    学习了 很好很强大
    PYG19周年生日快乐!
  • TA的每日心情
    无聊
    2022-10-11 10:14
  • 签到天数: 228 天

    [LV.7]常住居民III

     楼主| 发表于 2015-9-16 14:47:21 | 显示全部楼层
    gmh 发表于 2015-8-27 22:56
    现在已经出现了一下整合的工具,可以一键完成类似操作

    是的,只是转发出来解剖一下。。


    PYG19周年生日快乐!
    您需要登录后才可以回帖 登录 | 加入我们

    本版积分规则

    快速回复 返回顶部 返回列表