如何利用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

随机推荐

  • 保湿精华推荐

    精华,是护肤品中之极品,成分精致、功效强大、效果显著,所提取的都是高营养物质并将其浓缩。精华液是护肤品中的重中之重,从称呼就可以判断初精华液是所有护肤品的精华,正常来说,用再多的护肤品,如果不用精华液都是无济于事,尤其是对熟龄肌肤或者是问题

    2024-04-15
    1056300
  • 抗老精华液哪个牌子最好用

    抗老精华液以下牌子最好用:1、宝丽极光幻彩精华液这款产品是它抗衰老系列当中最高端的产品,里面蕴含的成分也是非常的珍贵的,集合了多种核心专利技术,可以从根源上柔弱肌肤。2、莱伯妮鱼子酱反重力精华这款产品主要利用了深海鱼籽精粹作为配方,再结合珍

    2024-04-15
    62200
  • 哪些护肤品套盒效果好?

    很多妹子都会使用整套的护肤品,很多妹子都会去店里购买一套护肤品,毕竟使用成套的护肤品,会让自己的肌肤变得特别滋润,但是还是有很多品牌的护肤品不知道怎么挑选,不知道哪些好,那么哪些护肤品套盒效果好?希思黎明星保湿套装好用吗?1、保养品推荐1、

    2024-04-15
    53200
  • 娇韵诗双萃赋活精华

    娇韵诗双萃赋活修护精华露好用吗?评价怎么样啊?娇韵诗娇韵诗双萃赋活修护精华露获得过很多的护肤奖项,大部分人用这款精华都会给好评,使用感也是很不错的,以下是个人使用感受: 精华露刚开始用会感觉有点油,但真的不会闷痘,也不怕油光满面,皮

    2024-04-15
    48100
  • 资生堂红妍肌活精华露白天可以用吗

    白天可以使用,资生堂红妍肌活精华露在化妆水之后使用,使用的时候按压出适量的精华露,均匀涂抹在脸上,画圈按摩促使精华露渗透到肌肤中,之后使用乳霜,滋润皮肤。资生堂红妍肌活精华露又被人叫做红腰子,是一款具有补水 、保湿、滋润功能的精华露,有效提

    2024-04-15
    40200
  • 抗衰老的套盒贵还是美白套盒贵

    抗衰老的套盒贵还是美白套盒贵?这个问题涉及到两个不同的护肤需求,让我们从多个角度来回答。价格方面。抗衰老的套盒通常包含多种成分和配方,用于改善细纹、提升皮肤弹性等问题。而美白套盒则主要针对肤色不均匀、暗沉等问题。从品牌和产品定位来看,抗衰老

    2024-04-15
    48900
  • 妮维雅男士蓝罐怎么区分国产和进口

    妮维雅男士蓝罐是一款非常受欢迎的护肤品,深受许多消费者的喜爱和好评。但是,对于如何区分国产和进口的妮维雅男士蓝罐,我们需要从多个角度进行考虑。我们可以通过产品包装上的标识来进行区分。通常情况下,国产产品会在包装上标注“中国制造”或者“中文标

    2024-04-15
    46500

发表评论

登录后才能评论
保存