如何利用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
    44100
  • 敏静臻颜肌底修护套盒功效

    敏静臻颜肌底修护套盒功效是补水,保湿,提亮肤色。敏静臻颜肌底修护套盒的产品规格是肌底修护冻干粉,肌底修护原液,肌底水养原液。产品成分是光果甘草、茶、母菊等提取物。产品功效是改善粗糙肌,深层渗透肌底,所有肌肤均可使用。敏静臻颜肌底修护套盒还能

    2024-04-15
    34800
  • 有哪些好用的平价精华和面霜可以推荐?

    本人学生党,根据自己2年来的亲身使用经历,我来分享两个绝顶好用的平价精华,大家闭眼入也不会出错。再推荐三款平价、好用,适合学生党,成分党使用的秋冬保湿面霜。1、John Jeff 5%油橄榄精华参考价格 30ml89元John jeff真

    2024-04-15
    43800
  • 妮维雅的产品简介

    唇部护理系列脸部保养系列男士护肤系列专业防晒系列身体护理系列爽身香体系列润肤霜系列 精华爽身系列精华爽身系列整天干爽,修护脱毛损伤腋下频繁脱毛会损伤表层肌肤,使原本脆弱的腋下肌肤变得毛孔粗大、干燥、不平滑,有时甚至会伴随发痒、泛红等不适症

    2024-04-15
    27800
  • 美容液 精华 洁肤晶露 洗面乳 防晒霜 哪个顺序???

    先洗面乳(如果是有去角质功能的洁肤晶露,建议每周用一次,如果是温和的,与洗面乳的功能一样可以早晚用)再用精华(美容液的功能不祥细,如果与保湿乳、保湿霜的功能一样,就可以用了精华再用也可以的。)最后擦防晒霜(所有的保养过程,防晒都是最后一步)

    2024-04-15
    35100
  • 乳液和精华液哪个明星

    十大明星同款护肤品排名1、海蓝之谜面霜,2、SK-Ⅱ嫩肤清莹露,3、兰蔻小黑瓶精华肌底液,4、迪奥的梦幻美肌修颜乳,5、资生堂盼丽风姿丰润护唇膏,6、娇兰御廷兰花乳液,7、LaPrairie莱珀妮焕颜新生乳霜,8、CPB沁肌紧肤蜜,9、PO

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

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

    2024-04-15
    35100

发表评论

登录后才能评论
保存