导航:首页 > 操作系统 > android反编译manifest

android反编译manifest

发布时间:2022-12-07 09:05:54

❶ 如何反编译android应用并重新打包

一.看android的源代码

1)将Apkd.apk 用zip解压后,出现了一个classes.dex文件
2014/02/19 19:42
.
2014/02/19 19:42
..
2014/02/19 15:35 1,656 AndroidManifest.xml
2014/02/19 15:35 687,024 classes.dex
2014/02/19 15:49
META-INF
2014/02/19 15:49
res
2014/02/19 15:35 2,200 resources.arsc
2)进入到dex2jar目录中,运行情况如下:
D:\developer\tools\test_apk\dex2jar-0.0.9.15>dex2jar.bat "..\Apkd(d2j)\classes.d
ex"
this cmd is deprecated, use the d2j-dex2jar if possible
dex2jar version: translator-0.0.9.15
dex2jar ..\Apkd(d2j)\classes.dex -> ..\Apkd(d2j)\classes_dex2jar.jar
Done.
在apk所在的目录会出现 classes_dex2jar.jar 文件。
3) 用JD-GUI对jar包进行查看,可以查看源文件

二.反编译apk

1.在下载APKTOOL中的三个文件(aapt.exe、apktool.bat、apktool.jar)解压缩到你的Windows安装目录下,以方便使用Dos命令.
2012/12/06 11:44 854,016 aapt.exe
2014/02/19 17:15 277,372 Apkd.apk//示例用apk文件
2012/12/23 23:39 92 apktool.bat
2013/02/03 02:37 2,655,843 apktool.jar
2.进入到apktool.bat所在的目录,运行:
apktool d Apkd.apk decode_dir
反编译后,decode_dir目录下的内容如下:
2014/02/19 17:16 716 AndroidManifest.xml
2014/02/19 17:16 237 apktool.yml
2014/02/19 17:18
build
2014/02/19 17:16
res
2014/02/19 17:16
smali
此时我可以查看原文件AndroidManifest.xml了,也是查看smali源文件(是用smali语言写的,可以对照java看)。

三.APKTOOL的使用

1).decode
该命令用于进行反编译apk文件,一般用法为
apktool d

代表了要反编译的apk文件的路径,最好写绝对路径,比如C:\MusicPlayer.apk
代表了反编译后的文件的存储位置,比如C:\MusicPlayer
如果你给定的已经存在,那么输入完该命令后会提示你,并且无法执行,需要你重新修改命令加入-f指令
apktool d –f

这样就会强行覆盖已经存在的文件
2).build
该命令用于编译修改好的文件,一般用法为
apktool b

这里的
就是刚才你反编译时输入的
(如C:\MusicPlayer),输入这行命令后,如果一切正常,你会发现C:\MusicPlayer内多了2个文件夹build和dist,其中分别存储着编译过程中逐个编译的文件以及最终打包的apk文件。
3).install-framework
该命令用于为APKTool安装特定的framework-res.apk文件,以方便进行反编译一些与ROM相互依赖的APK文件。具体情况请看常见问题

四.smali与java源码对照,并做出相应的修改

java源代码:

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.widget.*;

public class MainActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
TextView a = (TextView)this.findViewById(R.id.test) ;
a.setText("raoliang");
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}

}

对应的smali源代码:
.class public Lali/text/apkd/MainActivity;
.super Landroid/app/Activity;
.source "MainActivity.java"

# direct methods
.method public constructor ()V
.locals 0

.prologue
.line 8
invoke-direct {p0}, Landroid/app/Activity;->()V

return-void
.end method

# virtual methods
.method protected onCreate(Landroid/os/Bundle;)V
.locals 2
.parameter "savedInstanceState"

.prologue
.line 12
invoke-super {p0, p1}, Landroid/app/Activity;->onCreate(Landroid/os/Bundle;)V

.line 13
const/high16 v1, 0x7f03

invoke-virtual {p0, v1}, Lali/text/apkd/MainActivity;->setContentView(I)V

.line 14
const/high16 v1, 0x7f08

invoke-virtual {p0, v1}, Lali/text/apkd/MainActivity;->findViewById(I)Landroid/view/View;

move-result-object v0

check-cast v0, Landroid/widget/TextView;

.line 15
.local v0, a:Landroid/widget/TextView;
const-string v1, "raoliang"

invoke-virtual {v0, v1}, Landroid/widget/TextView;->setText(Ljava/lang/CharSequence;)V

.line 16
return-void
.end method

.method public onCreateOptionsMenu(Landroid/view/Menu;)Z
.locals 2
.parameter "menu"

