如何利用apktool反编译apk

如何利用apktool反编译apk,第1张

首先的知道一下几条指令的意思

  1,apktool d SysteUIapk 12意思是将SystemUIapk解包到12文件下,12文件夹不用创建,会自动生成

  2,apktool b 12打包12文件夹(将会自动把12文件夹里的修改过得APK解包后修改完后自动打包,生成resourcesarsc,文件,这就是我们反编译的主要目的,当然还有其他目的,后面将会说明怎么apktool需要反编译的目的,生成的文件。

  3,apktool if framework-resapk这条语句很重要很多时候我们容易忽略这条语句导致打包不成功,这句语句的意思是,有些时候我们解包apk文件需要用framework-resapk(framework是指系统框架。有时也会用到apktool if twframework-resapk,同样我们只需在前面输入就行。当然得把framework-resapk 这个文件目录下。

  4,apktool if twframework-resapk ,当然 twframework-resapk 也应该放在文件目录下,不如反编译Mmsapk会用到

  知道这四条语句我们就可以进行反编译了。

  已反编译SystemUIapk为例,,下面开始讲解

  现在cmd下输入apktool if framework-resapk(并把framework-resapk 放在文件目录下)apktool if twframework-resapk( twframework-resapk 也应该放在文件目录下 )其实这两部就是搭建安卓系统环境 ,输入完后在解包,apktool d SystemUIapk 12就行了

  

  让我们先来认识下APK文件 Android的应用程序包为扩展名为apk文件, 无论你是从手机市场里下载, 还是电脑中下载  都是这类APK文件  APK是AndroidPackage的缩写,即Android安装包(apk)。APK是类似Symbian Sis或Sisx的文件格式。通过将APK文件直接传到Android模拟器或Android手机中执行即可安装。apk文件和sis一样,把android sdk编译的工程打包成一个安装程序文件,格式为apk。 APK文件其实是zip格式,但后缀名被修改为apk,通过UnZip解压后,可以看到Dex文件,Dex是Dalvik VM executes的全称,即Android Dalvik执行程序,并非Java ME的字节码而是Dalvik字节码。Android在运行一个程序时首先需要UnZip,然后类似Symbian那样直接,和Windows Mobile中的PE文件有区别

  android

  一个APK文件解压开通常有这样的文件夹:

  META-INF 目录:

  MANIFESTMF: manifest文件

  CERTRSA: 应用程序证书

  CERTSF: SHA-1资源签名列表 例如:

  Signature-Version: 10

  Created-By: 10 (Android)

  SHA1-Digest-Manifest: wxqnEAI0UA5nO5QJ8CGMwjkGGWE=

  

  Name: res/layout/exchange_component_back_bottomxml

  SHA1-Digest: eACjMjESj7Zkf0cBFTZ0nqWrt7w=

  

  Name: res/drawable-hdpi/iconpng

  SHA1-Digest: DGEqylP8W0n0iV/ZzBx3MW0WGCA=

  lib: 这个目录包含某些特定编译代码, 这个文件夹分成下面这些

  armeabi: 只基于所有ARM处理器的编译代码

  armeabi-v7a: 所有ARMv7处理器的编译代码

  x86: 仅针对x86处理器的编译代码

  mips: 为MIPS处理器的编译代码

  res: 包含资源的目录不编译到资源文件,看下面:

  assets: 包含应用程序的资产,可以通过AssetManager进行检索

  AndroidManifestxml: 包含应用程序的元数据文件,描述名称、版本、访问权限、引用应用程序的库文件。此文件在Android二进制格式, 可被工具转化为可读的纯文本XML工具,如   AXMLPrinter2,apktool,或Androguard。设置,可以通过AssetManager进行检索

  classesdex: Dalvik字节码

  resourcesarsc : 一个包含预编译资源文件,如二进制的XML

  有两种方法反编译APK, 如果是为了汉化程序, 可以使用apktool:

  安装过程

  

  1下载apktool152tarbz2和apktool-install-windows-r05-brut1tarbz2

  2把两个文件都解压放在同一个目录,共三个文件

  aaptexe

  apktoolbat

  apktooljar用于解包,apktooljar和aaptexe联合用于打包。

  在命令行执行:

  apktool d d:\xxxapk d:\xxx

  xxx 为你的输出目录,  然后你就可以看一些xml的资源文件, 以及Smali文件 如下图某APK文件反编译输出目录:

  Smali,Baksmali分别是指安卓系统里的Java虚拟机(Dalvik)所使用的一种dex格式文件的汇编器,反汇编器。其语法是一种宽松式的Jasmin/dedexer语法,而且它实现了dex格式所有功能

  你可以使用dex2jar, 下载后解压, 直接把apk文件拖到dex2jarbat文件上,就可以生成对应jar文件,这时使用JD-GUI, 打开jar文件,就可以看到java源码,同时可以导出

  由此可见,Android应用程序反编译并不难, 加密与解密的斗争一直会持续

工具:

apktool:资源文件获取,可以提取出文件和布局文件进行使用查看

dex2jar:将apk反编译成Java源码(classesdex转化成jar文件)

jd-gui:查看APK中classesdex转化成出的jar文件,即源码文件

反编译流程:

一、apk反编译得到程序的源代码、、XML配置、语言资源等文件

下载上述工具中的apktool,解压得到3个文件:aaptexe,apktoolbat,apktooljar ,将需要反编译的APK文件放到该目录下,

打开命令行界面(运行-CMD) ,定位到apktool文件夹,输入命令:apktoolbat d -f testapk test

(命令中testapk指的是要反编译的APK文件全名,test为反编译后资源文件存放的目录名称,即为:apktoolbat d -f [apk文件 ] [输出文件夹])

说明获取成功,之后发现在文件夹下多了个test文件,点击便可以查看该应用的所有资源文件了。

如果想将反编译完的文件重新打包成apk,可以:输入apktoolbat b test(你编译出来文件夹)便可,之后在之前的test文件下便可以发现多了2个文件夹:

builddist(里面存放着打包出来的APK文件)

1:用WINRAR重新打包选择“储存”

2:重新签名,签名以前先删除旧的签名存档,也就是删除META-INF目录下的MANIFESTMF以外的所有文件

3WinXP要安装20以上版本的NET,WIN7的话可以直接下一步。

4下载签名软件,搜索一下一大把

5安装JAVA,否则运行签名软件时会直接提示签名成功却什么文件都没有的

一、相关工具(针对windows系统)

下载windows安装版的程序,安装后不用管它了。

下载apktool-install-windows-22_r01-3tarbz2和apktool132tarbz2,用winrar解压后把解压出来的文件都放在一个目录下,比如:E:/apktool/ 下(为简单起见,下文都用这个路径为apktool工作目录)。

Auto-Sign签名工具:N/A

二、反编译

  说要把apk“装冰箱(反编译)”分三步走:

第一步:先把apk程序(这里用ThinkingSpaceProapk)程序放到 E:/apktool/ 下。

第二步:启动windows的cmdexe,用命令行cd到 E:/apktool 目录下。

第三步:键入命令

apktool d ThinkingSpaceProapk

这个命令的格式是:

apktool d xxxapk output

其中 d 参数用来指示工具要进行反编译操作,xxxapk是要反编译的程序,output 源码输出的路径。如果最后不指定输出的路径,默认是放在同目录下的 xxx 文件夹下(即apk程序名称去掉apk后的名称)。如果你的apk文件名称中有空格,那键入命令时用双引号引起来,不过为方便起见,反编译之前把apk文件名中的空格都去掉先。

运行反编译命令后会在同级目录下得到一个 ThinkingSpacePro 文件夹,源文件都在里面了。

三、汉化

  汉化这个比较简单,在反编译apk程序得到源码后,一般程序的文档都放在res目录下,都是些xml文档,用记事本之类的打开查看一下,一般都会比较容易看出来哪些是可以汉化的文本。这个就不去弄它了。可能不同程序还有不一样的,反正英语差点,汉化这种事我也不去深究了。你如果只想汉化的话,进res文件夹找找,完成汉化后就可以直接重新编译程序了(最后讲编译),不用太多的编程知识。思维导图本身支持多国语言(都在源文件的res文件夹里),所以也用不着汉化了。但大致的汉化过程就是这样了。

  另外貌视还有Android ResEdit之类的专用汉化软件,不用搞什么反编译,用起来可能更简单。

四、SDcard to Flash

  对于N5p,app2sd只是一个传说,不过sd2flash下面就可以实现。用SD卡玩机的人可以无视。

  下面这个是本文的重点。目的就是要修改程序的默认数据读取和保存路径,主要针对那些必须有SD卡才能使用的程序。比如说一个游戏它分为主程序和游戏的关卡数据。主程序可能只有1M,但游戏关卡数据可能是几十甚至上百M,这类游戏一般是主程序安装在内存中,而关卡数据会要求你安装或下载到SD卡上。如果你没有SD卡,那就玩不成了。我之所以要改它的路径,就是不想让它占我的SD卡,N5p不是自带8G(实际好像只有65G)Flash闪存么,那为什么不用它?下面的修改就是要欺骗apk程序,我们的Flash闪存就是程序你要的SD卡。

  正式修改时,除了要修改所有源文件(主要是smali程序源文件)中的/sdcard 路径,使之指向 /flash 外,还要修改含有 EnvironmentgetExternalStorageState 和 EnvironmentgetExternalStorageDirectory 的源文件,前者用于检测是否安装SD卡,后者获取SD卡的路径。

  那么从头来修改思维导图 Thinking Space Pro 216的数据读写路径。原版程序你必须要有SD卡才能正常保存你的数据,修改之后,所有数据读取、保存都针对N5p自己的Flash闪存,从而解放SD卡。

用apktool反编译ThinkingSpaceProapk

apktool d ThinkingSpaceProapk

1 执行命令 java -jar apktooljar d xxxapk

如果apk没有加固,执行完命令,就能看到反编译后的smali文件,可以阅读这些smali文件

2 打包命令 java -jar apktooljar b 解包后的目录 >xxxapk

可以执行打包命令,将解包,修改后的smali再打包 如果需要调试,需要在AndroidManifestxml文件中,加上debugable

此时得到的apk包没有签名,需要签名后才能安装

3 签名 jarsigner -verbose -keystore \xxxjks -signedjar signedapk xxxapk 'benzhuo'

输入密码后,签名完毕,签名后的包是signedapk,安装这个包

1 执行 java -jar apktooljar d signedapk 解压刚才签名的安装包

2 用Android Studio 打开解压后的文件夹,此时需要设置一下工程的SDK

3 连接上测试手机, 执行命令 adb shell am start -D -W -n 包名/LauncherActivity ,以debug模式打开应用,此时手机上打开应用会弹出提示框, Waiting For Debugger

4 点击Android Studio的Attach Debugger 按钮

5 选择调试的程序,然后就可以调试了

6 修改了Smali文件之后,需要重新打包,然后安装在手机上,再调试

1 原始类型

|smali类型|java类型|

|----|---|

|B|byte|

|C|char|

|D|double|

|F|float|

|I|int|

|J|long|

|S|short|

|V|void|

|Z|boolean|

|[x| x类型数组|

|Lpackage/Object|对象|

2 方法

欢迎分享,转载请注明来源:品搜搜测评网

原文地址:https://pinsoso.cn/shuma/769093.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-08-06
下一篇2023-08-06

随机推荐

  • 混合肌精华液推荐8款必推精华液

    在这个炎热的夏天,很容易缺水和缺水。混合肌的T字部位容易出油,两颊会比较干,所以皮肤会经常出现油水不平衡!很多混合肌在选择护肤品的时候,经常会面临“想改善却不知道从何下手”“哪个不会太油或者太干”之类的恼人问题!面对琳琅满目的精华液,你不知

    2024-04-15
    34700
  • 国产隔离霜什么牌子好

    问题一:什么牌子的隔离霜好?不要用化学成分的,最好用专门针对敏感皮肤的药妆,薇姿、理肤泉、雅漾这3个牌子的隔离霜都不错,在各大药房里都有得卖,国产的佰草集也不错,可以试试!问题二:国产隔离霜什么牌子好梵洁诗问题三:大

    2024-04-15
    30300
  • 妮维雅美白身体乳怎么样?妮维雅美白身体乳效果

    妮维雅美白身体乳,真的是一款平价大碗的产品,不少妹纸是因为美白的原因购入,但是没有想到居然还很滋润,香味不是很浓郁,反正用起来不怕用量的一款身体乳妮维雅美白身体乳好用吗妮维雅美白身体乳,便宜大碗好用,一百分推荐。轻薄的乳液状,吸收快

    2024-04-15
    29400
  • 雪花秀一套下来多少钱盒

      滋阴套盒七百多。  雪花秀(Sulwhasoo)为韩国著名化妆品品牌,是韩国最大的化妆品公司之一的韩国爱茉莉(太平洋)株式会社旗下三大顶级品牌之一(爱茉莉太平洋、雪花秀、赫拉)。爱茉莉太平洋集团化妆品研究院通过20多年的不断努力,以人参

    2024-04-15
    41400
  • 巴黎欧莱雅的广告词是什么? 完整版的…

    使用百度网盘免费分享给你, p7vi 来自法国的L’Oréal Paris(巴黎欧莱雅)是世界最著名的美容品牌之一,提供全世界人们包含最新科技成果的美容及个人护理产品。其高科技的产品配方、高档的产品包装以及愉悦的产品使用感受,为那些追求卓越

    2024-04-15
    35100
  • 纯露和爽肤水、精华液的区别在哪?

    无论是爽肤水、纯露还是花水,只要肌肤真正吸收了就有保养效果,如果肌肤不吸收,无论多么高档的国际产品都归于零。所以,妹子们一定要选择自己皮肤能充分吸收的产品,适合自己的就是最好的。先说爽肤水。爽肤水的配方是:水+功效成分(补水、美白、抗皱等)

    2024-04-15
    35400
  • 妮维雅什么产品好

    问题一:妮维雅的哪种产品好?妮维雅的 粉水、白水、蓝水,我都用过,绿水我同学用过。所以相对来说比较熟悉。 粉水――这款号称是适合敏感肌肤使用的水,我用没啥感觉,但是我一个同学用了居然蜕皮过敏!!可以想象,其中化学含量。。。 白水

    2024-04-15
    34200

发表评论

登录后才能评论
保存