如何利用apktool反编译apk

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

电脑必须装JAVA

JAVA电脑环境教程

apktool

方法/步骤

1 配置好JAVA环境变量,下载:apktool 解压的文件放在C盘根目录的apktool文件夹里(apktool文件夹自己创立)

打开命令提示符,(开始-运行-输入cmd)

2 输入:cd \apktool 系统指令到了apktool文件夹(这里就是为什么要把解压的apktool解压的文件放到apktool文件夹的原因,当然你也可以自命名文件夹的名称,那么比如arc,那么指令就变成了:cd \arc 前提是你必须把apktool解压的文件放到这个文件夹里面)

3 使用RE管理器把系统里面的framework-resapk 与 SystemUIapk 提取出来放在apktool文件夹里面

4 如果只是想反编译framework-resapk

输入apktool if framework-resapk(框架的建立)

5 开始最重要的反编译,输入指令,apktool d framework-resapk

(反编辑的APK一定要用没换过的,否则回编辑失败)

6 最后反编译完成

7 修改代码完成后,输入代码:apktool d framework-res 即可完成回编译

8 如果反编译的是系统文件,比如,SystemUIapk 那么必须进行挂载框架,反编译时,必须敲入一下命令:(然后再重复4-7步骤)

apktool if framework-resapk

apktool if SystemUIapk

9 对于三星手机(比如9100、9108/9100G),如果反编译SystemUIapk要敲入一下命令进行框架挂载apktool if framework-resapk

apktool if twframework-resapk

apktool if SystemUIapk

10 回编译的命令是 apktool b XXX (没有后面的apk后缀)反编译的命令是 apktool d xxx (有后面的apk)

1、反编译=回编译后分别是

    smali目录 回编译为 classesdex 文件

     res目录 回编译为 resourcesarsc 文件

2、回编译顺序

在回编译时,会先检查“源”即resources

当你汉化文件,修改出错了(缺少一个符号也不行),

那么回编译会自动跳过编译res文件夹,直接回编译smali 。

所以,如果没有对smali(classesdex)汉化,那么建议大家删掉这个文件夹,

这要会大大加快回编译速度。

3、出错问题1

在汉化时,往往会不小心删掉一些符号,如 "<" ">"符号等等。

  <string name="app_name">File Manager</string>

  <string name="app_name">文件管理器/string>

  <string name="app_name"文件管理器</string>

这些小小的错误都会导致回编时译检查出错。

所以汉化时,注意对校,然后再回编译。

建议使用一些高级的文本编辑器,支持语法高亮视图的。

4、出错问题2

最近发现有些APK文件 反编译后,就算不汉化直接回编译,都会出错。

有可能的原因1,反编译后XML文件语法中@符号 前面多了"\" (\@ ),

用文本编辑工具 直接替换\@为@,应该可以解决。

建议使用最新版本的反编译工具。

5、建议大家使用新版本的APKTool工具,

当然如果新的有问题也可以试试旧的(作者说的)

你好!apktool这个软件没有root权限,是不能使用的!如未获取root权限,你可以获取的!手机获取root如下:

手机获取root方法:在电脑下载root大师,这个软件!手机连接电脑,电脑识别手机后,会出现一键root,按一键root,即可!

如果你的手机无法获取root,此时证明你的手机比较新,官方还没有你的手机型号的root,你可以等,等到可以root!

最好的解决方法,就是去你的手机型号或者apktool的贴吧看看如何使用此软件?看有关apktool的贴子或者自己发贴!

APKTool是GOOGLE提供的APK编译工具,需要JAVA运行环境,推荐使用JDK16或者JDK17。如果你想对APK文件进行修改,那么就不可避免的要使用到APKTool。论坛里有很多关于ROM美化的帖子都需要自己动手修改APK文件,比如修改framework-resapk、systemUIapk等等。

相信各位有不少人看了后都想亲自来修改一番,但是结果却是遇到了各式各样的错误却无法进行改正,甚至都不知道自己错在哪里。

一.APKTOOL使用环境配置

1安装JAVA并设置环境变量。

下载安装都很简单,关键是安装完后还需要亲自设置环境变量以方便其他程序能够条用JAVA。

以WIN7为例,在桌面上右键点击计算机——>属性——>高级系统设置——>环境变量——>在下边的系统变量里新建一个变量,变量名为JAVA_HOME,值为JAVA的安装路径,比如我的是H:\ProgramFiles\Java\jdk160_26

二.APKTool的安装

1其实这个谈不上安装,不过如果你愿意的话可以把下载到的APKTOOL中的三个文件(aaptexe、apktoolbat、apktooljar)解压缩到你的Windows安装目录下,以方便使用Dos命令

2可能有些人下载的APKTOOL里有个安装的bat文件,并且有另外两个方便使用的bat文件,在这里我不推荐大家使用这些bat文件,虽然使用起来很方便(其实我并不觉得方便),但是如果出现错误不方便查看。