.prologue
.line 21
invoke-virtual {p0}, Lali/text/apkd/MainActivity;->getMenuInflater()Landroid/view/MenuInflater;

move-result-object v0

const/high16 v1, 0x7f07

invoke-virtual {v0, v1, p1}, Landroid/view/MenuInflater;->inflate(ILandroid/view/Menu;)V

.line 22
const/4 v0, 0x1

return v0
.end method

通过对比可以看到,常量是没有必变的,可以根据的smali的语法,进行相应的修改

五.3、打包、签名和安装修改后的apk

修改完了,就可以打包回apk了。执行以下命令:
apktool b decode_dir
在mygame目录下的dist在会看到打包好的apk。
当然,现在一般是无法安装的,因为apk还没有签名。下面就来签名。签名需要keystore文件,我已经有专用的keystore了,如果还没有,请参阅这里进行生成。
执行以下命令为重新编译的my_game.apk签名:
jarsigner -verbose -keystore demo.keystore Apkd.apk demo.keystore
最后,在安装到手机前,需要把手机中的已有版本先卸载,因为如果签名不同,是不能覆盖安装的,会提示“应用程序未安装”错误。
完整的运行情况如下:

D:\developer\tools\test_apk\new\decode\dist>keytool -genkey -alias demo.keystore -keyalg RSA -validity 40000 -keystore demo.keystore
输入keystore密码:
再次输入新密码:
您的名字与姓氏是什么?
[Unknown]: rao
您的组织单位名称是什么?
[Unknown]: rao
您的组织名称是什么?
[Unknown]:
您所在的城市或区域名称是什么?
[Unknown]:
您所在的州或省份名称是什么?
[Unknown]:
该单位的两字母国家代码是什么
[Unknown]:
CN=rao, OU=rao, O=Unknown, L=Unknown, ST=Unknown, C=Unknown 正确吗?
[否]: y

输入的主密码
(如果和 keystore 密码相同,按回车):

D:\developer\tools\test_apk\new\decode\dist>jarsigner -verbose -keystore demo.keystore Apkd.apk demo.keystore
输入密钥库的口令短语:
正在添加: META-INF/MANIFEST.MF
正在添加: META-INF/DEMO_KEY.SF
正在添加: META-INF/DEMO_KEY.RSA
正在签名: res/drawable-hdpi/ic_launcher.png
正在签名: res/drawable-mdpi/ic_launcher.png
正在签名: res/drawable-xhdpi/ic_launcher.png
正在签名: res/drawable-xxhdpi/ic_launcher.png
正在签名: res/layout/activity_main.xml
正在签名: res/menu/main.xml
正在签名: AndroidManifest.xml
正在签名: classes.dex
正在签名: resources.arsc

D:\developer\tools\test_apk\new\decode\dist>
到此为止,修改后的apk可以正常的安装了,不过,在安装之前,必须要先卸载以前的apk,不能直接替换(因为签名不一样)

❷ 加固的apk,如何反编译AndroidManifest.xml

工具:
链接: http://pan..com/s/1i4QpEAh 密码:l6oq

首先配置好Java的环境,在将apk重命名为*.zip,然后解压zip文件,就可获得AndroidManifest.xml文件,此时该文件无法打开,接下来就要用上面的AXMLPrinter2.jar工具。
命令为:java -jar AXMLPrinter2.jar AndroidManifest.xml > a.xml

❸ Android的AndroidManifest.xml中报错!如何解决

很明显,这是反编译的AndroidManifest.xml文件,因为没有项目编译环境也不对,找不到res下的资源ID,gen目录下的R文件也没有生成,所以报错。

Android每个应用程序在它的根目录中都必须要有一个AndroidManifest.xml文件。这个清单把应用程序的基本信息提交给Android系统,在应用程序的代码能够运行之前,这个信息系统必须建立。以下是清单文件要做的一些事情:
1. 用Java包给应用程序命名。这个包名是应用程序的唯一标识;
2. 描述应用程序的组件---组成应用程序的Activity、Service、Broadcast Receiver以及Content Provider。它要用每个组件的实现类来命名,并向外发布对应组件功能(例如,组件所能处理的Intent消息)。这些声明会让Android系统了解应用程序中组件,以及这些组件被加载的条件。
3. 判断哪些进程是主应用程序组件。
4. 声明应用程序所必须的权限,以便能够访问被保护的API,以及能够跟其他应用程序进行交互。
5. 为了跟应用程序组件进行交互,还声明了其他要求有的权限。
6. 列出了能够提供应用程序运行时的分析和其他信息的Instrumentation类。只有在开发和测试应用程序时才在清单文件中声明这些类,在应用程序被发布之前,要删除这些类。
7. 声明应用程序所要求的最小的Android API级别。
8. 列出应用程序必须链接的外部库。