三.APKTool的使用

反编译apk工具使用最广泛的就是apktool,这里先说一下整个流程用到的工具有:

1apktool,下载后拿到apktoolbat和apktooljar,然后把这两个工具放到C:\Windows底下。这个工具的作用主要是得到apk的资源文件和配置文件

2dex2jar 下载这个工具解压后放到任意盘都可以,后面主要用这个根据apk的classesdev文件生成供jd-gui工具解析的jar。

3jd-gui上一步提到其作用,和2一样,也是下载后放到任意盘即可,到时候只要运行jd-guiexe打开上一步生成的jar即可查看源码,下面对这个工具不再赘述

下面详细说一下前面两个工具类的详细用法:

先说apktool的用法:

1下载后拿到apktoolbat和apktooljar,然后把这两个工具放到C:\Windows底下

2cmd打开后默认是你的计算机,默认的不用改,直接输入apktool,如果出现如下图的效果,即表示准备已就绪

接下来,apktool d f:\app-debugapk f:\app像这样输入,这里的f:\app-debugapk是你的将要被反编译的apk的绝对路径,后面的f:\app是apk反编译后资源文件将要放入的文件夹,不需要事先新建好,在这里写好就行了,输入完回车,如果成功的话,即可在文件夹中看到资源文件,这里apktool的流程算完了。

接下来说一下第二个工具,dex2jar的使用流程:

1把你将要反编译的apk的扩展名改成压缩包的扩展名(rar\zip等),然后对其解压,找到classesdev文件,将之复制后贴到dex2jar底下,效果如如下:

接下来又要写命令了,同样cmd,然后转换到你的dex2jar目录,然后输入dex2jarbat classesdev,然后回车即可在dex2jar目录中看到一个classes_dex2jarjar。好了,完了,贴图

得到classes_dex2jarjar了,前面说了jd-gui的作用了,直接打开这个就行了,得到的就是源代码了

上图

  准备的工具除了jdk还有以下内容(在Google官网都有):

  把apktool-install-windows-21_r01-1zip,dex2jar-007-SNAPSHOTzip解压到一个盘的根目录下(这里我选择H盘),同时把AXMLPrinter2jar,apktooljar和你想解包的apk软件也放在同一个目录下,然后“运行--cmd”打开控制台,输入cd /d h : /  进入H盘的根目录然后输入以下内容(控制台不要关,为了后面方便):

  其中apktooljar是解包工具,d表示解包,memoapk是我要解包的软件,memo表示解包后输出到这个文件夹,等待片刻,就会生成memo文件夹,打开里面会有res文件夹下的所有文件和AndroidManifestxml,用记事本就可以查看了。

  以上是获得xml文件和,下面获得里面的java源代码:

  用winRar或者好压打开memoapk,截图如下:

  把里面的classesdex文件解压到H盘根目录下,然后重新打开控制台,输入dex2jarbat classesdex

  得到一个名为classesdexdex2jarjar的文件,此时用jd-guiexe打开classesdexdex2jarjar就可以看到所有源代码了!

  

  如果想把反编译好的文件变回apk文件,只要在控制台输入

  apktooljar b memo就可以了

  其中b就是重新封包的意思,memo是你刚才解包出来的文件夹,前提是确保所有文件都在memo文件夹里!!

方法一:

1、使用apktool的-d选项反编译apk文件

java -jar apktooljar d -d targetapk -o output

2、在AndroidManifest的application节点中添加 android:debuggable="true"

3、在入口点的类的onCreate中添加如下代码等待调试

invoke-static{}, Landroid/os/Debug;->waitForDebugger()V

4、回编译apk

java -jar apktooljar b -d output -o newTargetapk

5、对apk进行签名

java -jar signapkjar testkeyx509pem testkeypk8 newTargetapk signedapk

6、将签名后的apk安装到手机或者模拟器上

adb install signedapk

7、将1中的smali代码导入到Android Studio中

file→open→output目录→下断点

8、打开Monitor查找相应的进程

运行→monitor 或者Tools ->Android ->Android Device Monitor

9、配置远程调试选项

Run→Editor Configurations→Defaults→Remote,点击+号新增一个,Host为localhost,Port为8700

10、打开apk,点击绿色的小虫子就可以开始调试了

方法二:无需修改原apk文件

1、用 Android killer等工具反编译apk文件

2、将smali代码入到Android Studio中,安装smaliidea插件

File→Settings→Plugins→Install plugin from disk…→Restart

3、配置远程调试选项,打开monitor

4、使用adb以debug方式启动apk

adb shell am start -D -n package/activitiyname

5、下断点开始调试,在watch中添加寄存器http://www315nkcom/不清楚追问,希望能帮助到您

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

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

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

随机推荐

发表评论

登录后才能评论
保存