❹ android反编译问题,AndroidManifest.xml修改。

朋友,如果你说的解压apk是直接用winrar之类个工具解压的话,那AndroidManifest.xml打开肯定就是乱码,你只有用APKtool之类的工具反编译apk后才能打开xml的文件。如果你使用APKtool之类的工具的话,可以网络搜Apk反编译教程。有很多的!我现在无法给你复制网址。

❺ 反编译了APK后修改了AndroidManifest.xml就无法回编译

系统apk重新编译后不需要签名,直接用rar打开打包生成的apk里面的androidmanifest.xml文件替换原apk里的androidmanifest.xml文件即可

❻ 怎么反编译apk的androidmanifest.xml

朋友,如果你说的解压apk是直接用winrar之类个工具解压的话,那AndroidManifest.xml打开肯定就是乱码,你只有用APKtool之类的工具反编译apk后才能打开xml的文件。如果你使用APKtool之类的工具的话,可以网络搜Apk反编译教程。有很多的!我现在无法给你复制网址。

❼ 怎么查看反编译出来的androidmanifest文件

apktool反编译xml等资源文件:

a. 安装java环境,下载文件件附件:apktool-1.3.1.tar.bz2,apktool-install-windows-2.2_r01-2.tar.bz2;把这两个文件解压到同一目录下,该目录cmd中运行apktool获得帮助信息;

b. apktool d XXX.apk ABC : 反编译XXX.apk到文件夹ABC

c. apktool b ABC :从反编译后的文件夹ABC重建APK,输出到ABC\dist\out.apk(该apk没有签名)

d. 这样我们就可以把远apk文件通过反编译后,然后对里面资源文件作修改,然后再重建为apk即可;

❽ 反编译Android APK的具体步骤是怎样的

1、配置好JAVA环境变量,下载:apktool 解压的文件放在C盘根目录的apktool文件夹里(apktool文件夹自己创立)
2打开命令提示符,(开始-运行-输入cmd)
3输入:cd \apktool 系统指令到了apktool文件夹(这里就是为什么要把解压的apktool解压的文件放到apktool文件夹的原因,当然你也可以自命名文件夹的名称,那么比如arc,那么指令就变成了:cd \arc 前提是你必须把apktool解压的文件放到这个文件夹里面)
4使用RE管理器把系统里面的framework-res.apk 与 SystemUI.apk 提取出来放在apktool文件夹里面

5 如果只是想反编译framework-res.apk

输入apktool if framework-res.apk(框架的建立)
6开始最重要的反编译,输入指令,apktool d framework-res.apk

(反编辑的APK一定要用没换过图片的,否则回编辑失败)
7最后反编译完成

修改代码完成后,输入代码:apktool d framework-res 即可完成回编译
8回编译后的新的 apk在framework/dis 文件夹里面
9如果反编译的是系统文件,比如,SystemUI.apk 那么必须进行挂载框架,反编译时,必须敲入一下命令:(然后再重复7-9步骤)
apktool if framework-res.apk
apktool if SystemUI.apk

10对于三星手机(比如9100、9108/9100G),如果反编译SystemUI.apk要敲入一下命令进行框架挂载apktool if framework-res.apk
apktool if twframework-res.apk
apktool if SystemUI.apk
11回编译的命令是 apktool b XXX (没有后面的apk后缀)反编译的命令是 apktool d xxx (有后面的apk)

❾ [求助]AndroidManifest.xml反编译

iphone主题.apk 目的:去掉桌面图标求大侠帮助

阅读全文

与android反编译manifest相关的资料

热点内容
dvd光盘存储汉子算法 浏览:757
苹果邮件无法连接服务器地址 浏览:962
phpffmpeg转码 浏览:671
长沙好玩的解压项目 浏览:144
专属学情分析报告是什么app 浏览:564
php工程部署 浏览:833
android全屏透明 浏览:736
阿里云服务器已开通怎么办 浏览:803
光遇为什么登录时服务器已满 浏览:302
PDF分析 浏览:484
h3c光纤全工半全工设置命令 浏览:143
公司法pdf下载 浏览:381
linuxmarkdown 浏览:350
华为手机怎么多选文件夹 浏览:683
如何取消命令方块指令 浏览:349
风翼app为什么进不去了 浏览:778
im4java压缩图片 浏览:362
数据查询网站源码 浏览:150
伊克塞尔文档怎么进行加密 浏览:892
app转账是什么 浏览:163